Merge branch "preempt" in "trunk".
[bertos.git] / bertos / cpu / avr / drv / timer_avr.h
index 89d0dd76d134c9d5ff8ebb595838e4e0fa9fa2b2..a9209bdc6d86b7cf1b3bb00f05da6bd6cf6dcb85 100644 (file)
        #define TIMER_PRESCALER      64
        #define TIMER_HW_BITS        8
        #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168
-               #define DEFINE_TIMER_ISR     SIGNAL(SIG_OUTPUT_COMPARE0A)
+               #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)
+               #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)
        {