diff --git a/dda.c b/dda.c index 9ca1fe6..15f13e2 100644 --- a/dda.c +++ b/dda.c @@ -482,7 +482,6 @@ void dda_create(DDA *dda, const TARGET *target) { } /*! Start a prepared DDA - \param *dda pointer to entry in dda_queue to start This function actually begins the move described by the passed DDA entry. @@ -492,8 +491,8 @@ void dda_create(DDA *dda, const TARGET *target) { Called both inside and outside of interrupts. */ -void dda_start(DDA *dda) { - // called from interrupt context: keep it simple! +void dda_start() { + DDA *dda = mb_tail_dda; if (DEBUG_DDA && (debug_flags & DEBUG_DDA)) sersendf_P(PSTR("Start: X %lq Y %lq Z %lq F %lu\n"), diff --git a/dda.h b/dda.h index 48edefe..49c7c0b 100644 --- a/dda.h +++ b/dda.h @@ -187,7 +187,7 @@ void dda_new_startpoint(void); void dda_create(DDA *dda, const TARGET *target); // start a created DDA (called from timer interrupt) -void dda_start(DDA *dda); +void dda_start(void); // DDA takes one step (called from timer interrupt) void dda_step(DDA *dda); diff --git a/dda_queue.c b/dda_queue.c index 7f987c5..4db4f12 100644 --- a/dda_queue.c +++ b/dda_queue.c @@ -71,7 +71,7 @@ void queue_step() { if (mb_tail != mb_head) { mb_tail = MB_NEXT(mb_tail); mb_tail_dda = &(movebuffer[mb_tail]); - dda_start(mb_tail_dda); + dda_start(); } else { mb_tail_dda = NULL; @@ -123,7 +123,7 @@ void enqueue_home(TARGET *t, uint8_t endstop_check, uint8_t endstop_stop_cond) { timer_reset(); mb_tail = mb_head; // Valid ONLY if the queue was empty before! mb_tail_dda = new_movebuffer; // Dito! - dda_start(mb_tail_dda); + dda_start(); // Compensate for the cli() in timer_set(). sei(); }