From 05c5324fec93bf893863a2ba9f1703d049ddd0e8 Mon Sep 17 00:00:00 2001 From: Zappdidappdi Date: Mon, 17 Apr 2023 11:37:02 +0200 Subject: [PATCH] Fix for Linear Advance Bug April 2nd 2023 https://github.com/MarlinFirmware/Marlin/compare/bugfix-2.1.x...tombrazier:Marlin:lafreeze2 --- Marlin/src/module/stepper.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index ee3b567..d8f3554 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1503,7 +1503,7 @@ void Stepper::isr() { advance_isr(); nextAdvanceISR = la_interval; } - else if (nextAdvanceISR == LA_ADV_NEVER) // Start LA steps if necessary + else if (nextAdvanceISR > la_interval) // Start/accelerate LA steps if necessary nextAdvanceISR = la_interval; #endif @@ -2095,7 +2095,8 @@ hal_timer_t Stepper::calc_timer_interval(uint32_t step_rate) { #ifdef CPU_32_BIT // A fast processor can just do integer division - return step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX; + constexpr uint32_t min_step_rate = uint32_t(STEPPER_TIMER_RATE) / HAL_TIMER_TYPE_MAX; + return step_rate > min_step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX; #else