Skip to content

Commit

Permalink
Fix incorrect precedence for retraction phase
Browse files Browse the repository at this point in the history
The logic was inverted, causing the fastest isr to always retract
instead of counter-balance the acceleration properly.
  • Loading branch information
wavexx committed Jul 16, 2020
1 parent c08f37d commit fb5f09d
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions Firmware/stepper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -883,13 +883,13 @@ FORCE_INLINE void isr() {
advance_spread(main_Rate);
if (LA_phase >= 0) {
if (step_loops == e_step_loops)
LA_phase = (current_block->advance_rate > main_Rate);
LA_phase = (current_block->advance_rate < main_Rate);
else {
// avoid overflow through division. warning: we need to _guarantee_ step_loops
// and e_step_loops are <= 4 due to fastdiv's limit
auto adv_rate_n = fastdiv(current_block->advance_rate, step_loops);
auto main_rate_n = fastdiv(main_Rate, e_step_loops);
LA_phase = (adv_rate_n > main_rate_n);
LA_phase = (adv_rate_n < main_rate_n);
}
}
}
Expand Down

0 comments on commit fb5f09d

Please sign in to comment.