Skip to content

Commit

Permalink
Patch LIN_ADVANCE timing issue
Browse files Browse the repository at this point in the history
Also the extruder stepper ISR has to keep an eye on step_loops count.
  • Loading branch information
Sebastianv650 authored and thinkyhead committed Jun 23, 2016
1 parent f30df89 commit 0c5192b
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions Marlin/stepper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ void Stepper::isr() {
#endif // ADVANCE or LIN_ADVANCE

#if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE)
eISR_Rate = (timer >> 2) / abs(e_steps[current_block->active_extruder]);
eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[current_block->active_extruder]);
#endif
}
else if (step_events_completed > (unsigned long)current_block->decelerate_after) {
Expand Down Expand Up @@ -487,7 +487,7 @@ void Stepper::isr() {
#endif // ADVANCE or LIN_ADVANCE

#if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE)
eISR_Rate = (timer >> 2) / abs(e_steps[current_block->active_extruder]);
eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[current_block->active_extruder]);
#endif
}
else {
Expand All @@ -497,7 +497,7 @@ void Stepper::isr() {
if (current_block->use_advance_lead)
current_estep_rate[current_block->active_extruder] = final_estep_rate;

eISR_Rate = (OCR1A_nominal >> 2) / abs(e_steps[current_block->active_extruder]);
eISR_Rate = (OCR1A_nominal >> 2) * step_loops_nominal / abs(e_steps[current_block->active_extruder]);

#endif

Expand Down Expand Up @@ -542,16 +542,18 @@ void Stepper::isr() {
}

// Step all E steppers that have steps
STEP_E_ONCE(0);
#if EXTRUDERS > 1
STEP_E_ONCE(1);
#if EXTRUDERS > 2
STEP_E_ONCE(2);
#if EXTRUDERS > 3
STEP_E_ONCE(3);
for (uint8_t i = 0; i < step_loops; i++) {
STEP_E_ONCE(0);
#if EXTRUDERS > 1
STEP_E_ONCE(1);
#if EXTRUDERS > 2
STEP_E_ONCE(2);
#if EXTRUDERS > 3
STEP_E_ONCE(3);
#endif
#endif
#endif
#endif
}

}

Expand Down

0 comments on commit 0c5192b

Please sign in to comment.