dda.c: put code for ACCELERATION_TEMPORAL in dda_step() together.
Performance for ACCELERATION_RAMPING unchanged:
$ cd testcases
$ ./run-in-simulavr.sh short-moves.gcode smooth-curves.gcode triangle-odd.gcode
[...]
SIZES ATmega... '168 '328(P) '644(P) '1280
FLASH : 20518 bytes 144% 67% 33% 16%
RAM : 2188 bytes 214% 107% 54% 27%
EEPROM : 32 bytes 4% 2% 2% 1%
short-moves.gcode statistics:
LED on occurences: 838.
LED on time minimum: 302 clock cycles.
LED on time maximum: 713 clock cycles.
LED on time average: 308.72 clock cycles.
smooth-curves.gcode statistics:
LED on occurences: 8585.
LED on time minimum: 307 clock cycles.
LED on time maximum: 710 clock cycles.
LED on time average: 358.051 clock cycles.
triangle-odd.gcode statistics:
LED on occurences: 1636.
LED on time minimum: 302 clock cycles.
LED on time maximum: 708 clock cycles.
LED on time average: 330.322 clock cycles.
This commit is contained in:
parent
8b88334b06
commit
7dda91ab56
64
dda.c
64
dda.c
|
|
@ -565,16 +565,6 @@ void dda_step(DDA *dda) {
|
||||||
move_state.counter[X] += dda->total_steps;
|
move_state.counter[X] += dda->total_steps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // ACCELERATION_TEMPORAL
|
|
||||||
if (dda->axis_to_step == X) {
|
|
||||||
x_step();
|
|
||||||
move_state.steps[X]--;
|
|
||||||
move_state.time[X] += dda->step_interval[X];
|
|
||||||
move_state.last_time = move_state.time[X];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined ACCELERATION_TEMPORAL
|
|
||||||
if (move_state.steps[Y]) {
|
if (move_state.steps[Y]) {
|
||||||
move_state.counter[Y] -= dda->delta[Y];
|
move_state.counter[Y] -= dda->delta[Y];
|
||||||
if (move_state.counter[Y] < 0) {
|
if (move_state.counter[Y] < 0) {
|
||||||
|
|
@ -583,16 +573,6 @@ void dda_step(DDA *dda) {
|
||||||
move_state.counter[Y] += dda->total_steps;
|
move_state.counter[Y] += dda->total_steps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // ACCELERATION_TEMPORAL
|
|
||||||
if (dda->axis_to_step == Y) {
|
|
||||||
y_step();
|
|
||||||
move_state.steps[Y]--;
|
|
||||||
move_state.time[Y] += dda->step_interval[Y];
|
|
||||||
move_state.last_time = move_state.time[Y];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined ACCELERATION_TEMPORAL
|
|
||||||
if (move_state.steps[Z]) {
|
if (move_state.steps[Z]) {
|
||||||
move_state.counter[Z] -= dda->delta[Z];
|
move_state.counter[Z] -= dda->delta[Z];
|
||||||
if (move_state.counter[Z] < 0) {
|
if (move_state.counter[Z] < 0) {
|
||||||
|
|
@ -601,16 +581,6 @@ void dda_step(DDA *dda) {
|
||||||
move_state.counter[Z] += dda->total_steps;
|
move_state.counter[Z] += dda->total_steps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // ACCELERATION_TEMPORAL
|
|
||||||
if (dda->axis_to_step == Z) {
|
|
||||||
z_step();
|
|
||||||
move_state.steps[Z]--;
|
|
||||||
move_state.time[Z] += dda->step_interval[Z];
|
|
||||||
move_state.last_time = move_state.time[Z];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! defined ACCELERATION_TEMPORAL
|
|
||||||
if (move_state.steps[E]) {
|
if (move_state.steps[E]) {
|
||||||
move_state.counter[E] -= dda->delta[E];
|
move_state.counter[E] -= dda->delta[E];
|
||||||
if (move_state.counter[E] < 0) {
|
if (move_state.counter[E] < 0) {
|
||||||
|
|
@ -619,13 +589,6 @@ void dda_step(DDA *dda) {
|
||||||
move_state.counter[E] += dda->total_steps;
|
move_state.counter[E] += dda->total_steps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // ACCELERATION_TEMPORAL
|
|
||||||
if (dda->axis_to_step == E) {
|
|
||||||
e_step();
|
|
||||||
move_state.steps[E]--;
|
|
||||||
move_state.time[E] += dda->step_interval[E];
|
|
||||||
move_state.last_time = move_state.time[E];
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ACCELERATION_REPRAP
|
#ifdef ACCELERATION_REPRAP
|
||||||
|
|
@ -680,10 +643,35 @@ void dda_step(DDA *dda) {
|
||||||
timer shall do the step as soon as possible and compensate for the delay
|
timer shall do the step as soon as possible and compensate for the delay
|
||||||
later. In turn we promise here to send a maximum of four such
|
later. In turn we promise here to send a maximum of four such
|
||||||
short-delays consecutively and to give sufficient time on average.
|
short-delays consecutively and to give sufficient time on average.
|
||||||
*/
|
*/
|
||||||
uint32_t c_candidate;
|
uint32_t c_candidate;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
|
if (dda->axis_to_step == X) {
|
||||||
|
x_step();
|
||||||
|
move_state.steps[X]--;
|
||||||
|
move_state.time[X] += dda->step_interval[X];
|
||||||
|
move_state.last_time = move_state.time[X];
|
||||||
|
}
|
||||||
|
if (dda->axis_to_step == Y) {
|
||||||
|
y_step();
|
||||||
|
move_state.steps[Y]--;
|
||||||
|
move_state.time[Y] += dda->step_interval[Y];
|
||||||
|
move_state.last_time = move_state.time[Y];
|
||||||
|
}
|
||||||
|
if (dda->axis_to_step == Z) {
|
||||||
|
z_step();
|
||||||
|
move_state.steps[Z]--;
|
||||||
|
move_state.time[Z] += dda->step_interval[Z];
|
||||||
|
move_state.last_time = move_state.time[Z];
|
||||||
|
}
|
||||||
|
if (dda->axis_to_step == E) {
|
||||||
|
e_step();
|
||||||
|
move_state.steps[E]--;
|
||||||
|
move_state.time[E] += dda->step_interval[E];
|
||||||
|
move_state.last_time = move_state.time[E];
|
||||||
|
}
|
||||||
|
|
||||||
dda->c = 0xFFFFFFFF;
|
dda->c = 0xFFFFFFFF;
|
||||||
for (i = X; i < AXIS_COUNT; i++) {
|
for (i = X; i < AXIS_COUNT; i++) {
|
||||||
if (move_state.steps[i]) {
|
if (move_state.steps[i]) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue