From 89bb0ae3bb04395b5334a087e7cb712d45a648f7 Mon Sep 17 00:00:00 2001 From: Nico Tonnhofer Date: Sun, 2 Apr 2017 20:14:16 +0200 Subject: [PATCH] dda.c: resort calculation for high frequencies --- dda.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dda.c b/dda.c index 9052fd8..14aed0b 100644 --- a/dda.c +++ b/dda.c @@ -292,10 +292,14 @@ void dda_create(DDA *dda, const TARGET *target) { // 60 * 16 MHz * 5 mm is > 32 bits uint32_t move_duration, md_candidate; - move_duration = distance * ((60 * F_CPU) / (dda->endpoint.F * 1000UL)); + // md = um * (60s/min) * (ticks/s) / (1000um/mm) / (mm/min) + // = um * (mm/1000um) * (min/mm) * (60s/min) * (ticks/s) + // = (mm/1000) * ( /mm) * (60s) * (ticks/s) + // = (1/1000 ) * (60 * ticks ) + move_duration = distance * (60UL * (F_CPU / 1000) / dda->endpoint.F); for (i = X; i < AXIS_COUNT; i++) { - md_candidate = delta_um[i] * ((60 * F_CPU) / - (pgm_read_dword(&maximum_feedrate_P[i]) * 1000UL)); + md_candidate = delta_um[i] * (60UL * (F_CPU / 1000) / + pgm_read_dword(&maximum_feedrate_P[i])); if (md_candidate > move_duration) move_duration = md_candidate; }