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);