dda.c: add some TODOs about duplicate and redundant code.
This commit is contained in:
parent
69e0b0d15e
commit
9fe9c919a4
8
dda.c
8
dda.c
|
|
@ -205,11 +205,19 @@ void dda_create(DDA *dda, TARGET *target) {
|
||||||
// just signedness and storage location. Ideally, dda is used
|
// just signedness and storage location. Ideally, dda is used
|
||||||
// as storage place only if neccessary (LOOKAHEAD turned on?)
|
// as storage place only if neccessary (LOOKAHEAD turned on?)
|
||||||
// because this space is multiplied by the movement queue size.
|
// because this space is multiplied by the movement queue size.
|
||||||
|
//
|
||||||
|
// Update 2014/10: it was tried to use delta_um[]'s sign to set stepper
|
||||||
|
// direction in dda_start() to allow getting rid of
|
||||||
|
// some of this redundancy, but this increases dda_start()
|
||||||
|
// by at least 20 clock cycles. Not good for performance.
|
||||||
|
// Tried code can be found in the archive folder.
|
||||||
dda->delta_um[i] = (delta_steps >= 0) ?
|
dda->delta_um[i] = (delta_steps >= 0) ?
|
||||||
(int32_t)delta_um[i] : -(int32_t)delta_um[i];
|
(int32_t)delta_um[i] : -(int32_t)delta_um[i];
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: this can likely be, at least partially, joined with the above for()
|
||||||
|
// loop. Lots of almost-duplicate code.
|
||||||
if ( ! target->e_relative) {
|
if ( ! target->e_relative) {
|
||||||
int32_t delta_steps;
|
int32_t delta_steps;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,12 @@ void dda_find_crossing_speed(DDA *prev, DDA *current) {
|
||||||
prev->distance, current->distance);
|
prev->distance, current->distance);
|
||||||
|
|
||||||
// Find individual axis speeds.
|
// Find individual axis speeds.
|
||||||
|
// TODO: this is eight expensive muldiv()s. It should be possible to store
|
||||||
|
// currF as prevF for the next calculation somehow, to save 4 of
|
||||||
|
// these 8 muldiv()s. This would also allow to get rid of
|
||||||
|
// dda->delta_um[] and using delta_um[] from dda_create() instead.
|
||||||
|
// Caveat: bail out condition above and some other non-continuous
|
||||||
|
// situations might need some extra code for handling.
|
||||||
for (i = X; i < AXIS_COUNT; i++) {
|
for (i = X; i < AXIS_COUNT; i++) {
|
||||||
prevF[i] = muldiv(prev->delta_um[i], F, prev->distance);
|
prevF[i] = muldiv(prev->delta_um[i], F, prev->distance);
|
||||||
currF[i] = muldiv(current->delta_um[i], F, current->distance);
|
currF[i] = muldiv(current->delta_um[i], F, current->distance);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue