diff --git a/README.md b/README.md index 7fc7595..cf0a81f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## grblHAL ## -Latest build date is 20250926, see the [changelog](changelog.md) for details. +Latest build date is 20250928, 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. @@ -89,4 +89,4 @@ G/M-codes not supported by [legacy Grbl](https://github.com/gnea/grbl/wiki) are Some [plugins](https://github.com/grblHAL/plugins) implements additional M-codes. --- -20250926 +20250928 diff --git a/changelog.md b/changelog.md index 1b93552..dd6eba1 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,18 @@ ## grblHAL changelog +Build 20250928 + +Core: + +* Fix for crash when multiple G95 mode motions are commanded. +Ref. iMXRT1062 discussion [#100](https://github.com/grblHAL/iMXRT1062/discussions/100). + +Drivers: + +* ESP32: fix for MPG mode switch handling causing compilation error. Ref. Web Builder [discussion comment](https://github.com/grblHAL/core/discussions/645#discussioncomment-14529145). + +--- + Build 20250927 Core: diff --git a/grbl.h b/grbl.h index d4a6b6e..5c7cc9e 100644 --- a/grbl.h +++ b/grbl.h @@ -42,7 +42,7 @@ #else #define GRBL_VERSION "1.1f" #endif -#define GRBL_BUILD 20250927 +#define GRBL_BUILD 20250928 #define GRBL_URL "https://github.com/grblHAL" diff --git a/stepper.c b/stepper.c index bb1cc75..08c0ea9 100644 --- a/stepper.c +++ b/stepper.c @@ -414,7 +414,7 @@ ISR_CODE void ISR_FUNC(stepper_driver_interrupt_handler)(void) if(st.exec_block) { #if SPINDLE_SYNC_ENABLE - if(st.new_block && st.exec_segment->spindle_sync) { + if(st.new_block && st.exec_segment->spindle_sync && hal.stepper.pulse_start != st_spindle_sync_out) { spindle_tracker.stepper_pulse_start = hal.stepper.pulse_start; hal.stepper.pulse_start = st_spindle_sync_out; } @@ -1225,7 +1225,7 @@ void st_prep_buffer (void) uint32_t cycles = (uint32_t)ceilf(cycles_per_min * inv_rate); // (cycles/step) // Record end position of segment relative to block if spindle synchronized motion - if((prep_segment->spindle_sync = pl_block->spindle.state.synchronized)) { + if((prep_segment->spindle_sync = pl_block->spindle.state.synchronized && !pl_block->condition.units_per_rev)) { prep.target_position += dt * prep.target_feed; prep_segment->cruising = prep.ramp_type == Ramp_Cruise; prep_segment->target_position = prep.target_position; //st_prep_block->millimeters - pl_block->millimeters;