#include #include #include "lights.h" volatile uint16_t jiffies; #define PATTERN_DIV 10 // clk/10 static unsigned char pattern_div; void init_tmr() { TCCR0A = _BV(WGM00); TCCR0B = _BV(CS02) | _BV(CS00); // CLK/1024 = 1 kHz OCR0A = 5; // 200 Hz TIMSK |= _BV(OCIE0A); jiffies = 0; pattern_div = PATTERN_DIV; } void susp_tmr() { TCCR0A = TCCR0B = 0; TIMSK &= ~_BV(OCIE0A); TIFR = 0; } ISR(TIMER0_COMPA_vect) { ++jiffies; pwm_timer(); if (--pattern_div == 0) { timer_check_buttons(); patterns_next_tick(); timer_start_slow_adcs(); pattern_div = PATTERN_DIV; } }