#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; } ISR(TIMER0_COMPA_vect) { ++jiffies; if (--pattern_div == 0) { timer_check_buttons(); patterns_next_tick(); pattern_div = PATTERN_DIV; } timer_start_adcs(); }