#include <stdint.h>
#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
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;
}
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);
}
{
timer_count++;
}
-