From a61e5e108927bf86e1cf66951ab7cb28895a2e52 Mon Sep 17 00:00:00 2001 From: Terje Io Date: Wed, 10 Sep 2025 21:34:20 +0200 Subject: [PATCH] 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. --- README.md | 2 +- changelog.md | 24 +++++++++++++++++++++++- config.h | 26 +++++++++++++++++++++++++- grbl.h | 4 ++-- grbllib.c | 10 +++++++--- report.c | 4 ++-- settings.c | 11 +++++++++-- settings.h | 4 +++- 8 files changed, 72 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index c926678..4eb6a1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## grblHAL ## -Latest build date is 20250829, see the [changelog](changelog.md) for details. +Latest build date is 20250910, see the [changelog](changelog.md) for details. > [!NOTE] > A settings reset will be performed on an update of builds prior to 20241208. Backup and restore of settings is recommended. diff --git a/changelog.md b/changelog.md index 569b699..8e39c7f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,27 @@ ## grblHAL changelog +Build 20250910 + +Core: + +* Added setting options for clearing rapids and feed overrids on soft reset to `$676`, defaults to on. Ref. issue [#803](https://github.com/grblHAL/core/issues/803). + +* Added realtime report of distance-to-go. Ref. PR [#802](https://github.com/grblHAL/core/pull/802). + +Drivers: + +* iMXRT1062: fix for crash when basic on/off spindle is configured. + +* STM32F4xx: workaround for PWM LED strip code setting output pin as high-Z when idle. + +* STM32F7xx: improved spindle encoder code. + +Plugins: + +* Misc, eventout: fix for mixup of spindle on/off and spindle-at-speed events. + +--- + Build 20250902 Core: @@ -10,7 +32,7 @@ Core: Drivers: -* ESP32, TM4C123: updated for changed `ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING` symbol. +* ESP32, SAM3X8E and TM4C123: updated for changed `ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING` symbol. * RP2040: updated BTT SKR Pico v1 map to use _Servo_ port for reset/estop in four motor configurations. Ref discussion [#110](https://github.com/grblHAL/RP2040/discussions/110). diff --git a/config.h b/config.h index a8f96d1..ef63f9b 100644 --- a/config.h +++ b/config.h @@ -902,7 +902,7 @@ to a reset during motion. /*! /def DEFAULT_KEEP_OFFSETS_ON_RESET \brief Enable this setting to keep offsets (except G92 which is always kept) over a soft reset. -\internal Bit 14 in settings.flags. +\internal Bit 17 in settings.flags. */ ///@{ #if !defined DEFAULT_KEEP_OFFSETS_ON_RESET || defined __DOXYGEN__ @@ -910,6 +910,30 @@ Enable this setting to keep offsets (except G92 which is always kept) over a sof #endif ///@} +/*! /def DEFAULT_KEEP_RAPIDS_OVR_ON_RESET +\brief +Enable this setting to keep rapids override over a soft reset. +\internal Bit 21 in settings.flags. +*/ +///@{ +#if !defined DEFAULT_KEEP_RAPIDS_OVR_ON_RESET || defined __DOXYGEN__ +#define DEFAULT_KEEP_RAPIDS_OVR_ON_RESET Off +#endif +///@} + +/*! /def DEFAULT_KEEP_FEED_OVR_ON_RESET +\brief +Enable this setting to feedrate override over a soft reset. +\internal Bit 22 in settings.flags. +*/ +///@{ +#if !defined DEFAULT_KEEP_FEED_OVR_ON_RESET || defined __DOXYGEN__ +#define DEFAULT_KEEP_FEED_OVR_ON_RESET Off +#endif +///@} + + + // Control signals settings (Group_ControlSignals) #ifndef __DOXYGEN__ // For now do not include in documentation diff --git a/grbl.h b/grbl.h index a05c2c0..d9a777f 100644 --- a/grbl.h +++ b/grbl.h @@ -42,7 +42,7 @@ #else #define GRBL_VERSION "1.1f" #endif -#define GRBL_BUILD 20250902 +#define GRBL_BUILD 20250910 #define GRBL_URL "https://github.com/grblHAL" @@ -120,7 +120,7 @@ #define CMD_OPTIONAL_STOP_TOGGLE 0x88 #define CMD_SINGLE_BLOCK_TOGGLE 0x89 #define CMD_OVERRIDE_FAN0_TOGGLE 0x8A //!< Toggle Fan 0 on/off, not implemented by the core. -#define CMD_MPG_MODE_TOGGLE 0x8B //!< Toggle MPG mode on/off, not implemented by the core. +#define CMD_MPG_MODE_TOGGLE 0x8B //!< Toggle MPG mode on/off, available when the MPG stream is enabled with MPG mode 2. #define CMD_AUTO_REPORTING_TOGGLE 0x8C //!< Toggle auto real time reporting if configured. #define CMD_OVERRIDE_FEED_RESET 0x90 //!< Restores feed override value to 100%. #define CMD_OVERRIDE_FEED_COARSE_PLUS 0x91 diff --git a/grbllib.c b/grbllib.c index 5d2bf9d..c64bb3f 100644 --- a/grbllib.c +++ b/grbllib.c @@ -420,14 +420,18 @@ int grbl_enter (void) // Reset report entry points report_init_fns(); + overrides_t override; + + memcpy(&override, &sys.override, sizeof(overrides_t)); + if(!sys.position_lost || settings.homing.flags.keep_on_reset) memset(&sys, 0, offsetof(system_t, homed)); // Clear system variables except alarm & homed status. else memset(&sys, 0, offsetof(system_t, alarm)); // Clear system variables except state & alarm. - sys.var5399 = -2; // Clear last M66 result - sys.override.feed_rate = DEFAULT_FEED_OVERRIDE; // Set to 100% - sys.override.rapid_rate = DEFAULT_RAPID_OVERRIDE; // Set to 100% + sys.var5399 = -2; // Clear last M66 result + sys.override.feed_rate = sys.cold_start || !settings.flags.keep_feed_override_on_reset ? DEFAULT_FEED_OVERRIDE : override.feed_rate; + sys.override.rapid_rate = sys.cold_start || !settings.flags.keep_rapids_override_on_reset ? DEFAULT_RAPID_OVERRIDE : override.rapid_rate; do { if(spindle_is_enabled(--spindle_num)) spindle_get(spindle_num)->param->override_pct = DEFAULT_SPINDLE_RPM_OVERRIDE; // Set to 100% diff --git a/report.c b/report.c index 082ef45..fe7414c 100644 --- a/report.c +++ b/report.c @@ -1264,8 +1264,8 @@ void report_realtime_status (stream_write_ptr stream_write) dist_remaining[idx] = cur_block->target_mm[idx] - dist_remaining[idx]; } - hal.stream.write_all("|DTG:"); - hal.stream.write_all(get_axis_values(dist_remaining)); + stream_write("|DTG:"); + stream_write(get_axis_values(dist_remaining)); } } diff --git a/settings.c b/settings.c index e57b11d..28ab47a 100644 --- a/settings.c +++ b/settings.c @@ -91,6 +91,8 @@ PROGMEM const settings_t defaults = { .flags.tool_change_fast_pulloff = DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF, .flags.no_unlock_after_estop = DEFAULT_NO_UNLOCK_AFTER_ESTOP, .flags.keep_offsets_on_reset = DEFAULT_KEEP_OFFSETS_ON_RESET, + .flags.keep_rapids_override_on_reset = DEFAULT_KEEP_RAPIDS_OVR_ON_RESET, + .flags.keep_feed_override_on_reset = DEFAULT_KEEP_FEED_OVR_ON_RESET, .flags.tool_persistent = DEFAULT_PERSIST_TOOL, .probe.disable_probe_pullup = DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP, @@ -1049,6 +1051,8 @@ static status_code_t set_reset_actions (setting_id_t id, uint_fast16_t int_value { settings.homing.flags.keep_on_reset = bit_isfalse(int_value, bit(0)); settings.flags.keep_offsets_on_reset = bit_isfalse(int_value, bit(1)); + settings.flags.keep_rapids_override_on_reset = bit_isfalse(int_value, bit(2)); + settings.flags.keep_feed_override_on_reset = bit_isfalse(int_value, bit(3)); return Status_OK; } @@ -1660,7 +1664,10 @@ static uint32_t get_int (setting_id_t id) break; #endif case Setting_ResetActions: - value = (!settings.homing.flags.keep_on_reset) | ((!settings.flags.keep_offsets_on_reset) << 1); + value = (!settings.homing.flags.keep_on_reset) | + ((!settings.flags.keep_offsets_on_reset) << 1) | + ((!settings.flags.keep_rapids_override_on_reset) << 2) | + ((!settings.flags.keep_feed_override_on_reset) << 3); break; default: @@ -2162,7 +2169,7 @@ PROGMEM static const setting_detail_t setting_detail[] = { { Setting_MotorWarningsInvert, Group_Stepper, "Invert motor warning inputs", NULL, Format_AxisMask, NULL, NULL, NULL, Setting_IsExtended, &settings.motor_warning_invert, NULL, is_setting_available }, { Setting_MotorFaultsEnable, Group_Stepper, "Motor fault inputs enable", NULL, Format_AxisMask, NULL, NULL, NULL, Setting_IsExtended, &settings.motor_fault_enable, NULL, is_setting_available }, { Setting_MotorFaultsInvert, Group_Stepper, "Invert motor fault inputs", NULL, Format_AxisMask, NULL, NULL, NULL, Setting_IsExtended, &settings.motor_fault_invert, NULL, is_setting_available }, - { Setting_ResetActions, Group_General, "Reset actions", NULL, Format_Bitfield, "Clear homed status if position was lost,Clear offsets (except G92)", NULL, NULL, Setting_IsExtendedFn, set_reset_actions, get_int, NULL }, + { Setting_ResetActions, Group_General, "Reset actions", NULL, Format_Bitfield, "Clear homed status if position was lost,Clear offsets (except G92),Clear rapids override,Clear feed override", NULL, NULL, Setting_IsExtendedFn, set_reset_actions, get_int, NULL }, { Setting_StepperEnableDelay, Group_Stepper, "Stepper enable delay", "ms", Format_Int16, "##0", NULL, "250", Setting_IsExtended, &settings.stepper_enable_delay, NULL, NULL }, }; diff --git a/settings.h b/settings.h index 61c5565..512f265 100644 --- a/settings.h +++ b/settings.h @@ -602,7 +602,9 @@ typedef union { tool_change_at_g30 :1, tool_change_fast_pulloff :1, tool_persistent :1, - unassigned :11; + keep_rapids_override_on_reset :1, + keep_feed_override_on_reset :1, + unassigned :9; }; } settingflags_t;