Fix for crash when multiple G95 mode motions are commanded.

This commit is contained in:
Terje Io
2025-09-28 07:53:18 +02:00
parent d96d3c488e
commit b829928674
4 changed files with 18 additions and 5 deletions
+2 -2
View File
@@ -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
+13
View File
@@ -1,5 +1,18 @@
## grblHAL changelog
<a name="20250928">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).
---
<a name="20250927">Build 20250927
Core:
+1 -1
View File
@@ -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"
+2 -2
View File
@@ -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;