dda_queue.c: eliminate another local variable.
This shaves off another 3 clock cycles without drawback. It
increases binary size by 8 bytes, but apparently only in places
where it doesn't matter.
Performance:
ATmega sizes '168 '328(P) '644(P) '1280
Program: 19616 bytes 137% 64% 31% 16%
Data: 2175 bytes 213% 107% 54% 27%
EEPROM: 32 bytes 4% 2% 2% 1%
short-moves.gcode statistics:
LED on occurences: 888.
LED on time minimum: 280 clock cycles.
LED on time maximum: 545 clock cycles.
LED on time average: 286.187 clock cycles.
smooth-curves.gcode statistics:
LED on occurences: 23648.
LED on time minimum: 272 clock cycles.
LED on time maximum: 576 clock cycles.
LED on time average: 307.431 clock cycles.
triangle-odd.gcode statistics:
LED on occurences: 1636.
LED on time minimum: 272 clock cycles.
LED on time maximum: 535 clock cycles.
LED on time average: 297.724 clock cycles.
This commit is contained in:
parent
9fe3855c3e
commit
721649e8ef
11
dda_queue.c
11
dda_queue.c
|
|
@ -153,19 +153,18 @@ void enqueue_home(TARGET *t, uint8_t endstop_check, uint8_t endstop_stop_cond) {
|
||||||
/// timer interrupt is disabled).
|
/// timer interrupt is disabled).
|
||||||
void next_move() {
|
void next_move() {
|
||||||
while ((queue_empty() == 0) && (movebuffer[mb_tail].live == 0)) {
|
while ((queue_empty() == 0) && (movebuffer[mb_tail].live == 0)) {
|
||||||
// next item
|
|
||||||
mb_tail = MB_NEXT(mb_tail);
|
|
||||||
DDA* current_movebuffer = &movebuffer[mb_tail];
|
|
||||||
// Tail must be set before calling timer_set(), as timer_set() reenables
|
// Tail must be set before calling timer_set(), as timer_set() reenables
|
||||||
// the timer interrupt, potentially exposing mb_tail to the timer
|
// the timer interrupt, potentially exposing mb_tail to the timer
|
||||||
// interrupt routine.
|
// interrupt routine.
|
||||||
if (current_movebuffer->waitfor_temp) {
|
mb_tail = MB_NEXT(mb_tail);
|
||||||
|
|
||||||
|
if (movebuffer[mb_tail].waitfor_temp) {
|
||||||
serial_writestr_P(PSTR("Waiting for target temp\n"));
|
serial_writestr_P(PSTR("Waiting for target temp\n"));
|
||||||
current_movebuffer->live = 1;
|
movebuffer[mb_tail].live = 1;
|
||||||
timer_set(HEATER_WAIT_TIMEOUT, 0);
|
timer_set(HEATER_WAIT_TIMEOUT, 0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dda_start(current_movebuffer);
|
dda_start(&movebuffer[mb_tail]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue