diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp index 7bf50e557f..3cca0516ff 100644 --- a/Marlin/src/module/stepper.cpp +++ b/Marlin/src/module/stepper.cpp @@ -1578,7 +1578,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 @@ -2169,7 +2169,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