summaryrefslogtreecommitdiff
path: root/avr
diff options
context:
space:
mode:
authorLeo C2016-04-15 17:26:42 +0200
committerLeo C2016-04-15 17:26:42 +0200
commit5730789084d22d229a87fa42fe55079c4bb35cd8 (patch)
tree70b37677ba20dc4d22ea55817531b0692c49a83d /avr
parenta1595a8e7fe2148c818aef75d454e9f5e0696f78 (diff)
downloadz180-stamp-5730789084d22d229a87fa42fe55079c4bb35cd8.zip
Use timer 4 instead of 3 for systick (1ms).
Diffstat (limited to 'avr')
-rw-r--r--avr/main.c8
-rw-r--r--avr/timer.c29
2 files changed, 10 insertions, 27 deletions
diff --git a/avr/main.c b/avr/main.c
index 2199454..0a1cab6 100644
--- a/avr/main.c
+++ b/avr/main.c
@@ -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;