X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=timer.c;h=21dda523c16f30f50c3215ecf975ad5d38d5dad6;hb=1a7c3585ed9a68099e371b3180a404dd5d08ce1a;hp=23663042c758b9b554d3d446b115cd7b4264174f;hpb=45d4a7a89883c3433604d4e011b665796a583008;p=max%2Ftmk_keyboard.git diff --git a/timer.c b/timer.c index 23663042..21dda523 100644 --- a/timer.c +++ b/timer.c @@ -3,7 +3,7 @@ #include #include "timer.h" -uint16_t timer_count = 0; +volatile uint16_t timer_count = 0; // Configure timer 0 to generate a timer overflow interrupt every // 256*1024 clock cycles, or approx 61 Hz when using 16 MHz clock @@ -19,20 +19,21 @@ void timer_init(void) inline void timer_clear(void) { + uint8_t sreg = SREG; cli(); timer_count = 0; - sei(); + SREG = sreg; } inline uint16_t timer_read(void) { - uint8_t _sreg = SREG; uint16_t t; + uint8_t sreg = SREG; cli(); t = timer_count; - SREG = _sreg; + SREG = sreg; return t; } @@ -40,12 +41,12 @@ uint16_t timer_read(void) inline uint16_t timer_elapsed(uint16_t last) { - uint8_t _sreg = SREG; uint16_t t; + uint8_t sreg = SREG; cli(); t = timer_count; - SREG = _sreg; + SREG = sreg; return TIMER_DIFF(t, last); } @@ -58,4 +59,3 @@ ISR(TIMER0_OVF_vect) { timer_count++; } -