remove unneed function. Use hpread in context switch benchmark.
[bertos.git] / bertos / cpu / avr / drv / timer_avr.h
index 89d0dd76d134c9d5ff8ebb595838e4e0fa9fa2b2..78225ff19fabe52445f96cb2bb165867f080a0f8 100644 (file)
  * invalidate any other reasons why the executable file might be covered by
  * the GNU General Public License.
  *
- * Copyright 2003, 2004, 2005 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2003, 2004, 2005, 2010 Develer S.r.l. (http://www.develer.com/)
  * Copyright 2000 Bernie Innocenti <bernie@codewiz.org>
  *
  * -->
  *
  * \brief Low-level timer module for AVR (interface).
  *
- * \version $Id$
- *
  * \author Bernie Innocenti <bernie@codewiz.org>
  * \author Francesco Sacchi <batt@develer.com>
+ * \author Luca Ottaviano <lottaviano@develer.com>
  *
  */
 
 
        #define TIMER_PRESCALER      64
        #define TIMER_HW_BITS        8
-       #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168
-               #define DEFINE_TIMER_ISR     SIGNAL(SIG_OUTPUT_COMPARE0A)
+       #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
+               #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER0_COMPA_vect)
        #else
-               #define DEFINE_TIMER_ISR     SIGNAL(SIG_OUTPUT_COMPARE0)
+               #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER0_COMP_vect)
        #endif
        #define TIMER_TICKS_PER_SEC  1000
        #define TIMER_HW_CNT         OCR_DIVISOR
 
        /// Type of time expressed in ticks of the hardware high-precision timer
        typedef uint8_t hptime_t;
+       #define SIZEOF_HPTIME_T 1
 
        INLINE hptime_t timer_hw_hpread(void)
        {
        #define TIMER_HW_BITS        8
        /** This value is the maximum in overflow based timers. */
        #define TIMER_HW_CNT         (1 << TIMER_HW_BITS)
-       #define DEFINE_TIMER_ISR     SIGNAL(SIG_OVERFLOW1)
+       #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER1_OVF_vect)
        #define TIMER_TICKS_PER_SEC  DIV_ROUND(TIMER_HW_HPTICKS_PER_SEC, TIMER_HW_CNT)
 
        /// Type of time expressed in ticks of the hardware high precision timer
        typedef uint16_t hptime_t;
+       #define SIZEOF_HPTIME_T 2
 
        INLINE hptime_t timer_hw_hpread(void)
        {
 
        #define TIMER_PRESCALER      64
        #define TIMER_HW_BITS        8
-       #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168
-               #define DEFINE_TIMER_ISR     SIGNAL(SIG_OUTPUT_COMPARE2A)
+       #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 || CPU_AVR_ATMEGA328P
+               #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER2_COMPA_vect)
        #else
-               #define DEFINE_TIMER_ISR     SIGNAL(SIG_OUTPUT_COMPARE2)
+               #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER2_COMP_vect)
        #endif
        #define TIMER_TICKS_PER_SEC  1000
        /** Value for OCR register in output-compare based timers. */
 
        /// Type of time expressed in ticks of the hardware high precision timer
        typedef uint8_t hptime_t;
+       #define SIZEOF_HPTIME_T 1
 
        INLINE hptime_t timer_hw_hpread(void)
        {
        #define TIMER_HW_BITS        8
        /** This value is the maximum in overflow based timers. */
        #define TIMER_HW_CNT         (1 << TIMER_HW_BITS)
-       #define DEFINE_TIMER_ISR     SIGNAL(SIG_OVERFLOW3)
+       #define DEFINE_TIMER_ISR     DECLARE_ISR_CONTEXT_SWITCH(TIMER3_OVF_vect)
        #define TIMER_TICKS_PER_SEC  DIV_ROUND(TIMER_HW_HPTICKS_PER_SEC, TIMER_HW_CNT)
 
        /// Type of time expressed in ticks of the hardware high precision timer
        typedef uint16_t hptime_t;
+       #define SIZEOF_HPTIME_T 2
 
        INLINE hptime_t timer_hw_hpread(void)
        {