diff --git a/README.md b/README.md index 15f37cffbcc..7e6538219bf 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ all age groups on automated machining. Any machinery capable of harming persons must have provisions for completely removing power from all -motors, etc, before persons enter any danger area. +motors, etc., before persons enter any danger area. All machinery must be designed to comply with local and national safety codes, and the authors of this diff --git a/debian/configure b/debian/configure index 81ac9125348..2d0ceffd382 100755 --- a/debian/configure +++ b/debian/configure @@ -35,7 +35,7 @@ fi EXTRA_BUILD= PYTHON_VERSION_NEXT=$(python3 -c 'import sys; print (sys.version[:2] + str(1+int(sys.version[2])))') -LIBREADLINE_DEV="libreadline-gplv2-dev | libreadline-dev" +LIBREADLINE_DEV="libeditreadline-dev | libreadline-gplv2-dev | libreadline-dev" ENABLE_BUILD_DOCUMENTATION=--enable-build-documentation=pdf diff --git a/docs/src/config/ini-config.adoc b/docs/src/config/ini-config.adoc index d142a8bafb1..e12a4501196 100644 --- a/docs/src/config/ini-config.adoc +++ b/docs/src/config/ini-config.adoc @@ -59,7 +59,7 @@ CORRECT = value === Sections(((INI File,Components,Sections))) Related parts of an INI file are separated into sections. -A section name is enclosed in brackets like this `[THIS_SECTION]`. +A section name is enclosed in brackets like this: `[THIS_SECTION]`. The order of sections is unimportant. Sections begin at the section name and end at the next section name. @@ -229,10 +229,10 @@ GMOCCAPY can be used both ways and offers also many connections for hardware con Descriptions of the interfaces are in the Interfaces section of the User Manual. * `DISPLAY = axis` - The file name of the executable providing the user interface to use. - Prominent valid options are (all in lower case): 'axis', 'touchy', 'gmoccapy', 'gscreen', 'tklinuxcnc', 'qtvcp', 'qtvcp-qtdragon' or 'qtvcp-qtplasmac'. -* `POSITION_OFFSET = RELATIVE` - The coordinate system (RELATIVE or MACHINE) to show on the DRO when the user interface starts. + Prominent valid options are (all in lower case): `axis`, `touchy`, `gmoccapy`, `gscreen`, `tklinuxcnc`, `qtvcp`, `qtvcp-qtdragon` or `qtvcp-qtplasmac`. +* `POSITION_OFFSET = RELATIVE` - The coordinate system (`RELATIVE` or `MACHINE`) to show on the DRO when the user interface starts. The RELATIVE coordinate system reflects the G92 and G5__x__ coordinate offsets currently in effect. -* `POSITION_FEEDBACK = COMMANDED` - The coordinate value (COMMANDED or ACTUAL) to show on the DRO when the user interface starts. +* `POSITION_FEEDBACK = COMMANDED` - The coordinate value (`COMMANDED` or `ACTUAL`) to show on the DRO when the user interface starts. In AXIS this can be changed from the View menu. The COMMANDED position is the position requested by LinuxCNC. The ACTUAL position is the feedback position of the motors if they have feedback like most servo systems. @@ -263,7 +263,7 @@ Descriptions of the interfaces are in the Interfaces section of the User Manual. * `DEFAULT_SPINDLE_0_SPEED = 100` - The default spindle RPM when the spindle is started in manual mode. On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP-based user interfaces. - _deprecated_ - use the [SPINDLE_n] section instead. -* `SPINDLE_INCREMENT = 200` - The increment used when clicking increase/decrease buttons Only used by the QtVCP based user interfaces. +* `SPINDLE_INCREMENT = 200` - The increment used when clicking increase/decrease buttons. Only used by the QtVCP based user interfaces. - _deprecated_ - use the [SPINDLE_n] section instead. * `MIN_SPINDLE_0_SPEED = 1000` - The minimum RPM that can be manually selected. On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP-based user interfaces. @@ -317,17 +317,17 @@ See <> document for GMOCCAPY details. GMOCCAPY will not use this setting, as it offers a corresponding entry on its settings page. * `EDITOR = gedit` - The editor to use when selecting File > Edit to edit the G-code from the AXIS menu. This must be configured for this menu item to work. - Another valid entry is gnome-terminal -e vim. + Another valid entry is `gnome-terminal -e vim`. This entry does not apply to GMOCCAPY, as GMOCCAPY has an integrated editor. * `TOOL_EDITOR = tooledit` - The editor to use when editing the tool table (for example by selecting "File > Edit tool table..." in AXIS). - Other valid entries are "gedit", "gnome-terminal -e vim", and "gvim". + Other valid entries are `gedit`, `gnome-terminal -e vim`, and `gvim`. This entry does not apply to GMOCCAPY, as GMOCCAPY has an integrated editor. * `PYVCP = /filename.xml` - The PyVCP panel description file. See the <>for more information. * `PYVCP_POSITION = BOTTOM` - The placement of the PyVCP panel in the AXIS user interface. If this variable is omitted the panel will default to the right side. - The only valid alternative is BOTTOM. See the <> for more information. + The only valid alternative is `BOTTOM`. See the <> for more information. * `LATHE = 1` - Any non-empty value (including "0") causes axis to use "lathe mode" with a top view and with Radius and Diameter on the DRO. * `BACK_TOOL_LATHE = 1` - Any non-empty value (including "0") causes axis to use "back tool lathe mode" with inverted X axis. * `FOAM = 1` - Any non-empty value (including "0") causes axis to change the display for foam-cutter mode. @@ -882,7 +882,7 @@ LinuxCNC will not know your joint travel limits when using `NO_FORCE_HOMING = 1` [[sub:ini:sec:axis-letter]] === [AXIS_] Section(((INI File,Sections,[AXIS_] Sections))) -The specifies one of: X Y Z A B C U V W +The __ specifies one of: X Y Z A B C U V W * `MAX_VELOCITY = 1.2` - Maximum velocity for this axis in <> per second. * `MAX_ACCELERATION = 20.0` - Maximum acceleration for this axis in machine units per second squared. @@ -896,7 +896,7 @@ The specifies one of: X Y Z A B C U V W For a rotary axis (A,B,C typ) with unlimited rotation having no `MAX_LIMIT` for that axis in the `[AXIS_``]` section a value of 1e99 is used. * `WRAPPED_ROTARY = 1` - When this is set to 1 for an ANGULAR axis the axis will move 0-359.999 degrees. Positive Numbers will move the axis in a positive direction and negative numbers will move the axis in the negative direction. -* `LOCKING_INDEXER_JOINT = 4` - This value selects a joint to use for a locking indexer for the specified axis . +* `LOCKING_INDEXER_JOINT = 4` - This value selects a joint to use for a locking indexer for the specified axis __. In this example, the joint is 4 which would correspond to the B axis for a XYZAB system with trivkins (identity) kinematics. When set, a G0 move for this axis will initiate an unlock with the `joint.4.unlock pin` then wait for the `joint.4.is-unlocked` pin then move the joint at the rapid rate for that joint. After the move the `joint.4.unlock` will be false and motion will wait for `joint.4.is-unlocked` to go false. @@ -950,12 +950,12 @@ For example, using trivkins with `coordinates=XZ`, the joint-axes relationships * JOINT_0 = X * JOINT_1 = Z -For more information on kinematics modules see the manpage: `$ man kins` +For more information on kinematics modules see the manpage 'kins' (on the UNIX terminal type `man kins`). * `TYPE = LINEAR` - The type of joint, either `LINEAR` or `ANGULAR`. * `UNITS = INCH` - (((UNITS))) - If specified, this setting overrides the related `[TRAJ] UNITS` setting. - (e.g., `[TRAJ]LINEAR_UNITS` if the `TYPE` of this joint is `LINEAR`, `[TRAJ]ANGULAR_UNITS` if the `TYPE` of this joint is `ANGULAR`) + If specified, this setting overrides the related `[TRAJ] UNITS` setting, + e.g., `[TRAJ]LINEAR_UNITS` if the `TYPE` of this joint is `LINEAR`, `[TRAJ]ANGULAR_UNITS` if the `TYPE` of this joint is `ANGULAR`. * `MAX_VELOCITY = 1.2` - Maximum velocity for this joint in <> per second. * `MAX_ACCELERATION = 20.0` - Maximum acceleration for this joint in machine units per second squared. * `BACKLASH = 0.0000` - (((Backlash))) Backlash in machine units. @@ -1067,15 +1067,15 @@ These parameters are Homing related, for a better explanation read the <_ - - If the home input is shared by more than one joint set to 1 to prevent homing from starting if the one of the shared switches is already closed. - Set to 0 to permit homing if a switch is closed. + If the home input is shared by more than one joint set __ to 1 to prevent homing from starting if the one of the shared switches is already closed. + Set __ to 0 to permit homing if a switch is closed. * `HOME_ABSOLUTE_ENCODER = 0` | `1` | `2` - Used to indicate the joint uses an absolute encoder. At a request for homing, the current joint value is set to the `HOME_OFFSET` value. If the `HOME_ABSOLUTE_ENCODER` setting is 1, the machine makes the usual final move to the `HOME` value. @@ -1332,7 +1332,7 @@ The value of _num_spindles_ is set by `[TRAJ]SPINDLES=` . There is usually no need to change this number. * `TOOL_TABLE = tool.tbl` - The file which contains tool information, described in the User Manual. * `DB_PROGRAM = db_program` - Path to an executable program that manages tool data. - (When a DB_PROGRAM is specified, a TOOL_TABLE entry is ignored) + When a DB_PROGRAM is specified, a TOOL_TABLE entry is ignored. * `TOOL_CHANGE_POSITION = 0 0 2` - Specifies the XYZ location to move to when performing a tool change if three digits are used. Specifies the XYZABC location when 6 digits are used. diff --git a/docs/src/config/stepper.adoc b/docs/src/config/stepper.adoc index 0e2527de617..30ff3b56bc6 100644 --- a/docs/src/config/stepper.adoc +++ b/docs/src/config/stepper.adoc @@ -174,7 +174,7 @@ standard_pinout.hal gets executed/interpreted: * The Parport driver gets loaded (see the <> for details). * The read & write functions of the parport driver get assigned to the base thread footnote:[the fastest thread in the LinuxCNC setup, usually ther - code gets executed every few tens of microseconds]. + code gets executed every few tens of microseconds.]. * The step & direction signals for axes X, Y, Z get linked to pins on the parport. * Further I/O signals get connected (estop loopback, toolchanger loopback). diff --git a/docs/src/gui/qtdragon.adoc b/docs/src/gui/qtdragon.adoc index f0f397d2cff..89f23d2e7c3 100644 --- a/docs/src/gui/qtdragon.adoc +++ b/docs/src/gui/qtdragon.adoc @@ -448,7 +448,7 @@ qtdragon.spindle-volts ---- This bit pin is an output to the spindle control to pause it. + -You would connect it to spindle.0.inhibit. +You would connect it to `spindle.0.inhibit`. [source,{hal}] ---- diff --git a/docs/src/gui/qtvcp-widgets.adoc b/docs/src/gui/qtvcp-widgets.adoc index b673fbee6cd..d54ff21a14a 100644 --- a/docs/src/gui/qtvcp-widgets.adoc +++ b/docs/src/gui/qtvcp-widgets.adoc @@ -2919,20 +2919,20 @@ NGCGUI_SUBFILE = qpocket.ngc ==== Buttons * 'NEW TAB' -adds a new blank tab to ngcgui -* 'SELECT PREAMBLE' -select a file that add preamble gcode +* 'SELECT PREAMBLE' -select a file that add preamble G-code * 'SELECT SUBFILE' -select a ngcgui subroutine file -* 'SELECT POST' -select a file that add post gcode +* 'SELECT POST' -select a file that add post G-code * 'REREAD FILE' -reload the subroutine file * 'CREATE FEATURE' -add feature to the list * 'RESTART FEATURE' - remove all features from the list -* 'FINALIZE GCODE' -create the full gcode and send it to linuxcnc/a file +* 'FINALIZE GCODE' -create the full G-code and send it to LinuxCNC/a file ==== Adding Custom Subroutines You can create your own subroutines for use with ngcgui. + they must follow these rules: * For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the same. -* The subroutine must be in a folder within linuxcnc's INI designated search path +* The subroutine must be in a folder within LinuxCNC's INI designated search path. * On the first line there may be a comment of type info: * The subroutine must be surrounded by the sub and endsub tags. * The variables used must be numbered variables and must not skip number. diff --git a/docs/src/gui/qtvcp.adoc b/docs/src/gui/qtvcp.adoc index fede824ac3e..7ca9bd943fb 100644 --- a/docs/src/gui/qtvcp.adoc +++ b/docs/src/gui/qtvcp.adoc @@ -17,7 +17,7 @@ It displays a _`.ui` file built with Qt Designer_ screen editor and combines this with _Python programming_ to create a GUI screen for running a CNC machine. QtVCP is completely _customizable_: you can add different buttons and status LEDs etc., -or add python code for even finer grain customization. +or add Python code for even finer grain customization. == Showcase @@ -201,9 +201,9 @@ QtVCP can also be customized with _Qt stylesheets (QSS)_ using CSS. === Local Files -If present, local UI/QSS/python files in the configuration folder will be loaded instead of the stock UI files. +If present, local UI/QSS/Python files in the configuration folder will be loaded instead of the stock UI files. -Local UI/QSS/python files allow you to use your customized designs rather than the default screens. +Local UI/QSS/Python files allow you to use your customized designs rather than the default screens. QtVCP will look for a folder named (in the launched configuration folder that holds the INI file). diff --git a/docs/src/hal/basic-hal.adoc b/docs/src/hal/basic-hal.adoc index 46b02984d43..b63f121c42b 100644 --- a/docs/src/hal/basic-hal.adoc +++ b/docs/src/hal/basic-hal.adoc @@ -139,7 +139,7 @@ net signal-name pin-name net home-x joint.0.home-sw-in <= parport.0.pin-11-in ---- -In the above example 'home-x' is the signal name, 'joint.0.home-sw-in' is a 'Direction IN' pin, '<=' is the optional direction arrow, and 'parport.0.pin-11-in' is a 'Direction OUT' pin. +In the above example `home-x` is the signal name, `joint.0.home-sw-in` is a 'Direction IN' pin, `<=` is the optional direction arrow, and `parport.0.pin-11-in` is a 'Direction OUT' pin. This may seem confusing but the in and out labels for a parallel port pin indicates the physical way the pin works not how it is handled in HAL. A pin can be connected to a signal if it obeys the following rules: @@ -234,7 +234,7 @@ These commands are included so older configurations will still work. ==== linksp (deprecated) -The command 'linksp' creates a 'connection' between a signal and one pin. +The command `linksp` creates a 'connection' between a signal and one pin. .linksp Syntax and Example [source,{hal}] @@ -243,12 +243,12 @@ linksp linksp X-step parport.0.pin-02-out ---- -*The 'linksp' command has been superseded by the 'net' command.* +*The `linksp` command has been superseded by the `net` command.* ==== linkps (deprecated) The command `linkps` creates a 'connection' between one pin and one signal. -It is the same as linksp but the arguments are reversed. +It is the same as `linksp` but the arguments are reversed. .linkps Syntax and Example [source,{hal}] @@ -520,7 +520,7 @@ Which updates the `weighted_sum` component. In the following example, a copy of the AXIS HAL configuration window, bits '0' and '2' are TRUE, they have no offset. The weight ('weight') of bit 0 is 1, that of bit 2 is 4, so the sum is 5. -.`weighted_sum` Example component Pin for weighted sum.s +.`weighted_sum` Example component Pin for weighted sums. [width="90%",options="header"] |=== |Owner|Type |Dir |Value |Name diff --git a/docs/src/hal/haltcl.adoc b/docs/src/hal/haltcl.adoc index b4052d6832b..9208f5b7d02 100644 --- a/docs/src/hal/haltcl.adoc +++ b/docs/src/hal/haltcl.adoc @@ -108,8 +108,8 @@ Because INI files can repeat the same ITEM in the same SECTION multiple times, ` When there is just one value and it is a simple value (all values that are just letters and numbers without whitespace are in this group), then it is possible to treat `$::SECTION(ITEM)` as though it is not a list. -When the value could contain special characters--quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl. -It is necessary to distinguish between the list of values and the initial (and possibly only) value in the list. +When the value could contain special characters (quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl) +then it is necessary to distinguish between the list of values and the initial (and possibly only) value in the list. In Tcl, this is written `[lindex $::SECTION(ITEM) 0]`. @@ -197,7 +197,7 @@ MAXACCEL = 10.0 STEPGEN_MAXACCEL = 10.5 ---- -With `haltcl`, you can use Tcl commands to do the computation and eliminate the STEPGEN_MAXACCEL INI file item altogether: +With `haltcl`, you can use Tcl commands to do the computation and eliminate the `STEPGEN_MAXACCEL` INI file item altogether: [source,tcl] ---- diff --git a/docs/src/hal/parallel-port.adoc b/docs/src/hal/parallel-port.adoc index 474c0ebc627..25219ef3305 100644 --- a/docs/src/hal/parallel-port.adoc +++ b/docs/src/hal/parallel-port.adoc @@ -80,6 +80,7 @@ The config string represents the hexadecimal address of the port, optionally fol The directions are _in_, _out_, or _x_, and determine the direction of the physical pins 2 to 9 of the D-Sub 25 connector. If the direction is not specified, the data group will by default be configured as outputs. For example: +.Command to load the real-time module 'hal_partport' with the additional __ to specify the port at which the parallel-port card is expected. [source,{hal}] ---- loadrt hal_parport cfg="0x278 0x378 in 0x20A0 out" @@ -189,48 +190,48 @@ loadrt hal_parport cfg="0x378 0xc000" Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their settings depending on which slot you put them into, -so if you like to \'get under the hood' and re-arrange things, be sure to check these values before you start LinuxCNC. +so if you like to 'get under the hood' and re-arrange things, be sure to check these values before you start LinuxCNC. == Pins -* 'parport.

.pin--out' (bit) Drives a physical output pin. -* 'parport.

.pin--in' (bit) Tracks a physical input pin. -* 'parport.

.pin--in-not' (bit) Tracks a physical input pin, but inverted. +* `parport.

