diff options
Diffstat (limited to 'avr')
-rw-r--r-- | avr/main.c | 8 | ||||
-rw-r--r-- | avr/timer.c | 29 |
2 files changed, 10 insertions, 27 deletions
@@ -115,10 +115,10 @@ void setup_avr(void) CLKPR = 0; /* Timer */ - PRR1 &= ~_BV(PRTIM3); - OCR3A = F_CPU / 1000 - 1; /* Timer3: 1000Hz interval (OC3A) */ - TCCR3B = (0b01<<WGM32)|(0b001<<CS30); /* CTC Mode, Prescaler 1 */ - TIMSK3 = _BV(OCIE3A); /* Enable TC2.oca interrupt */ + PRR1 &= ~_BV(PRTIM4); + OCR4A = F_CPU / 1000 - 1; /* Timer4: 1000Hz interval */ + TCCR4B = (0b00<<WGM42)|(0b001<<CS40); /* Normal Mode, Prescaler 1 */ + TIMSK4 = _BV(OCIE4A); /* Enable Output Compare A interrupt */ /* INT5, INT6: falling edge */ EICRB = (EICRB & ~((0b11 << ISC50) | (0b11 << ISC60))) | diff --git a/avr/timer.c b/avr/timer.c index f45f267..1b15985 100644 --- a/avr/timer.c +++ b/avr/timer.c @@ -1,14 +1,13 @@ /* * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de> * - * SPDX-License-Identifier: GPL-2.0+ + * SPDX-License-Identifier: GPL-2.0 */ -#include "common.h" +#include "timer.h" #include <avr/interrupt.h> #include <util/atomic.h> #include "time.h" -#include "timer.h" /* timer interrupt/overflow counter */ /* counts up every ms. */ @@ -16,9 +15,9 @@ static volatile uint32_t timestamp; /* - * 1000Hz timer interrupt generated by OC3A + * 1000Hz timer interrupt generated by OC4A */ -ISR(TIMER3_COMPA_vect) +ISR(TIMER4_COMPA_vect) { static int_fast8_t tick_10ms; static int_fast8_t tick_1s; @@ -26,6 +25,8 @@ ISR(TIMER3_COMPA_vect) extern void disk_timerproc(void); + OCR4A += F_CPU / 1000; /* 1000Hz interval */ + timestamp++; i = tick_10ms + 1; @@ -49,24 +50,6 @@ ISR(TIMER3_COMPA_vect) /*--------------------------------------------------------------------------*/ -#if 0 -void timer_setup(void) -{ - - /* Clock */ - CLKPR = _BV(CLKPCE); - CLKPR = 0; - - /* Timer */ - - OCR1A = F_CPU / 1000 - 1; // Timer1: 1000Hz interval (OC1A) - TCCR1B = 0b00001001; - TIMSK1 = _BV(OCIE1A); // Enable TC1.oca interrupt -} -#endif - -/*--------------------------------------------------------------------------*/ - uint32_t get_timer(uint32_t base) { uint32_t ret; |