From c1a6c244b3ae269d64a01eb861b4ce9d6050b292 Mon Sep 17 00:00:00 2001 From: Markus Hitter Date: Sat, 26 Oct 2013 21:15:41 +0200 Subject: [PATCH] dda.c: re-gain look-ahead compatibility. We're here! Incredible high step rates as well as smooth movements due to look-ahead. --- dda.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/dda.c b/dda.c index c6af69e..11e7c01 100644 --- a/dda.c +++ b/dda.c @@ -344,11 +344,18 @@ void dda_create(DDA *dda, TARGET *target, DDA *prev_dda) { #ifdef LOOKAHEAD dda_join_moves(prev_dda, dda); + dda->n = ACCELERATE_RAMP_LEN(dda->F_start); + if (dda->n == 0) + dda->c = C0; + else + dda->c = ((C0 >> 8) * int_inv_sqrt(dda->n)) >> 5; + if (dda->c < dda->c_min) + dda->c = dda->c_min; + #else + dda->n = 0; + dda->c = C0; #endif - dda->n = 0; - dda->c = C0; - #elif defined ACCELERATION_TEMPORAL // TODO: limit speed of individual axes to MAXIMUM_FEEDRATE // TODO: calculate acceleration/deceleration for each axis @@ -659,9 +666,6 @@ void dda_step(DDA *dda) { movement direction 500 times a second is easily enough for smooth and accurate curves! */ -#ifdef LOOKAHEAD - #error Look-ahead currently not supported. Turn it off or use an earlier commit. -#endif void dda_clock() { static volatile uint8_t busy = 0; DDA *dda;