X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=timer.c;h=48a38c9b68211116c75b948c21bd9fe3e444a1cc;hb=e157aa7f91814864a75ecdb84188a443d63acc86;hp=21dda523c16f30f50c3215ecf975ad5d38d5dad6;hpb=4f5f1a53d449172263e83c5769c92976e0d3332e;p=max%2Ftmk_keyboard.git diff --git a/timer.c b/timer.c index 21dda523..48a38c9b 100644 --- a/timer.c +++ b/timer.c @@ -1,19 +1,50 @@ +/* +Copyright 2011 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #include #include #include #include "timer.h" + +// counter resolution 1ms 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 -// This demonstrates how to use interrupts to implement a simple -// inactivity timeout. void timer_init(void) { - TCCR0A = 0x00; + // Timer0 CTC mode + TCCR0A = 0x02; + +#if TIMER_PRESCALER == 1 + TCCR0B = 0x01; +#elif TIMER_PRESCALER == 8 + TCCR0B = 0x02; +#elif TIMER_PRESCALER == 64 + TCCR0B = 0x03; +#elif TIMER_PRESCALER == 256 + TCCR0B = 0x04; +#elif TIMER_PRESCALER == 1024 TCCR0B = 0x05; - TIMSK0 = (1<