.pin-`____`-out` (bit) Drives a physical output pin. +* `parport.

.pin-`____`-in` (bit) Tracks a physical input pin. +* `parport.

.pin-`____`-in-not` (bit) Tracks a physical input pin, but inverted. -For each pin, '

' is the port number, and '' is the physical pin number in the 25 pin D-shell connector. +For each pin, _

_ is the port number, and '' is the physical pin number in the 25 pin D-shell connector. -For each physical output pin, the driver creates a single HAL pin, for example: 'parport.0.pin-14-out'. +For each physical output pin, the driver creates a single HAL pin, for example: `parport.0.pin-14-out`. -For each physical input pin, the driver creates two HAL pins, for example: 'parport.0.pin-12-in' and 'parport.0.pin-12-in-not'. +For each physical input pin, the driver creates two HAL pins, for example: `parport.0.pin-12-in` and `parport.0.pin-12-in-not`. -The '-in' HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low. -The '-in-not' HAL pin is inverted and is FALSE if the physical pin is high. +The `-in` HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low. +The `-in-not` HAL pin is inverted and is FALSE if the physical pin is high. == Parameters -* 'parport.

.pin--out-invert' (bit) Inverts an output pin. -* 'parport.

.pin--out-reset' (bit) (only for 'out' pins) TRUE if this pin should be reset when the '-reset' function is executed. -* parport.

.reset-time' (U32) The time (in nanoseconds) between a pin is set by 'write' and reset by the 'reset' function if it is enabled. +* `parport.`__

__`.pin-`____`-out-invert` (bit) Inverts an output pin. +* `parport.`__

__`.pin-`____`-out-reset` (bit) (only for `-out` pins) TRUE if this pin should be reset when the `-reset` function is executed. +* `parport.`__

__`.reset-time` (U32) The time (in nanoseconds) between a pin is set by `-write` and reset by the `-reset` function if it is enabled. -The '-invert' parameter determines whether an output pin is active high or active low. -If '-invert' is FALSE, setting the HAL '-out' pin TRUE drives the physical pin high, and FALSE drives it low. -If '-invert' is TRUE, then setting the HAL '-out' pin TRUE will drive the physical pin low. +The `-invert` parameter determines whether an output pin is active high or active low. +If `-invert` is FALSE, setting the HAL `-out` pin TRUE drives the physical pin high, and FALSE drives it low. +If `-invert` is TRUE, then setting the HAL `-out` pin TRUE will drive the physical pin low. [[sub:parport-functions]] == Functions -* 'parport.

.read' (funct) Reads physical input pins of port '' and updates HAL '-in' and '-in-not' pins. -* 'parport.read-all' (funct) Reads physical input pins of all ports and updates HAL '-in' and '-in-not' pins. -* 'parport.

.write' (funct) Reads HAL '-out' pins of port '

' and updates that port's physical output pins. -* 'parport.write-all' (funct) Reads HAL '-out' pins of all ports and updates all physical output pins. -* 'parport.

.reset' (funct) Waits until 'reset-time' has elapsed since the associated 'write', then resets pins to values indicated by '-out-invert' and '-out-invert' settings. - 'reset' must be later in the same thread as 'write. - 'If '-reset' is TRUE, then the 'reset' function will set the pin to the value of '-out-invert'. +* `parport.`__

__`.read' (funct) Reads physical input pins of port number _

