X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=bike-lights.git;a=blobdiff_plain;f=firmware%2Ftmr.c;h=5a94f9a40789c6fb0ddce0dd41b6ea6030135080;hp=5a4403797f1db1fb29af62faaae90ce386ebe84f;hb=HEAD;hpb=f956c1fa7f47b0e8b8afe323c2eff1b6c2607c2a diff --git a/firmware/tmr.c b/firmware/tmr.c index 5a44037..77e1153 100644 --- a/firmware/tmr.c +++ b/firmware/tmr.c @@ -1,33 +1,24 @@ #include #include +#include #include "lights.h" volatile uint16_t jiffies; -#define PATTERN_DIV 5 // clk/10 -static unsigned char pattern_div; void init_tmr() { - TCCR0A = _BV(WGM00); - TCCR0B = _BV(CS02) | _BV(CS00); // CLK/1024 = 1 kHz - OCR0A = 10; // 100 Hz - TIMSK |= _BV(OCIE0A); - - jiffies = 0; - pattern_div = PATTERN_DIV; + wdt_enable(WDTO_60MS); + WDTCR |= _BV(WDIE); // interrupt mode, 64 ms } -ISR(TIMER0_COMPA_vect) +void susp_tmr() { - ++jiffies; - - if (--pattern_div == 0) { - timer_check_buttons(); - patterns_next_tick(); - pattern_div = PATTERN_DIV; - } + wdt_disable(); +} - timer_start_adcs(); +ISR(WDT_vect) { + WDTCR |= _BV(WDIE); // avoid WDT reset next time + ++jiffies; }