diff --git a/README.md b/README.md
index 2a017eb..dfa9f83 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ It has been written to complement grblHAL and has features such as proper keyboa
---
-Latest build date is 20230808, see the [changelog](changelog.md) for details.
+Latest build date is 20230821, see the [changelog](changelog.md) for details.
__NOTE:__ A settings reset will be performed on an update of builds earlier than 20230125. Backup and restore of settings is recommended.
__IMPORTANT!__ A new setting has been introduced for ganged axes motors in build 20211121.
I have only bench tested this for a couple of drivers, correct function should be verified after updating by those who have more than three motors configured.
diff --git a/changelog.md b/changelog.md
index 8bf817c..6db8c4b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,17 @@
## grblHAL changelog
+Build 20230821
+
+Core:
+
+* Fix for issue #349 - active feed rate override caused jog motions to hang on some drivers \(STM32F4xx and possibly others\).
+
+Drivers:
+
+* RP2040: fix for regression: ethernet was incorrectly left enabled in CMakeLists.txt.
+
+---
+
Build 20230820
Core:
@@ -10,7 +22,7 @@ Core:
Drivers:
-* RP2040: Fix for [issue #72](https://github.com/grblHAL/RP2040/discussions/72) \(typo\), improved SPI chip select handling.
+* RP2040: fix for [issue #72](https://github.com/grblHAL/RP2040/discussions/72) \(typo\), improved SPI chip select handling.
---
diff --git a/core_handlers.h b/core_handlers.h
index 6198edc..f633665 100644
--- a/core_handlers.h
+++ b/core_handlers.h
@@ -97,7 +97,7 @@ typedef void (*on_unknown_feedback_message_ptr)(stream_write_ptr stream_write);
typedef void (*on_stream_changed_ptr)(stream_type_t type);
typedef bool (*on_laser_ppi_enable_ptr)(uint_fast16_t ppi, uint_fast16_t pulse_length);
typedef void (*on_homing_rate_set_ptr)(axes_signals_t axes, float rate, homing_mode_t mode);
-typedef void (*on_homing_completed_ptr)(bool succes);
+typedef void (*on_homing_completed_ptr)(bool success);
typedef bool (*on_probe_fixture_ptr)(tool_data_t *tool, bool at_g59_3, bool on);
typedef bool (*on_probe_start_ptr)(axes_signals_t axes, float *target, plan_line_data_t *pl_data);
typedef void (*on_probe_completed_ptr)(void);
diff --git a/grbl.h b/grbl.h
index df89b43..9d08353 100644
--- a/grbl.h
+++ b/grbl.h
@@ -42,7 +42,7 @@
#else
#define GRBL_VERSION "1.1f"
#endif
-#define GRBL_BUILD 20230820
+#define GRBL_BUILD 20230821
#define GRBL_URL "https://github.com/grblHAL"
diff --git a/planner.c b/planner.c
index ebc9792..a27ce22 100644
--- a/planner.c
+++ b/planner.c
@@ -342,19 +342,6 @@ inline static float plan_compute_profile_parameters (plan_block_t *block, float
return nominal_speed;
}
-// Re-calculates buffered motions profile parameters upon a motion-based override change.
-void plan_update_velocity_profile_parameters (void)
-{
- plan_block_t *block = block_buffer_tail;
- float prev_nominal_speed = SOME_LARGE_VALUE; // Set high for first block nominal speed calculation.
-
- while (block != block_buffer_head) {
- prev_nominal_speed = plan_compute_profile_parameters(block, plan_compute_profile_nominal_speed(block), prev_nominal_speed);
- block = block->next;
- }
- pl.previous_nominal_speed = prev_nominal_speed; // Update prev nominal speed for next incoming block.
-}
-
static inline float limit_acceleration_by_axis_maximum (float *unit_vec)
{
uint_fast8_t idx = N_AXIS;
@@ -656,6 +643,25 @@ void plan_cycle_reinitialize (void)
planner_recalculate();
}
+// Re-calculates buffered motions profile parameters upon a motion-based override change.
+static bool plan_update_velocity_profile_parameters (void)
+{
+ if(block_buffer_tail != block_buffer_head) {
+
+ plan_block_t *block = block_buffer_tail;
+ float prev_nominal_speed = SOME_LARGE_VALUE; // Set high for first block nominal speed calculation.
+
+ while (block != block_buffer_head) {
+ prev_nominal_speed = plan_compute_profile_parameters(block, plan_compute_profile_nominal_speed(block), prev_nominal_speed);
+ block = block->next;
+ }
+
+ pl.previous_nominal_speed = prev_nominal_speed; // Update prev nominal speed for next incoming block.
+ }
+
+ return block_buffer_tail != block_buffer_head;
+}
+
// Set feed overrides
void plan_feed_override (override_t feed_override, override_t rapid_override)
{
@@ -666,13 +672,13 @@ void plan_feed_override (override_t feed_override, override_t rapid_override)
feed_override = constrain(feed_override, MIN_FEED_RATE_OVERRIDE, MAX_FEED_RATE_OVERRIDE);
- if ((feedrate_changed = feed_override != sys.override.feed_rate) ||
+ if((feedrate_changed = feed_override != sys.override.feed_rate) ||
(rapidrate_changed = rapid_override != sys.override.rapid_rate)) {
sys.override.feed_rate = feed_override;
sys.override.rapid_rate = rapid_override;
system_add_rt_report(Report_Overrides); // Set to report change immediately
- plan_update_velocity_profile_parameters();
- plan_cycle_reinitialize();
+ if(plan_update_velocity_profile_parameters())
+ plan_cycle_reinitialize();
if(grbl.on_override_changed) {
if(feedrate_changed)
grbl.on_override_changed(OverrideChanged_FeedRate);