Testing and setting the delay to a minimum value needs to occur only

if delay is not zero, otherwise the timer is not turned off when it
should be. Move the test and setting back inside the block that is only
executed if delay > 0.
This commit is contained in:
Jim McGee 2011-05-14 23:10:05 -07:00 committed by Michael Moon
parent 408718d2bb
commit f555887eb5
1 changed files with 6 additions and 6 deletions

12
timer.c
View File

@ -135,12 +135,6 @@ void timer_init()
/// specify how long until the step timer should fire /// specify how long until the step timer should fire
void setTimer(uint32_t delay) void setTimer(uint32_t delay)
{ {
// if the delay is too small use a minimum delay so that there is time
// to set everything up before the timer expires.
if (delay < 17 )
delay = 17;
// save interrupt flag // save interrupt flag
uint8_t sreg = SREG; uint8_t sreg = SREG;
uint16_t step_start = 0; uint16_t step_start = 0;
@ -154,6 +148,12 @@ void setTimer(uint32_t delay)
if (delay > 0) { if (delay > 0) {
// if the delay is too small use a minimum delay so that there is time
// to set everything up before the timer expires.
if (delay < 17 )
delay = 17;
// Assume all steps belong to one move. Within one move the delay is // Assume all steps belong to one move. Within one move the delay is
// from one step to the next one, which should be more or less the same // from one step to the next one, which should be more or less the same
// as from one step interrupt to the next one. The last step interrupt happend // as from one step interrupt to the next one. The last step interrupt happend