_ and updates HAL `-in` and `-in-not` pins. +* `parport.read-all` (funct) Reads physical input pins of all ports and updates HAL `-in` and `-in-not` pins. +* `parport.`__

__`.write` (funct) Reads HAL `-out` pins of port number _

_ and updates that port's physical output pins. +* `parport.write-all` (funct) Reads HAL `-out` pins of all ports and updates all physical output pins. +* `parport.`__

__`.reset` (funct) Waits until `reset-time` has elapsed since the associated `write`, then resets pins to values indicated by `-out-invert` and `-out-invert` settings. + `reset` must be later in the same thread as `write`. + If `-reset` is TRUE, then the `reset` function will set the pin to the value of `-out-invert`. This can be used in conjunction with stepgen's 'doublefreq' to produce one step per period. The <> for that pin must be set to 0 to enable doublefreq. The individual functions are provided for situations where one port needs to be updated in a very fast thread, but other ports can be updated in a slower thread to save CPU time. -It is probably not a good idea to use both an '-all' function and an individual function at the same time. +It is probably not a good idea to use both an `-all` function and an individual function at the same time. == Common problems @@ -249,7 +250,7 @@ If the module loads but does not appear to function, then the port address is in == Using DoubleStep To setup DoubleStep on the parallel port you must add the function parport.n.reset after parport.n.write and configure stepspace to 0 and the reset time wanted. -So that step can be asserted on every period in HAL and then toggled off by parport after being asserted for time specified by parport.n.reset-time. +So that step can be asserted on every period in HAL and then toggled off by parport after being asserted for time specified by `parport.`__n__`.reset-time`. For example: diff --git a/docs/src/hal/rtcomps.adoc b/docs/src/hal/rtcomps.adoc index 989915ff0e8..861c3c805d9 100644 --- a/docs/src/hal/rtcomps.adoc +++ b/docs/src/hal/rtcomps.adoc @@ -52,7 +52,7 @@ The last one uses step type '2' (quadrature) and runs in velocity mode. The default value for '' is '0,0,0' which will install three type '0' (step/dir) generators. The maximum number of step generators is 8 (as defined by MAX_CHAN in stepgen.c). Each generator is independent, but all are updated by the same function(s) at the same time. -In the following descriptions, '__' is the number of a specific generator. The first generator is number 0. +In the following descriptions, __ is the number of a specific generator. The first generator is number 0. .Unloading `stepgen` component ---- @@ -64,37 +64,37 @@ halcmd: unloadrt stepgen On the step type and control type selected. -* '(float) stepgen.__.position-cmd' - Desired motor position, in position units (position mode only). -* '(float) stepgen.__.velocity-cmd' - Desired motor velocity, in position units per second (velocity mode only). -* '(s32) stepgen.__.counts' - Feedback position in counts, updated by 'capture_position()'. -* '(float) stepgen.__.position-fb' - Feedback position in position units, updated by 'capture_position()'. -* '(bit) stepgen.__.enable' - Enables output steps - when false, no steps are generated. -* '(bit) stepgen.__.step' - Step pulse output (step type 0 only). -* '(bit) stepgen.__.dir' - Direction output (step type 0 only). -* '(bit) stepgen.__.up' - UP pseudo-PWM output (step type 1 only). -* '(bit) stepgen.__.down' - DOWN pseudo-PWM output (step type 1 only). -* '(bit) stepgen.__.phase-A' - Phase A output (step types 2-14 only). -* '(bit) stepgen.__.phase-B' - Phase B output (step types 2-14 only). -* '(bit) stepgen.__.phase-C' - Phase C output (step types 3-14 only). -* '(bit) stepgen.__.phase-D' - Phase D output (step types 5-14 only). -* '(bit) stepgen.__.phase-E' - Phase E output (step types 11-14 only). +* (float) `stepgen.`____`.position-cmd` - Desired motor position, in position units (position mode only). +* (float) `stepgen.`____`.velocity-cmd` - Desired motor velocity, in position units per second (velocity mode only). +* s32) `stepgen.`____`.counts` - Feedback position in counts, updated by 'capture_position()'. +* (float) `stepgen.`____`.position-fb` - Feedback position in position units, updated by 'capture_position()'. +* (bit) `stepgen.`____`.enable` - Enables output steps - when false, no steps are generated. +* (bit) `stepgen.`____`.step` - Step pulse output (step type 0 only). +* (bit) `stepgen.`____`.dir` - Direction output (step type 0 only). +* (bit) `stepgen.`____`.up` - UP pseudo-PWM output (step type 1 only). +* (bit) `stepgen.`____`.down` - DOWN pseudo-PWM output (step type 1 only). +* (bit) `stepgen.`____`.phase-A` - Phase A output (step types 2-14 only). +* (bit) `stepgen.`____`.phase-B` - Phase B output (step types 2-14 only). +* (bit) `stepgen.`____`.phase-C` - Phase C output (step types 3-14 only). +* (bit) `stepgen.`____`.phase-D` - Phase D output (step types 5-14 only). +* (bit) `stepgen.`____`.phase-E` - Phase E output (step types 11-14 only). [[sec:stepgen-parameters]] === Parameters(((HAL stepgen parameters))) -* '(float) stepgen.__.position-scale' - Steps per position unit. +* (float) `stepgen.`____`.position-scale` - Steps per position unit. This parameter is used for both output and feedback. -* '(float) stepgen.__.maxvel' - Maximum velocity, in position units per second. If 0.0, has no effect. -* '(float) stepgen.__.maxaccel' - Maximum accel/decel rate, in positions units per second squared. +* (float) `stepgen.`____`.maxvel` - Maximum velocity, in position units per second. If 0.0, has no effect. +* (float) `stepgen.`____`.maxaccel` - Maximum accel/decel rate, in positions units per second squared. If 0.0, has no effect. -* '(float) stepgen.__.frequency' - The current step rate, in steps per second. -* '(float) stepgen.__.steplen' - Length of a step pulse (step type 0 and 1) or minimum time in a given state (step types 2-14), in nano-seconds. -* '(float) stepgen.__.stepspace' - Minimum spacing between two step pulses (step types 0 and 1 only), in nano-seconds. +* (float) `stepgen.`____`.frequency` - The current step rate, in steps per second. +* (float) `stepgen.`____`.steplen` - Length of a step pulse (step type 0 and 1) or minimum time in a given state (step types 2-14), in nano-seconds. +* (float) `stepgen.`____`.stepspace` - Minimum spacing between two step pulses (step types 0 and 1 only), in nano-seconds. Set to 0 to enable the stepgen 'doublefreq' function. To use 'doublefreq' the <> must be enabled. -* '(float) stepgen.__.dirsetup' - Minimum time from a direction change to the beginning of the next step pulse (step type 0 only), in nanoseconds. -* '(float) stepgen.__.dirhold' - Minimum time from the end of a step pulse to a direction change (step type 0 only), in nanoseconds. -* '(float) stepgen.__.dirdelay' - Minimum time any step to a step in the opposite direction (step types 1-14 only), in nano-seconds. -* '(s32) stepgen.__.rawcounts' - The raw feedback count, updated by 'make_pulses()'. +* (float) `stepgen.`____`.dirsetup` - Minimum time from a direction change to the beginning of the next step pulse (step type 0 only), in nanoseconds. +* (float) `stepgen.`____`.dirhold` - Minimum time from the end of a step pulse to a direction change (step type 0 only), in nanoseconds. +* (float) `stepgen.`____`.dirdelay` - Minimum time any step to a step in the opposite direction (step types 1-14 only), in nano-seconds. +* (s32) `stepgen.`____`.rawcounts` - The raw feedback count, updated by 'make_pulses()'. In position mode, the values of maxvel and maxaccel are used by the internal position loop to avoid generating step pulse trains that the motor cannot follow. When set to values that are appropriate for the motor, even a large instantaneous change in commanded position will result in a smooth trapezoidal move to the new location. @@ -132,7 +132,7 @@ Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending on the direction of travel. Each pulse is _steplen_ ns long, and the pulses are separated by at least _stepspace_ ns. The maximum frequency is the same as for step type 0. -If 'maxfreq' is set higher than the limit it will be lowered. +If _maxfreq_ is set higher than the limit it will be lowered. If _maxfreq_ is zero, it will remain zero but the output frequency will still be limited. [WARNING] @@ -161,9 +161,9 @@ The component exports three functions. Each function acts on all of the step pulse generators - running different generators in different threads is not supported. -* '(funct) stepgen.make-pulses' - High speed function to generate and count pulses (no floating point). -* '(funct) stepgen.update-freq' - Low speed function does position to velocity conversion, scaling and limiting. -* '(funct) stepgen.capture-position' - Low speed function for feedback, updates latches and scales position. +* (funct) `stepgen.make-pulses` - High speed function to generate and count pulses (no floating point). +* (funct) `stepgen.update-freq` - Low speed function does position to velocity conversion, scaling and limiting. +* (funct) `stepgen.capture-position` - Low speed function for feedback, updates latches and scales position. The high speed function 'stepgen.make-pulses' should be run in a very fast thread, from 10 to 50 µs depending on the capabilities of the computer. That thread's period determines the maximum step frequency, @@ -229,44 +229,43 @@ The PWM generator supports three different 'output types'. Each PWM generator will have the following pins: -* '(float) pwmgen.__.value' - Command value, in arbitrary units. +* (float) `pwmgen.`____`.value` - Command value, in arbitrary units. Will be scaled by the 'scale' parameter (see below). -* '(bit) pwmgen.__.enable' - Enables or disables the PWM generator outputs. +* (bit) `pwmgen.`____`.enable` - Enables or disables the PWM generator outputs. Each PWM generator will also have some of these pins, depending on the output type selected: -* '(bit) pwmgen.__.pwm' - PWM (or PDM) output, (output types 0 and 1 only). -* '(bit) pwmgen.__.dir' - Direction output (output type 1 only). -* '(bit) pwmgen.__.up' - PWM/PDM output for positive input value (output type 2 only). -* '(bit) pwmgen.__.down' - PWM/PDM output for negative input value (output type 2 only). +* (bit) `pwmgen.`____`.pwm` - PWM (or PDM) output, (output types 0 and 1 only). +* (bit) `pwmgen.`____`.dir` - Direction output (output type 1 only). +* (bit) `pwmgen.`____`.up` - PWM/PDM output for positive input value (output type 2 only). +* (bit) `pwmgen.`____`.down` - PWM/PDM output for negative input value (output type 2 only). === Parameters -* '(float) pwmgen.__.scale' - Scaling factor to convert 'value' from arbitrary units to duty cycle. - For example if scale is set to 4000 and the input value passed to the pwmgen.__.value is 4000 then it will be 100% duty-cycle (always on). +* (float) `pwmgen.`____`.scale` - Scaling factor to convert `value` from arbitrary units to duty cycle. + For example if scale is set to 4000 and the input value passed to the `pwmgen.`____`.value` is 4000 then it will be 100% duty-cycle (always on). If the value is 2000 then it will be a 50% 25 Hz square wave. -* '(float) pwmgen.__.pwm-freq' - Desired PWM frequency, in Hz. +* (float) `pwmgen.`____`.pwm-freq` - Desired PWM frequency, in Hz. If 0.0, generates PDM instead of PWM. If set higher than internal limits, next call of 'update_freq()' will set it to the internal limit. If non-zero, and 'dither' is false, next call of 'update_freq()' will set it to the nearest integer multiple of the 'make_pulses()' function period. -* '(bit) pwmgen.__.dither-pwm' - If true, enables dithering to achieve average PWM frequencies or duty cycles that are unobtainable with pure PWM. +* (bit) `pwmgen.`____`.dither-pwm` - If true, enables dithering to achieve average PWM frequencies or duty cycles that are unobtainable with pure PWM. If false, both the PWM frequency and the duty cycle will be rounded to values that can be achieved exactly. -* '(float) pwmgen.__.min-dc' - Minimum duty cycle, between 0.0 and 1.0 (duty cycle will go to zero when disabled, regardless of this setting). -* '(float) pwmgen.__.max-dc' - Maximum duty cycle, between 0.0 and 1.0. -* '(float) pwmgen.__.curr-dc' - Current duty cycle - after all limiting and rounding (read only). +* (float) `pwmgen.`____`.min-dc` - Minimum duty cycle, between 0.0 and 1.0 (duty cycle will go to zero when disabled, regardless of this setting). +* (float) `pwmgen.`____`.max-dc` - Maximum duty cycle, between 0.0 and 1.0. +* (float) `pwmgen.`____`.curr-dc` - Current duty cycle - after all limiting and rounding (read only). === Functions The component exports two functions. Each function acts on all of the PWM generators - running different generators in different threads is not supported. -* '(funct) pwmgen.make-pulses' - High speed function to generate PWM waveforms (no floating point). - The high speed function 'pwmgen.make-pulses' should be run in the base (fastest) thread, from 10 to 50 µs depending on the capabilities of the computer. +* (funct) `pwmgen.make-pulses` - High speed function to generate PWM waveforms (no floating point). + The high speed function `pwmgen.make-pulses` should be run in the base (fastest) thread, from 10 to 50 µs depending on the capabilities of the computer. That thread's period determines the maximum PWM carrier frequency, as well as the resolution of the PWM or PDM signals. - If the base thread is 50,000 ns then every 50uS the module decides if it is time to change the state of the output. - At 50% duty cycle and 25 Hz PWM frequency this means that the output changes state every (1 / 25) s / 50 µs * 50% = 400 iterations. - This also means that you have a 800 possible duty cycle values (without dithering) -* '(funct) pwmgen.update' - Low speed function to scale and limit value and handle other parameters. - This is the function of the module that does the more complicated mathematics to work out how many base-periods the output should be high for, - and how many it should be low for. + If the base thread is 50,000 ns then every 50 µs the module decides if it is time to change the state of the output. + At 50% duty cycle and 25␗Hz PWM frequency this means that the output changes state every (1/25) s / 50 µs * 50% = 400 iterations. + This also means that you have a 800 possible duty cycle values (without dithering). +* (funct) `pwmgen.update` - Low speed function to scale and limit value and handle other parameters. + This is the function of the module that does the more complicated mathematics to work out how many base-periods the output should be high for, and how many it should be low for. [[sec:encoder]] == Encoder(((encoder))) @@ -303,10 +302,10 @@ halcmd: unloadrt encoder === Pins -* 'encoder.__.counter-mode' (bit, I/O) (default: FALSE) - Enables counter mode. +* `encoder.__.counter-mode` (bit, I/O) (default: FALSE) - Enables counter mode. When true, the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in quadrature mode. -* 'encoder.__.missing-teeth' (s32, In) (default: 0) - Enables the use +* `encoder.__.missing-teeth` (s32, In) (default: 0) - Enables the use of missing-tooth index. This allows a single IO pin to provide both position and index information. If the encoder wheel has 58 teeth with two missing, spaced as if there were 60(common for automotive crank @@ -314,60 +313,60 @@ halcmd: unloadrt encoder missing-teeth to 2. To use this mode counter-mode should be set true. This mode will work for lathe threading but not for rigid tapping. -* 'encoder.__.counts' (s32, Out) - Position in encoder counts. -* 'encoder.__.counts-latched' (s32, Out) - Not used at this time. -* 'encoder.__.index-enable' (bit, I/O) - When True, 'counts' and - 'position are' reset to zero on next rising edge of Phase Z. + - At the same time, 'index-enable' is reset to zero to indicate that the rising edge has occurred. - The 'index-enable' pin is bi-directional. - If 'index-enable' is False, the Phase Z channel of the encoder will be ignored, and the counter will count normally. - The encoder driver will never set 'index-enable' True. However, some other component may do so. -* 'encoder.__.latch-falling' (bit, In) (default: TRUE) - Not used at this time. -* 'encoder.__.latch-input' (bit, In) (default: TRUE) - Not used at this time. -* 'encoder.__.latch-rising' (bit, In) - Not used at this time. -* 'encoder.__.min-speed-estimate' (float, in) - Determine the minimum true velocity magnitude, +* `encoder.__.counts` (s32, Out) - Position in encoder counts. +* `encoder.__.counts-latched` (s32, Out) - Not used at this time. +* `encoder.__.index-enable` (bit, I/O) - When True, `counts` and + `position` are reset to zero on next rising edge of Phase Z. + + At the same time, `index-enable` is reset to zero to indicate that the rising edge has occurred. + The `index-enable` pin is bi-directional. + If `index-enable` is False, the Phase Z channel of the encoder will be ignored, and the counter will count normally. + The encoder driver will never set `index-enable` True. However, some other component may do so. +* `encoder.__.latch-falling` (bit, In) (default: TRUE) - Not used at this time. +* `encoder.__.latch-input` (bit, In) (default: TRUE) - Not used at this time. +* `encoder.__.latch-rising` (bit, In) - Not used at this time. +* `encoder.__.min-speed-estimate` (float, in) - Determine the minimum true velocity magnitude, at which velocity will be estimated as nonzero and position-interpolated will be interpolated. - The units of 'min-speed-estimate' are the same as the units of 'velocity'. + The units of `min-speed-estimate` are the same as the units of `velocity`. Scale factor, in counts per length unit. Setting this parameter too low will cause it to take a long time for velocity to go to 0 after encoder pulses have stopped arriving. -* 'encoder.__.phase-A' (bit, In) - Phase A of the quadrature encoder signal. -* 'encoder.__.phase-B' (bit, In) - Phase B of the quadrature encoder signal. -* 'encoder.__.phase-Z' (bit, In) - Phase Z (index pulse) of the quadrature encoder signal. -* 'encoder.__.position' (float, Out) - Position in scaled units (see 'position-scale'). -* 'encoder.__.position-interpolated' (float, Out) - Position in scaled units, interpolated between encoder counts. + - The 'position-interpolated' attempts to interpolate between encoder counts, based on the most recently measured velocity. - Only valid when velocity is approximately constant and above 'min-speed-estimate'. +* `encoder.__.phase-A` (bit, In) - Phase A of the quadrature encoder signal. +* `encoder.__.phase-B` (bit, In) - Phase B of the quadrature encoder signal. +* `encoder.__.phase-Z` (bit, In) - Phase Z (index pulse) of the quadrature encoder signal. +* `encoder.__.position` (float, Out) - Position in scaled units (see `position-scale`). +* `encoder.__.position-interpolated` (float, Out) - Position in scaled units, interpolated between encoder counts. + + The `position-interpolated` attempts to interpolate between encoder counts, based on the most recently measured velocity. + Only valid when velocity is approximately constant and above `min-speed-estimate`. Do not use for position control, since its value is incorrect at low speeds, during direction reversals, and during speed changes. + However, it allows a low ppr encoder (including a one pulse per revolution 'encoder') to be used for lathe threading, and may have other uses as well. -* 'encoder.__.position-latched (float, Out)' - Not used at this time. -* 'encoder.__.position-scale (float, I/O)' - Scale factor, in counts per length unit. For example, if +* `encoder.__.position-latched` (float, Out) - Not used at this time. +* `encoder.__.position-scale` (float, I/O) - Scale factor, in counts per length unit. For example, if position-scale is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units. -* 'encoder.__.rawcounts (s32, In)' - The raw count, as determined by update-counters. +* `encoder.__.rawcounts` (s32, In) - The raw count, as determined by update-counters. This value is updated more frequently than counts and position. It is also unaffected by reset or the index pulse. -* 'encoder.__.reset' (bit, In) - When True, force 'counts' and 'position' to zero immediately. -* 'encoder.__.velocity' (float, Out) - Velocity in scaled units per second. - 'encoder' uses an algorithm that greatly reduces quantization noise as compared to simply differentiating the 'position' output. +* `encoder.__.reset` (bit, In) - When True, force 'counts' and 'position' to zero immediately. +* `encoder.__.velocity` (float, Out) - Velocity in scaled units per second. + `encoder' uses an algorithm that greatly reduces quantization noise as compared to simply differentiating the 'position' output. When the magnitude of the true velocity is below min-speed-estimate, the velocity output is 0. -* 'encoder.__.x4-mode (bit, I/O) (default: TRUE)' - Enables times-4 mode. +* `encoder.__.x4-mode` (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it only counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for some jogwheels. === Parameters -* 'encoder.__.capture-position.time (s32, RO)' -* 'encoder.__.capture-position.tmax (s32, RW)' -* 'encoder.__.update-counters.time (s32, RO)' -* 'encoder.__.update-counter.tmax (s32, RW)' +* `encoder.__.capture-position.time` (s32, RO) +* `encoder.__.capture-position.tmax` (s32, RW) +* `encoder.__.update-counters.time` (s32, RO) +* `encoder.__.update-counter.tmax` (s32, RW) === Functions The component exports two functions. Each function acts on all of the encoder counters - running different counters in different threads is not supported. -* '(funct) encoder.update-counters' - High speed function to count pulses (no floating point). -* '(funct) encoder.capture-position' - Low speed function to update latches and scale position. +* (funct) `encoder.update-counters` - High speed function to count pulses (no floating point). +* (funct) `encoder.capture-position` - Low speed function to update latches and scale position. [[sec:pid]] == PID(((PID))) @@ -392,7 +391,7 @@ The maximum number of loops is 16 (as defined by MAX_CHAN in pid.c). Each loop is completely independent. In the following descriptions, __ is the loop number of a specific loop. The first loop is number 0. -If 'debug=1' is specified, the component will export a few extra pins that may be useful during debugging and tuning. +If `debug=1` is specified, the component will export a few extra pins that may be useful during debugging and tuning. By default, the extra pins are not exported, to save shared memory space and avoid cluttering the pin list. .Unloading PID @@ -404,15 +403,15 @@ halcmd: unloadrt pid The three most important pins are -* '(float) pid.__.command' - The desired position, as commanded by another system component. -* '(float) pid.__.feedback' - The present position, as measured by a feedback device such as an encoder. -* '(float) pid.__.output' - A velocity command that attempts to move from the present position to the desired position. +* (float) `pid.`____`.command` - The desired position, as commanded by another system component. +* (float) `pid.`____`.feedback` - The present position, as measured by a feedback device such as an encoder. +* (float) `pid.`____`.output` - A velocity command that attempts to move from the present position to the desired position. -For a position loop, 'command' and 'feedback' are in position units. +For a position loop, `.command` and `.feedback` are in position units. For a linear axis, this could be inches, mm, meters, or whatever is relevant. Likewise, for an angular axis, it could be degrees, radians, etc. -The units of the 'output' pin represent the change needed to make the feedback match the command. -As such, for a position loop 'Output' is a velocity, in inches/s, mm/s, degrees/s, etc. +The units of the `.output` pin represent the change needed to make the feedback match the command. +As such, for a position loop `.output` is a velocity, in inches/s, mm/s, degrees/s, etc. Time units are always seconds, and the velocity units match the position units. If command and feedback are in meters, then output is in meters per second. @@ -493,18 +492,18 @@ halcmd: unloadrt sim-encoder === Pins -* '(float) sim-encoder.__.speed' - The speed command for the simulated shaft. -* '(bit) sim-encoder.__.phase-A' - Quadrature output. -* '(bit) sim-encoder.__.phase-B' - Quadrature output. -* '(bit) sim-encoder.__.phase-Z' - Index pulse output. +* (float) `sim-encoder.`____`.speed` - The speed command for the simulated shaft. +* (bit) `sim-encoder.`____`.phase-A` - Quadrature output. +* (bit) `sim-encoder.`____`.phase-B` - Quadrature output. +* (bit) `sim-encoder.`____`.phase-Z` - Index pulse output. -When '.speed' is positive, '.phase-A' leads '.phase-B'. +When `.speed` is positive, `.phase-A` leads `.phase-B`. === Parameters -* '(u32) sim-encoder.__.ppr' - Pulses Per Revolution. -* '(float) sim-encoder.__.scale' - Scale Factor for 'speed'. - The default is 1.0, which means that 'speed' is in revolutions per second. +* (u32) `sim-encoder.`____`.ppr` - Pulses Per Revolution. +* (float) `sim-encoder.`____`.scale` - Scale Factor for `.speed`. + The default is 1.0, which means that `.speed` is in revolutions per second. Change to 60 for RPM, to 360 for degrees per second, 6.283185 (= 2*π) for radians per second, etc. Note that pulses per revolution is not the same as counts per revolution. @@ -515,8 +514,8 @@ Most encoder counters will count four times during one complete cycle. The component exports two functions. Each function affects all simulated encoders. -* '(funct) sim-encoder.make-pulses' - High speed function to generate quadrature pulses (no floating point). -* '(funct) sim-encoder.update-speed' - Low speed function to read 'speed', do scaling, and set up 'make-pulses'. +* (funct) `sim-encoder.make-pulses` - High speed function to generate quadrature pulses (no floating point). +* (funct) `sim-encoder.update-speed` - Low speed function to read `.speed`, do scaling, and set up `.make-pulses`. [[sec:debounce]] == Debounce(((debounce))) @@ -555,8 +554,8 @@ halcmd: unloadrt debounce Each individual filter has two pins. -* '(bit) debounce.__.__.in' - Input of filter __ in group __. -* '(bit) debounce.__.__.out' - Output of filter __ in group __. +* (bit) `debounce.`____.____`.in` - Input of filter __ in group __. +* (bit) `debounce.`____.____`.out` - Output of filter __ in group __. === Parameters @@ -564,19 +563,19 @@ Each group of filters has one parameterfootnote:[Each individual filter also has There is a compile time switch that can export that variable as a parameter. This is intended for testing, and simply wastes shared memory under normal circumstances.]. -* '(s32) debounce.__.delay' - Filter delay for all filters in group __. +* (s32) `debounce.`____`.delay` - Filter delay for all filters in group __. The filter delay is in units of thread periods. The minimum delay is zero. The output of a zero delay filter exactly follows its input - it doesn't filter anything. -As 'delay' increases, longer and longer glitches are rejected. -If 'delay' is 4, all glitches less than or equal to four thread periods will be rejected. +As `.delay` increases, longer and longer glitches are rejected. +If `.delay` is 4, all glitches less than or equal to four thread periods will be rejected. === Functions Each group of filters has one function, which updates all the filters in that group 'simultaneously'. Different groups of filters can be updated from different threads at different periods. -* '(funct) debounce.__' - Updates all filters in group __. +* (funct) `debounce.`____ - Updates all filters in group __. [[sec:siggen]] == SigGen(((SigGen))) @@ -604,19 +603,19 @@ halcmd: unloadrt siggen Each generator has five output pins. -* '(float) siggen.__.sine' - Sine wave output. -* '(float) siggen.__.cosine' - Cosine output. -* '(float) siggen.__.sawtooth' - Sawtooth output. -* '(float) siggen.__.triangle' - Triangle wave output. -* '(float) siggen.__.square' - Square wave output. +* (float) `siggen.`____`.sine` - Sine wave output. +* (float) `siggen.`____`.cosine` - Cosine output. +* (float) `siggen.`____`.sawtooth` - Sawtooth output. +* (float) `siggen.`____`.triangle` - Triangle wave output. +* (float) `siggen.`____`.square` - Square wave output. All five outputs have the same frequency, amplitude, and offset. In addition to the output pins, there are three control pins: -* '(float) siggen.__.frequency' - Sets the frequency in Hertz, default value is 1 Hz. -* '(float) siggen.__.amplitude' - Sets the peak amplitude of the output waveforms, default is 1. -* '(float) siggen.__.offset' - Sets DC offset of the output waveforms, default is 0. +* (float) `siggen.`____`.frequency` - Sets the frequency in Hertz, default value is 1 Hz. +* (float) `siggen.`____`.amplitude` - Sets the peak amplitude of the output waveforms, default is 1. +* (float) `siggen.`____`.offset` - Sets DC offset of the output waveforms, default is 0. For example, if `siggen.0.amplitude` is 1.0 and `siggen.0.offset` is 0.0, the outputs will swing from -1.0 to +1.0. If `siggen.0.amplitude` is 2.5 and `siggen.0.offset` is 10.0, then the outputs will swing from 7.5 to 12.5. @@ -628,7 +627,7 @@ They were changed to pins to allow control by other components.] === Functions -* '(funct) siggen.__.update' - Calculates new values for all five outputs. +* (funct) `siggen.`____`.update` - Calculates new values for all five outputs. [[sec:lut5]] == `lut5`(((lut5))) diff --git a/docs/src/hal/tools.adoc b/docs/src/hal/tools.adoc index 7e16872930c..856c004b926 100644 --- a/docs/src/hal/tools.adoc +++ b/docs/src/hal/tools.adoc @@ -14,7 +14,7 @@ == Halcmd `halcmd` is a command line tool for manipulating the HAL. -There is a rather complete man page for link:../man/man1/halcmd.1.html[`halcmd``], which will be installed if you have installed LinuxCNC from either source or a package. +There is a rather complete man page for link:../man/man1/halcmd.1.html[`halcmd`], which will be installed if you have installed LinuxCNC from either source or a package. The manpage provides usage info: ---- @@ -345,4 +345,4 @@ Component pins that cannot be associated with a known thread function report the This helps with the understanding what the source of a pin value is. Use this information with applications like `halshow`, `halmeter`, `halscope` or the `halcmd show` command in a terminal. -// vim: set syntax=asciidoc: \ No newline at end of file +// vim: set syntax=asciidoc: diff --git a/src/hal/components/spindle.comp b/src/hal/components/spindle.comp index 724fe5f25d6..dc1cf9a5d86 100644 --- a/src/hal/components/spindle.comp +++ b/src/hal/components/spindle.comp @@ -111,11 +111,13 @@ Set the minimum deceleration. If you do not have a spindle encoder this is in RP If you do have an encoder the output is the actual speed minus this value. .TP -\\fBspindle.\\fP\\fIN\\fB.speed-tolerance.\\fPx float in Tolerance for 'at-speed' signal (in RPM). +\\fBspindle.\\fP\\fIN\\fB.speed-tolerance.\\fPx float in +Tolerance for 'at-speed' signal (in RPM). Actual spindle speeds within this amount of the commanded speed will cause the at-speed signal to go TRUE. .TP -\\fBspindle.\\fP\\fIN\\fB.zero-tolerance.\\fPx float in Tolerance for 'zero-speed' signal (in RPM). +\\fBspindle.\\fP\\fIN\\fB.zero-tolerance.\\fPx float in +Tolerance for 'zero-speed' signal (in RPM). .TP \\fBspindle.\\fP\\fIN\\fB.offset.\\fPx float in