MCUCR = _BV(JTD);
MCUCR = _BV(JTD);
- /* disable unused periphels */
- PRR0 = _BV(PRTIM2) | _BV(PRTIM0) | _BV(PRADC);
+ /* disable unused peripherals */
+ PRR0 = _BV(PRTIM0) | _BV(PRADC);
PRR1 = _BV(PRTIM5) | _BV(PRTIM4) | _BV(PRTIM3) |
_BV(PRUSART3) | _BV(PRUSART2) | _BV(PRUSART1);
/* Timer */
- OCR1A = F_CPU / 8 / 1000 - 1; // Timer1: 1000Hz interval (OC1A)
- TCCR1B = 0b00001010;
- TIMSK1 = _BV(OCIE1A); // Enable TC1.oca interrupt
+ OCR2A = F_CPU / 256 / 1000 - 1; /* Timer2: 1000Hz interval (OC2A) */
+ TCCR2A = (0b10 << WGM20); /* CTC Mode */
+ TCCR2B = (0b110 << CS20); /* Prescaler 256 */
+ TIMSK2 = _BV(OCIE2A); /* Enable TC2.oca interrupt */
}
static
#include "timer.h"
/* timer interrupt/overflow counter */
-static volatile uint32_t timestamp;
+volatile uint32_t timestamp;
/*---------------------------------------------------------*/
-/* 1000Hz timer interrupt generated by OC1A */
+/* 1000Hz timer interrupt generated by OC2A */
/*---------------------------------------------------------*/
-ISR(TIMER1_COMPA_vect)
+ISR(TIMER2_COMPA_vect)
{
static int_fast8_t tick_10ms;
int_fast8_t i;
if (i == 10) {
i = 0;
Stat |= S_10MS_TO;
-
+
/* Drive timer procedure of low level disk I/O module */
//disk_timerproc();
}
tick_10ms = i;
-
+
}
#if 0
-void do_10ms(void)
+void do_10ms(void)
{
if (to_counter)
to_counter--;
/*--------------------------------------------------------------------------*/
+#if 0
void timer_setup(void)
{
TCCR1B = 0b00001001;
TIMSK1 = _BV(OCIE1A); // Enable TC1.oca interrupt
}
-
+#endif
uint32_t get_timer(uint32_t base)
{
uint32_t ret;
-
+
ATOMIC_BLOCK(ATOMIC_FORCEON)
{
ret = timestamp;