Browse Source

Merge pull request #4754 from thinkyhead/rc_mixing_regression

Unify counter_m and counter_M
pull/1/head
Scott Lahteine 8 years ago
committed by GitHub
parent
commit
6f71bd7372
  1. 22
      Marlin/stepper.cpp
  2. 2
      Marlin/stepper.h

22
Marlin/stepper.cpp

@ -115,7 +115,7 @@ volatile long Stepper::count_position[NUM_AXIS] = { 0 };
volatile signed char Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 }; volatile signed char Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
long Stepper::counter_M[MIXING_STEPPERS]; long Stepper::counter_m[MIXING_STEPPERS];
#endif #endif
unsigned short Stepper::acc_step_rate; // needed for deceleration start point unsigned short Stepper::acc_step_rate; // needed for deceleration start point
@ -340,7 +340,7 @@ void Stepper::isr() {
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
MIXING_STEPPERS_LOOP(i) MIXING_STEPPERS_LOOP(i)
counter_M[i] = -(current_block->mix_event_count[i] >> 1); counter_m[i] = -(current_block->mix_event_count[i] >> 1);
#endif #endif
step_events_completed = 0; step_events_completed = 0;
@ -392,12 +392,12 @@ void Stepper::isr() {
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
// Step mixing steppers proportionally // Step mixing steppers proportionally
long dir = motor_direction(E_AXIS) ? -1 : 1; bool dir = motor_direction(E_AXIS);
MIXING_STEPPERS_LOOP(j) { MIXING_STEPPERS_LOOP(j) {
counter_m[j] += current_block->steps[E_AXIS]; counter_m[j] += current_block->steps[E_AXIS];
if (counter_m[j] > 0) { if (counter_m[j] > 0) {
counter_m[j] -= current_block->mix_event_count[j]; counter_m[j] -= current_block->mix_event_count[j];
e_steps[j] += dir; dir ? --e_steps[j] : ++e_steps[j];
} }
} }
#endif #endif
@ -433,12 +433,12 @@ void Stepper::isr() {
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
// Step mixing steppers proportionally // Step mixing steppers proportionally
long dir = motor_direction(E_AXIS) ? -1 : 1; bool dir = motor_direction(E_AXIS);
MIXING_STEPPERS_LOOP(j) { MIXING_STEPPERS_LOOP(j) {
counter_m[j] += current_block->steps[E_AXIS]; counter_m[j] += current_block->steps[E_AXIS];
if (counter_m[j] > 0) { if (counter_m[j] > 0) {
counter_m[j] -= current_block->mix_event_count[j]; counter_m[j] -= current_block->mix_event_count[j];
e_steps[j] += dir; dir ? --e_steps[j] : ++e_steps[j];
} }
} }
@ -487,9 +487,9 @@ void Stepper::isr() {
// Tick the counters used for this mix // Tick the counters used for this mix
MIXING_STEPPERS_LOOP(j) { MIXING_STEPPERS_LOOP(j) {
// Step mixing steppers (proportionally) // Step mixing steppers (proportionally)
counter_M[j] += current_block->steps[E_AXIS]; counter_m[j] += current_block->steps[E_AXIS];
// Step when the counter goes over zero // Step when the counter goes over zero
if (counter_M[j] > 0) En_STEP_WRITE(j, !INVERT_E_STEP_PIN); if (counter_m[j] > 0) En_STEP_WRITE(j, !INVERT_E_STEP_PIN);
} }
#else // !MIXING_EXTRUDER #else // !MIXING_EXTRUDER
PULSE_START(E); PULSE_START(E);
@ -520,8 +520,8 @@ void Stepper::isr() {
count_position[E_AXIS] += count_direction[E_AXIS]; count_position[E_AXIS] += count_direction[E_AXIS];
} }
MIXING_STEPPERS_LOOP(j) { MIXING_STEPPERS_LOOP(j) {
if (counter_M[j] > 0) { if (counter_m[j] > 0) {
counter_M[j] -= current_block->mix_event_count[j]; counter_m[j] -= current_block->mix_event_count[j];
En_STEP_WRITE(j, INVERT_E_STEP_PIN); En_STEP_WRITE(j, INVERT_E_STEP_PIN);
} }
} }
@ -691,7 +691,7 @@ void Stepper::isr() {
#define STOP_E_PULSE(INDEX) \ #define STOP_E_PULSE(INDEX) \
if (e_steps[INDEX]) { \ if (e_steps[INDEX]) { \
e_steps[INDEX] < 0 ? ++e_steps[INDEX] : --e_steps[INDEX]; \ e_steps[INDEX] <= 0 ? ++e_steps[INDEX] : --e_steps[INDEX]; \
E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN); \ E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN); \
} }

2
Marlin/stepper.h

@ -152,7 +152,7 @@ class Stepper {
// Mixing extruder mix counters // Mixing extruder mix counters
// //
#if ENABLED(MIXING_EXTRUDER) #if ENABLED(MIXING_EXTRUDER)
static long counter_M[MIXING_STEPPERS]; static long counter_m[MIXING_STEPPERS];
#define MIXING_STEPPERS_LOOP(VAR) \ #define MIXING_STEPPERS_LOOP(VAR) \
for (uint8_t VAR = 0; VAR < MIXING_STEPPERS; VAR++) \ for (uint8_t VAR = 0; VAR < MIXING_STEPPERS; VAR++) \
if (current_block->mix_event_count[VAR]) if (current_block->mix_event_count[VAR])

Loading…
Cancel
Save