*
* -->
*
- * \version $Id$
- *
* \author Bernie Innocenti <bernie@codewiz.org>
* \author Francesco Sacchi <batt@develer.com>
* \author Luca Ottaviano <lottaviano@develer.com>
#include <avr/io.h>
-#if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
+#if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P || CPU_AVR_ATMEGA2560
#define REG_TIFR0 TIFR0
#define REG_TIFR1 TIFR1
#define REG_TIFR2 TIFR2
- #if CPU_AVR_ATMEGA1281
+ #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560
#define REG_TIFR3 TIFR3
#endif
#define REG_TIMSK0 TIMSK0
#define REG_TIMSK1 TIMSK1
#define REG_TIMSK2 TIMSK2
- #if CPU_AVR_ATMEGA1281
+ #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560
#define REG_TIMSK3 TIMSK3
#endif
#define REG_TIFR0 TIFR
#define REG_TIFR1 TIFR
#define REG_TIFR2 TIFR
+ #define REG_TIFR3 TIFR
#define REG_TIMSK0 TIMSK
#define REG_TIMSK1 TIMSK
#else
#error Unsupported value of TIMER_PRESCALER
#endif
- ;
+
TCNT0 = 0x00; /* Initialization of Timer/Counter */
REG_OCR0A = OCR_DIVISOR; /* Timer/Counter Output Compare Register */
/* Clear on Compare match & prescaler = 64, internal sys clock.
When changing prescaler change TIMER_HW_HPTICKS_PER_SEC too */
TCNT2 = 0x00; /* initialization of Timer/Counter */
- REG_OCR2A = OCR_DIVISOR; /* Timer/Counter Output Compare Register */
+ REG_OCR2A = (uint8_t)OCR_DIVISOR; /* Timer/Counter Output Compare Register */
/* Enable timer interrupts: Timer/Counter2 Output Compare (OCIE2) */
REG_TIMSK2 &= ~BV(TOIE2);
#elif (CONFIG_TIMER == TIMER_ON_OVERFLOW3)
+ #if CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P || CPU_AVR_ATMEGA32
+ #error For select target there is not TIMER_ON_OVERFLOW3, please select an other one.
+ #endif
+
void timer_hw_init(void)
{
cpu_flags_t flags;
TCNT3 = 0x00;
/* Enable timer interrupt: Timer/Counter3 Overflow */
- REG_TIMSK3 = |= BV(TOIE3);
+ REG_TIMSK3 |= BV(TOIE3);
IRQ_RESTORE(flags);
}