diff --git a/dda.c b/dda.c index a3b8aab..a7ec783 100644 --- a/dda.c +++ b/dda.c @@ -482,78 +482,26 @@ void dda_start(DDA *dda) { Finally we de-assert any asserted step pins. */ void dda_step(DDA *dda) { + enum axis_e i; -#if ! defined ACCELERATION_TEMPORAL - if (move_state.steps[X]) { - move_state.counter[X] -= dda->delta[X]; - if (move_state.counter[X] < 0) { - x_step(); - move_state.steps[X]--; - move_state.counter[X] += dda->total_steps; - } - } -#else // ACCELERATION_TEMPORAL - if (dda->axis_to_step == X) { - x_step(); - move_state.steps[X]--; - move_state.time[X] += dda->step_interval[X]; - move_state.all_time = move_state.time[X]; - } -#endif - -#if ! defined ACCELERATION_TEMPORAL - if (move_state.steps[Y]) { - move_state.counter[Y] -= dda->delta[Y]; - if (move_state.counter[Y] < 0) { - y_step(); - move_state.steps[Y]--; - move_state.counter[Y] += dda->total_steps; - } - } -#else // ACCELERATION_TEMPORAL - if (dda->axis_to_step == Y) { - y_step(); - move_state.steps[Y]--; - move_state.time[Y] += dda->step_interval[Y]; - move_state.all_time = move_state.time[Y]; - } -#endif - -#if ! defined ACCELERATION_TEMPORAL - if (move_state.steps[Z]) { - move_state.counter[Z] -= dda->delta[Z]; - if (move_state.counter[Z] < 0) { - z_step(); - move_state.steps[Z]--; - move_state.counter[Z] += dda->total_steps; - } - } -#else // ACCELERATION_TEMPORAL - if (dda->axis_to_step == Z) { - z_step(); - move_state.steps[Z]--; - move_state.time[Z] += dda->step_interval[Z]; - move_state.all_time = move_state.time[Z]; - } -#endif - -#if ! defined ACCELERATION_TEMPORAL - if (move_state.steps[E]) { - move_state.counter[E] -= dda->delta[E]; - if (move_state.counter[E] < 0) { - e_step(); - move_state.steps[E]--; - move_state.counter[E] += dda->total_steps; - } - } -#else // ACCELERATION_TEMPORAL - if (dda->axis_to_step == E) { - e_step(); - move_state.steps[E]--; - move_state.time[E] += dda->step_interval[E]; - move_state.all_time = move_state.time[E]; - } -#endif + #if ! defined ACCELERATION_TEMPORAL + for (i = X; i < AXIS_COUNT; i++) { + if (move_state.steps[i]) { + move_state.counter[i] -= dda->delta[i]; + if (move_state.counter[i] < 0) { + do_step(i); + move_state.steps[i]--; + move_state.counter[i] += dda->total_steps; + } + } + } + #else // ACCELERATION_TEMPORAL + i = dda->axis_to_step; + do_step(i); + move_state.steps[i]--; + move_state.time[i] += dda->step_interval[i]; + move_state.all_time = move_state.time[i]; + #endif #if STEP_INTERRUPT_INTERRUPTIBLE && ! defined ACCELERATION_RAMPING // Since we have sent steps to all the motors that will be stepping diff --git a/pinio.c b/pinio.c index e27222b..7f22062 100644 --- a/pinio.c +++ b/pinio.c @@ -42,3 +42,16 @@ void power_off() { ps_is_on = 0; } + +// step the 'n' axis +void do_step(enum axis_e n) { + if (n == X) + x_step(); + else if (n == Y) + y_step(); + else if (n == Z) + z_step(); + else if (n == E) + e_step(); +} + diff --git a/pinio.h b/pinio.h index 028fe80..60b5daa 100644 --- a/pinio.h +++ b/pinio.h @@ -6,6 +6,7 @@ #define _PINIO_H #include "config_wrapper.h" +#include "dda.h" #ifdef SIMULATOR #include "simulator.h" @@ -33,6 +34,8 @@ inline void power_init(void) { void power_on(void); void power_off(void); +void do_step(enum axis_e n); + /* X Stepper */