Commit Graph
100 Commits
Author SHA1 Message Date
Terje Io 588e3f831d Added latency (in ms) to $MODBUSSTATS output. 2026-03-14 21:18:52 +01:00
Terje Io 29ea451996 Added platform specific formatting strings for int32_t, "hardened" task handler code. 2026-03-13 10:39:39 +01:00
Terje Io 38cc54d74e Improved handling of current working directory (CWD). 2026-03-11 18:03:29 +01:00
Terje Io ee077d8730 Changes to allow I/O expander pins for motor fault inputs. Ref. PR #920. 2026-03-09 00:03:52 +01:00
Terje Io 949fa53c42 Added some reentry locks.
Second step in refactoring encoder HAL/API.
2026-03-03 22:34:30 +01:00
Terje Io 9ad064bebf Improved handling of G43 some more - can now be used in the same block as M6 when the internal workflow for tool change is enabled or M6 is ignored. 2026-02-27 09:33:05 +01:00
Terje Io aa3a80f47f Fixed incorrect behaviour when a tool change using the built-in workflow is aborted, the selected tool was set as the current tool.
Added support for G66.1 macro call.
Changed behaviour of G50 and G51 (and the G48 and G49 shortcuts) controlling feed rate and spindle RPM overrides.
Added support for G10L0, reload file based tool table.
Fixed buggy handling of G43 - apply tool offset from tool table.
Refactored the encoder HAL/API to make it more flexible and as a first step to support rigid tapping.
See the changelog for further details.
2026-02-26 10:30:46 +01:00
Terje IoandGitHub 54c58ee177 Merge pull request #914 from Expatria-Technologies/PR_Modbus_handle_single_coils
PR for Modbus fixes around single coils and discrete inputs.
2026-02-22 10:19:10 +01:00
Terje Io e0896a9db0 Fix for incorrect handling of limit pins for auto squared axes for two board maps. 2026-02-19 14:57:33 +01:00
Terje Io 82e6e4a0a3 Changed $pinstates command output, now reports pin number instead of pin id.
For developers: added API call that returns Modbus stream handlers.
2026-02-18 10:22:12 +01:00
Terje Io 16e5df9d93 Marked a large number of non-critical functions with FLASHMEM to save RAM for the iMXRT1062 driver.
Improved alarm handling, if a critical alarm is active when a non-critical alarm is raised the non-critical alarm will be delayed until after reset for the critical alarm.
Improved Modbus exception handling and added high level API call for creating and sending Modbus messages.
Added G65P7 inbuilt macro for interacting with Modbus devices from gcode. See the Wiki for details.
2026-02-15 22:16:03 +01:00
Terje Io f0fa009f5e For developers: added new callback for Modbus timeouts, defaults to exception callback for backwards compatibilty. 2026-02-12 21:02:38 +01:00
Terje Io e3c046b08b Updated changelog. 2026-02-10 19:14:59 +01:00
Terje Io 2eb7179b9d Changed spindle at speed check to fix issue with it sometimes skipping the wait cycle.
Added experimental support for ramping PWM output on RPM changes. See the changelog for details.
2026-02-07 09:46:00 +01:00
Terje IoandGitHub 9de5c5d0b1 Merge pull request #905 from engigeer/PR_LIMIT_MASK_typo
Fix typo in LIMIT_MASK_BASE_SUM definition
2026-02-06 21:49:12 +01:00
Terje Io 46369e2623 Fixed bad update causing compiler error if multiple spindles are enabled.
Moved some reporting data definitions/structures that caused Windows simulator builds to fail.
2026-02-05 17:59:37 +01:00
Terje Io d74d450f2d Reinstated settings definition that somehow was deleted in the 20260202 commit++ 2026-02-04 16:58:19 +01:00
Terje Io b435b48ec1 Changed real time reporting to allow per connection status for which report elements to output.
Added pragmas to shut up warning from the ESP32 compiler.
2026-02-04 11:28:20 +01:00
Terje Io 0ed9404b9e Fixed incorrect motor assignments for ABC motors. Ref. issue #902. 2026-02-02 23:11:43 +01:00
Terje Io 94ee157387 Updated changelog 2026-02-02 22:45:45 +01:00
Terje Io c6aa574279 Added experimental support for M98 subroutines, internal subroutines are only supported for programs run from a local file system.
$700 controls whether they are scanned for internally in the main program (1) or always located externally (0).
If scanned for internally the program is run twice, initially in check mode to locate the subroutines before it is rewound and run in normal mode.
If stored externally the file P<macro number>.macro is run, <macro number> is the M98 P value.
2026-02-02 22:25:31 +01:00
Terje Io 08c778530c Updated changelog. 2026-01-31 06:34:16 +01:00
Terje Io 5087dc61b8 Updated changelog. 2026-01-28 23:58:17 +01:00
Terje Io 4340b3d768 fix for out of sync commit 2026-01-25 08:27:32 +01:00
Terje Io 497c7d4eb0 Updated readme. 2026-01-25 08:13:31 +01:00
Terje Io 64c35930c7 Refactored offset handling, for improved readability and in preparation for rotation support.
Added experimental support for G66 (modal macro call) and G67 (end modal macro call).
Made axis letter to axis/motor assignment for axes ABCUVW freely changeable at compile time.
Fix for some G65 arguments being incorrectly validated for normal use (sign, range).
Added repeat support to G65 macro call via the optional L parameter word.
Changed default setting for ABC-axes to rotary.
Changed defaults for jerk settings to 10x acceleration settings.
Disabled jerk for jog, probe and spindle synchronized motion.
Added _active_probe system parameter, returns -1 if no probe inputs available.
Minor bug fix, G5.1 and G33.1 motion commands were not coverted to the correct string equivalent in $G output.
2026-01-25 07:51:44 +01:00
Terje IoandGitHub f8867e7ea3 Merge pull request #883 from petervanderwalt/sienci_atc_plugin
Added Sienci ATC plugin init and m-code reservation
2026-01-08 11:08:41 +07:00
Terje IoandGitHub fe858f73e9 Merge pull request #873 from gcormier/fix-toolchange-z-restore
Fix Z home movement when XY already at TLS position
2025-12-21 20:27:05 +07:00
Terje IoandGitHub 380199e388 Merge pull request #865 from engigeer/PR_reboot
Add support for $REBOOT (hard reset) command
2025-12-08 06:37:17 +07:00
Terje Io e272f773b5 Refactored the tool table HAL API a bit to improve functionality.
Added tool name, pocket number and some lathe specific data fields to the $# tool output when available from the tool table.
If name is available it will be output as a push message on M6 if there is no message in the same block.
Added support for directory up, .., to VFS.
Added new option to $650 - File systems options to enable hierarchical listing of files and directories via $F and $F+ commands.
2025-11-11 16:51:08 +01:00
Terje Io 18d6272060 Fix for regression causing MPG mode switch malfunction. Ref. issue #846. 2025-11-08 20:27:11 +01:00
Terje Io 6efbed8fa2 Updated changelog 2025-11-08 08:37:39 +01:00
Terje Io adba5d031c Refactored M70-M73 modal state handling, should now be fully compatible with LinuxCNC behaviour.
Added ADC/DAC resolution to $pinstate command, changed reported values to integer for ADC/DAC devices and float formatted for PWM devices.
Numeric settings can now be set via G65P1Q<n>S<value>, <n> is the setting number, <value> is the new value.
Changed alarm code for Modbus exceptions (communication errors) from 14 to 19.
Refactored MPG stream code to allow plugins to hook into MPG streams (via event handler).
Added _free memory system parameter, returns value in KBytes or -1 if not available from driver.
Changed basic stream data type from char to uint8_t, added HAL function and core API for releasing/closing UART streams.
2025-11-08 07:52:01 +01:00
Terje Io caa1cfcd13 Updated changelog. 2025-11-07 22:26:42 +01:00
Terje Io 69cdfb76c8 Added field for programmed timer period to HAL timer struct. 2025-11-05 07:54:32 +01:00
Terje Io 720f6bd552 Workaround for POS (Power on self-test) failure messages(s) not output on "native" USB connect.
Fixed handling of NVS buffer allocation, size was not increased as expected when physical NVS is capable of holding more than 2 Kbytes.
This could lead to POS failure or plugins not initializing when a large tool table is configured.
2025-10-23 10:40:01 +02:00
Terje Io ba222d16aa Previous commit was incorrect, fixed 2025-10-22 08:31:34 +02:00
Terje Io f5f31e6780 Fix for regression causing no WCO data in the real time report. 2025-10-22 08:20:54 +02:00
Terje Io b5b236ca3f Updated some pointer casts to get warning free compilation for 64-bit targets.
A few tweaks to get rid of warnings for some driver/board/configuration combinations.
2025-10-20 08:10:58 +02:00
Terje Io ed2a392dd7 Added _probe2_state system parameter, returns -1 if probe 2 is not available, 1 if triggered and 0 if not.
Fix for hang when G65 sub call level is > 2.
Fix for crash when selecting a tool (with the T command) outside the tool table range.
2025-10-18 20:28:02 +02:00
Terje Io 106f5fd573 Refactored assignment of of auxiliary I/O for "standard" inputs and outputs to make it more robust and easier to follow for developers.
Moved probe signal handling from drivers to the core, improved handling of probe disconnected signal.
NOTE: The changes above are quite large, please verify probe operation after installation.
2025-10-16 17:22:32 +02:00
Terje Io 0679a0c6d4 Updated changelog 2025-10-15 13:25:10 +02:00
Terje Io 1d0d7b41a4 Added preprocessor code and symbols to allow easy assignment of unused/unclaimed limit inputs as auxiliary inputs. 2025-10-12 20:24:35 +02:00
Terje Io 8c3d44bfca Added helper code for plugins claiming auxiliary ports to make plugin coding easier and behaviour consistent.
Some minor bug fixes such as incorrect error code returned for unknown $-commands and temporary incorrect position reporting on in-flight G92 offset changes.
2025-10-11 18:28:21 +02:00
Terje Io 5d48dd5c43 For developers: added function for getting standardized UART pin descriptions. 2025-10-06 07:44:51 +02:00
Terje Io 132159a6b6 Workaround for some compilers configured to treat warnings as errors causing compilation failure.
Added $PORTS command for listing serial ports, later I will update all drivers to provide the optional information.
Potential fix for polar kinematics not handling axes > 3 correctly, needs testing. Ref. issue #820.
2025-10-04 20:17:22 +02:00
Terje Io 7db744f04a fix typos 2025-10-02 15:41:10 +02:00
Terje Io e37572fe02 Improved M70-M73 modal state save and restore, should now handle overrides correctly.
Added lightweight JSON serializer outputting directly to file.
Fix for event handler sometimes called too early. Ref. issue #818.
For developers: added optional device filing system that can redirect file read/write to serial streams.
2025-10-02 15:18:28 +02:00
Terje Io b829928674 Fix for crash when multiple G95 mode motions are commanded. 2025-09-28 07:53:18 +02:00
Terje Io d96d3c488e Fix for stepper spindle in polling mode causing alarm 14 when used for spindle synced motion (G33, G76). 2025-09-27 06:37:21 +02:00
Terje Io 17a4648a1d Updated motion in units per revolution mode (G95) to handle spindle RPM changes.
Changed initial wait for two index pulses to check RPM > 0 before starting such motion.
2025-09-26 09:57:05 +02:00
Terje Io e3803a252a Fixed typo in parameter access for G59 coordinate. Ref. issue #814. 2025-09-25 20:40:49 +02:00
Terje Io 65dd33c569 Fix for compilation failure for N_AXIS > 3 (typo) 2025-09-25 19:33:13 +02:00
Terje Io 2f9ba98040 Added G65P6 for disabling spindle on/off delay for the next spindle command (M3, M4 and M5).
For programmers: added grbl.on_control_signals_changed event, fired on some signals: optional stop, single step, block delete and cycle start.
Fix for incorrect handling of arcs when negative scaling is enabled with G51.
2025-09-25 08:29:01 +02:00
Terje Io a61e5e1089 Added setting options for clearing rapids and feed overrids on soft reset to $676, defaults to on. Ref. issue #803.
Added realtime report of distance-to-go. Ref. PR #802.
2025-09-10 21:34:20 +02:00
Terje IoandGitHub 75b1a23839 Merge pull request #802 from engigeer/PR_dist_to_go
Add realtime report of distance-to-go
2025-09-10 20:22:45 +02:00
Terje Io 24d802e573 Fix for bug preventing disabling of AMASS, changed the ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING symbol so it can be overridden via compiler argument.
For developers: added output function parameter to signature of report_realtime_status() call to allow routing output to a given stream (or streams).
2025-09-04 08:36:48 +02:00
Terje Io 354eef8359 Updated changelog 2025-08-31 14:56:32 +02:00
Terje Io a3c345173b Updated changelog. 2025-08-30 10:39:34 +02:00
Terje Io 0d4337b75e Fix for laser enable not restored after feedhold. Ref. issue #798.
Fix for incorrect direction of motion via second stepper driver used for step injection (plasma THC) and stepper spindle.
2025-08-29 12:43:48 +02:00
Terje IoandGitHub 1bd45dfb04 Merge pull request #797 from hangsman/master
Fix feed override bypass when programmed rate exceeds rapid rate
2025-08-26 11:52:12 +02:00
Terje Io f081b9f37e Added function for clearing LED strips. 2025-08-25 22:17:58 +02:00
Terje Io 43fa98d93b Fix for grbl.on_tool_changed event raised too early when tool change code is in tc.macro. 2025-08-08 20:46:34 +02:00
Terje Io ee1cd5a745 Improved ioport remapping of auxiliary pins (used by plasma plugin).
Changed signature of limit check functions, grbl.travel_limits() et. al.
to include a pointer to the work envelope to use.
Updated spindle off handling to check for "at speed" on deceleration when spindle is "at speed" capable.
2025-08-06 18:32:29 +02:00
Terje Io 255d02b020 Fix for transposed options in $41 - parking cycle enable. 2025-08-02 08:23:08 +02:00
Terje Io 02b45f86e5 Fix for corrupted tool table entries not beeing reset. This may happen on resizing the tool table.
Added system parameter _tool_table_size, 0 if a tool table is not enabled.
Removed dependency on safety door input for parking settings: $41, $42, $56-$59, $392 and $393.
Removed strict dependency on spindle encoder input for spindle synced motion,
allows the use of the stepper spindle which has an implicit encoder.
2025-07-31 08:19:07 +02:00
Terje Io 5aff8fe767 Fix for optional control signals not respecting $14 inversion setting. Ref. issue #780.
Added core on_spindle_at_speed event. This must be verified with actual VFD spindles, I only have a simulator available.
Improved handling of "iterated" settings, can now be fully implemented by plugins.
2025-07-24 08:25:25 +02:00
Terje Io f951c266ac Updated secondary PWM spindle settings handling to propagate laser mode changes dynamically.
Fixed secondary PWM spindle RPM settings mixup.
2025-07-20 07:17:18 +02:00
Terje Io d380335d97 Added early (on startup) configuration of secondary PWM spindles. 2025-07-18 15:12:19 +02:00
Terje Io 5dae16ad83 "hardened" code related to ioports claiming and PWM2 spindle configuration.
Added API call and expanded one.
2025-07-16 10:58:31 +02:00
Terje Io 7467c07567 Force settings write on serial stream format change. 2025-07-07 07:31:30 +02:00
Terje Io 6c13075ebe Updated serial stream format options. Fix for compiler warning. 2025-07-07 07:19:41 +02:00
Terje Io 74eb456533 Added ioports API call for remapping port numbers.
Added HAL support for setting serial stream format.
Added setting $681 for configuring Modbus RTU stream parity, available when the underlying driver supports format setting.
2025-07-05 14:17:11 +02:00
Terje Io df55d7cb91 Fix for incorrect reporting of spindle capabilities when more than one spindle configured.
Ref. issue #770.
2025-07-02 07:55:03 +02:00
Terje Io ab830e3bff Updated changelog. 2025-06-27 08:01:28 +02:00
Terje Io e35af1abc1 Added setting flag to $675 (Macro ATC options) for enabling error on M6 if tc.macro is not found in the filing system.
Changed $I NEWOPT "ATC" element to ATC=1 when ATC is online and ATC=0 when offline.
For macro based ATC code this is set to ATC=0 if tc.macro is not found and the new $675 flag is set.
2025-06-26 07:25:58 +02:00
Terje Io 081f24f663 Added option flag to $22 (Homing cycle) to run startup scripts only on homing completed.
Added API call modbus_isbusy() for checking if Modbus transaction is ongoing.
2025-06-25 08:52:15 +02:00
Terje Io e03e594ca5 Fix for typecast issue causing compile failure with some compilers. Ref issue #761. 2025-06-21 07:05:50 +02:00
Terje Io 5614f505fb Refactored tool table API/HAL, now supports tool > tool rack/carousel pocket mapping.
Named system parameters _current_pocket and _selected_pocket updated to return the correct values.
Moved handling of keeping last tool number over reboot from template plugin to the core.
Added named system parameters _homed_state and _homed_axes.
Fix for failure to claim auxiliary ports in some configurations.
2025-06-19 07:09:49 +02:00
Terje Io 596576763e Fix for hardfault due to recent control pins handling change - affects at least RP2040/RP2350 MCUs.
No longer outputs settings/settings data for $14 (inversion) and $17 (pullup disable) if no control inputs are configured.
2025-06-11 22:37:53 +02:00
Terje Io c038c92d34 Updated readme 2025-06-10 09:20:55 +02:00
Terje Io 8cf50c2140 Added initial support for TMC2440 in SPI mode.
Thanks to @jebanon for donating drivers for testing.
2025-06-09 22:20:20 +02:00
Terje Io d43e6a9a72 No longer retries Modbus commands if there is a pending reset.
Added $MODBUSSTATS and $MODBUSSTATS=R commands, outputs communication statistics such as number of sent commands, retries etc.
$MODBUSSTATS=R clears the statistics after outputting it.
Ref. issue #753.
2025-06-05 10:24:10 +02:00
Terje Io f40d5db74a Changed backlash feed rate to be the same as the current motion. Ref. issue #751.
Minor fix for probe availability report in $I output.
2025-05-30 08:53:48 +02:00
Terje Io fc7ec7e219 Completed core support for additional probes (toolsetter, probe 2).
Switched to universal use of aux I/O for many signals, includes reset/ESTop, feed hold and cycle start.
2025-05-29 13:02:10 +02:00
Terje Io 070f80cc5c Updated changelog. Renamed OpenPNP custom command M143. 2025-05-19 21:39:16 +02:00
Terje Io b10b3317d2 Fix for custom M-code commands claiming all axis words even when not using any.
Added setting $680 for configuring delay from stepper enable to first dir/step pulse.
Adds to fixed ~2ms delay provided by most drivers.
2025-05-18 08:03:51 +02:00
Terje Io 6948b0e117 Added initial/enhanced support for toolsetter and second probe input.
Moved inbuilt G65 macros to the core and added macro G65P5Q<n> for selecting probe.
Added probe id to real time report: |P:<n> will be reported on probe select when more than one probe is available.
Fix for WCO and Ov real time status report elements not beeing reported as they should in some circumstances.
2025-05-15 06:23:17 +02:00
Terje Io fb3f6b6f57 Updated changelog 2025-05-04 22:13:20 +02:00
Terje IoandGitHub 568b358ac1 Merge pull request #715 from engigeer/PR_picohal_plugin_init
add Picohal plugin init and spindle define
2025-05-02 09:13:54 +02:00
Terje Io 16aca4e8bb Updated changelog 2025-05-02 07:04:15 +02:00
Terje Io 390c11bb7e Updated $N0 and $N1 startup commands to allow multi-block (line) gcode commands by using | (vertical bar) as the separator.
No longer configures auxiliary output pins claimed for basic functions in order to avoid affecting any previously set alternate pin function.
2025-04-25 17:13:42 +02:00
Terje Io b41018543b Moved part of the driver based spindle sync code to the core.
Spindle sync now has to be enabled in grbl/config.h.
2025-04-24 22:38:55 +02:00
Terje Io 58dd5dc25a "hardened" task handler a bit more 2025-04-19 23:21:12 +02:00
Terje Io bcef020c32 changes to allow compile on all platforms 2025-04-19 16:08:22 +02:00
Terje Io 837398221b Fixed regression introduced with PR#673.
Added G30 as optional position for tool change.
Moved new tool change mode from PR#673 to $346 - Tool change options.
Moved Modbus RTU code from spindle plugin to the core.
Fixed bug in delayed task handler, might occasionally hang the controller.
2025-04-19 14:08:46 +02:00
Terje Io 77b65c6fdd Fixed long standing "bug" where settings $370 and $372 for auxiliary ports where
applied before the underlying GPIO pins were initialized by the driver.
Improved handling of same settings for external (I2C, ModBus, ...) ports.
2025-04-15 14:57:18 +02:00
Terje Io ae006ebafe missed commit 2025-04-13 21:23:24 +02:00
Terje Io e1ea957ca4 Added wrappers/veneers for hal.port functions, plugin code should be changed to use
these instead of calling via hal.port functions or accessing hal.port properties.
Improved the ioports API, updated core code to make use of it.
Flagged some calls and (part of) some stuctures as deprecated.
2025-04-13 20:54:09 +02:00
Terje Io d51de9d98f Added MCP4725 I2C DAC to IO expander plugins. 2025-04-11 02:18:31 +02:00