X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=timer.c;h=48a38c9b68211116c75b948c21bd9fe3e444a1cc;hb=e67c988824f5ec0c965beb412f8ee5953dfd3c8c;hp=23663042c758b9b554d3d446b115cd7b4264174f;hpb=45d4a7a89883c3433604d4e011b665796a583008;p=max%2Ftmk_keyboard.git diff --git a/timer.c b/timer.c index 23663042..48a38c9b 100644 --- a/timer.c +++ b/timer.c @@ -1,38 +1,70 @@ +/* +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" -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. +// counter resolution 1ms +volatile uint16_t timer_count = 0; + 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<