diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-03-29 13:01:35 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-03-30 10:57:35 -0400 |
commit | 2b735daae5fb5e2d0ae0cadd4da8b2715989d6d2 (patch) | |
tree | e0c76ccced7fe47523df182c026abad9a0ff0464 /src/avr/timer.c | |
parent | f8b0c884b0baf7743dd9ebd02e933a754f0a8478 (diff) | |
download | kutter-2b735daae5fb5e2d0ae0cadd4da8b2715989d6d2.tar.gz kutter-2b735daae5fb5e2d0ae0cadd4da8b2715989d6d2.tar.xz kutter-2b735daae5fb5e2d0ae0cadd4da8b2715989d6d2.zip |
timer: Make sure to reset the timer repeat checks on a shutdown
Reset the timer repeat checks on shutdown, otherwise it is possible to
get into an infinite shutdown loop.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/avr/timer.c')
-rw-r--r-- | src/avr/timer.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/avr/timer.c b/src/avr/timer.c index 588669c1..e9ec8dd0 100644 --- a/src/avr/timer.c +++ b/src/avr/timer.c @@ -95,15 +95,6 @@ timer_init(void) } DECL_INIT(timer_init); -static void -timer_shutdown(void) -{ - // Reenable timer irq - timer_set(timer_get() + 50); - TIFR1 = 1<<OCF1A; -} -DECL_SHUTDOWN(timer_shutdown); - /**************************************************************** * 32bit timer wrappers @@ -208,3 +199,13 @@ timer_task(void) irq_enable(); } DECL_TASK(timer_task); + +static void +timer_shutdown(void) +{ + // Reenable timer irq + timer_set(timer_get() + 50); + TIFR1 = 1<<OCF1A; + timer_repeat_set(timer_get() + TIMER_IDLE_REPEAT_TICKS); +} +DECL_SHUTDOWN(timer_shutdown); |