From bb24627242f12b95282518dcc53c456ae30b482f Mon Sep 17 00:00:00 2001 From: Markus Hitter Date: Sun, 12 Oct 2014 23:38:27 +0200 Subject: [PATCH] dda.c: file attempt to use sign of dda->delta_um[] to set direction. --- ...o-use-sign-of-dda-delta_um-to-set-di.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 attic/dda.c-attempts-to-use-sign-of-dda-delta_um-to-set-di.patch diff --git a/attic/dda.c-attempts-to-use-sign-of-dda-delta_um-to-set-di.patch b/attic/dda.c-attempts-to-use-sign-of-dda-delta_um-to-set-di.patch new file mode 100644 index 0000000..bf7aee4 --- /dev/null +++ b/attic/dda.c-attempts-to-use-sign-of-dda-delta_um-to-set-di.patch @@ -0,0 +1,49 @@ +From c8e28f3ff9b72eace20cce851d77a6de5e995c69 Mon Sep 17 00:00:00 2001 +From: Markus Hitter +Date: Sun, 12 Oct 2014 23:17:48 +0200 +Subject: [PATCH] dda.c: attempts to use sign of dda->delta_um[] to set + direction. + +At that point we stored movement distance in steps signed in +dda->delta_um[] as well as unsigned in dda->delta[] plus its +sign in dda->{xyze}_direction. That's obvously redundant, so +the try was to get rid of the redundancy. + +However, dda_start() is the most time critical part when using +look-ahead, so this attemt was dropped. Next attempt will be to +use dda->{xyze}_direction in dda_find_crossing_speed(), the only +usage of the dda->delta_um[]. +--- + dda.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/dda.c b/dda.c +index 8d53256..195e472 100644 +--- a/dda.c ++++ b/dda.c +@@ -468,7 +468,21 @@ void dda_start(DDA *dda) { + endstops_on(); + + // set direction outputs +- x_direction(dda->x_direction); ++ // This is the fastest one. ++ x_direction(dda->x_direction); // 20164 bytes ++ // Costs 14 additional CPU clock cycles. ++ //x_direction(dda->delta_um[X] < 0 ? 1 : 0); // 20184 bytes ++ // Costs 12 additional CPU clock cycles. ++ //x_direction(dda->delta_um[X] >> (sizeof(int32_t) * 8 - 1)); // 20178 bytes ++ // Costs 14 additional CPU clock cycles. ++ //x_direction(dda->delta_um[X] > 0); // 20184 bytes ++ // Costs 12 additional CPU clock cycles. ++ //x_direction(dda->delta_um[X] < 0); // 20178 bytes ++ // Costs 5 additional CPU clock cycles. ++ //x_direction( ! ((*((uint8_t *)(&dda->delta_um[X]) + 3)) & 0x80)); // 20172 bytes ++ // Check just the last byte, that's smaller and faster. ++ // Costs 6 additional CPU clock cycles. ++ //x_direction((*((uint8_t *)(&dda->delta_um[X]) + 3)) > 0); // 20172 bytes + y_direction(dda->y_direction); + z_direction(dda->z_direction); + e_direction(dda->e_direction); +-- +2.1.0 +