Fix typo.
[bertos.git] / bertos / cpu / avr / drv / timer_avr.c
index 4920934756467a5b271be1c04610ce0cb80060b4..54b4f0b728f91d9e08962fb84dfc8e1f585c826d 100644 (file)
  * invalidate any other reasons why the executable file might be covered by
  * the GNU General Public License.
  *
- * Copyright 2005 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2005, 2010 Develer S.r.l. (http://www.develer.com/)
  *
  * -->
  *
- * \version $Id$
- *
  * \author Bernie Innocenti <bernie@codewiz.org>
  * \author Francesco Sacchi <batt@develer.com>
+ * \author Luca Ottaviano <lottaviano@develer.com>
  *
  * \brief Low-level timer module for AVR (implementation).
  *
 #include <cpu/types.h>
 #include <cpu/irq.h>
 
-#include <avr/interrupt.h>
 #include <avr/io.h>
 
-#if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168
+#if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
        #define REG_TIFR0 TIFR0
        #define REG_TIFR1 TIFR1
        #define REG_TIFR2 TIFR2
 /** HW dependent timer initialization  */
 #if (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE0)
 
-       static void timer_hw_init(void)
+       void timer_hw_init(void)
        {
                cpu_flags_t flags;
                IRQ_SAVE_DISABLE(flags);
                        #else
                                #error Unsupported value of TIMER_PRESCALER
                        #endif
-               ;
+
                TCNT0 = 0x00;                 /* Initialization of Timer/Counter */
                REG_OCR0A = OCR_DIVISOR;           /* Timer/Counter Output Compare Register */
 
                IRQ_RESTORE(flags);
        }
 
-       INLINE hptime_t timer_hw_hpread(void)
-       {
-               return TCNT0;
-       }
-
 #elif (CONFIG_TIMER == TIMER_ON_OVERFLOW1)
 
-       static void timer_hw_init(void)
+       void timer_hw_init(void)
        {
                cpu_flags_t flags;
                IRQ_SAVE_DISABLE(flags);
                IRQ_RESTORE(flags);
        }
 
-       INLINE hptime_t timer_hw_hpread(void)
-       {
-               return TCNT1;
-       }
-
 #elif (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE2)
-       static void timer_hw_init(void)
+       void timer_hw_init(void)
        {
                cpu_flags_t flags;
                IRQ_SAVE_DISABLE(flags);
                /* 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);
                IRQ_RESTORE(flags);
        }
 
-       INLINE hptime_t timer_hw_hpread(void)
-       {
-               return TCNT2;
-       }
 #elif (CONFIG_TIMER == TIMER_ON_OVERFLOW3)
 
-       static void timer_hw_init(void)
+       void timer_hw_init(void)
        {
                cpu_flags_t flags;
                IRQ_SAVE_DISABLE(flags);
                TCNT3 = 0x00;
 
                /* Enable timer interrupt: Timer/Counter3 Overflow */
-               REG_TIMSK3 |= BV(TOIE3);
+               REG_TIMSK3 |= BV(TOIE3);
 
                IRQ_RESTORE(flags);
        }
 
-       INLINE hptime_t timer_hw_hpread(void)
-       {
-               return TCNT3;
-       }
-
 #else
        #error Unimplemented value for CONFIG_TIMER
 #endif /* CONFIG_TIMER */