X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Ftimer_avr.h;h=5d0eba36eb8e632738a9b1be21c72caca8a68aa1;hb=be5afe05ba0c8a2c885ee9b5a7251ac95d11ac20;hp=fa652b34908c71132d072d3eca5ab0fb3b8333ee;hpb=78513a64a93207e0511d4e0987d78edd13ff7658;p=bertos.git diff --git a/drv/timer_avr.h b/drv/timer_avr.h old mode 100755 new mode 100644 index fa652b34..5d0eba36 --- a/drv/timer_avr.h +++ b/drv/timer_avr.h @@ -1,9 +1,34 @@ -/*! +/** * \file * * * \version $Id$ @@ -16,6 +41,21 @@ /*#* *#* $Log$ + *#* Revision 1.32 2007/10/08 12:14:32 batt + *#* Fix some review issues. + *#* + *#* Revision 1.31 2007/10/07 12:30:55 batt + *#* Add default timer for AVR. + *#* + *#* Revision 1.30 2007/06/07 14:35:12 batt + *#* Merge from project_ks. + *#* + *#* Revision 1.29 2007/03/21 11:01:36 batt + *#* Add missing support for ATMega1281. + *#* + *#* Revision 1.28 2006/07/19 12:56:26 bernie + *#* Convert to new Doxygen style. + *#* *#* Revision 1.27 2006/05/18 00:38:24 bernie *#* Use hw_cpu.h instead of ubiquitous hw.h. *#* @@ -50,7 +90,7 @@ #include /* uint8_t */ #include /* CLOCK_FREQ */ -/*! +/** * \name Values for CONFIG_TIMER. * * Select which hardware timer interrupt to use for system clock and softtimers. @@ -62,6 +102,8 @@ #define TIMER_ON_OVERFLOW1 2 #define TIMER_ON_OUTPUT_COMPARE2 3 #define TIMER_ON_OVERFLOW3 4 + +#define TIMER_DEFAULT TIMER_ON_OUTPUT_COMPARE0 ///< Default system timer /* \} */ /* @@ -75,44 +117,48 @@ #define TIMER_TICKS_PER_SEC 1000 #define TIMER_HW_CNT OCR_DIVISOR - //! Type of time expressed in ticks of the hardware high-precision timer + /// Type of time expressed in ticks of the hardware high-precision timer typedef uint8_t hptime_t; #elif (CONFIG_TIMER == TIMER_ON_OVERFLOW1) #define TIMER_PRESCALER 1 #define TIMER_HW_BITS 8 - /*! This value is the maximum in overflow based timers. */ + /** 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 TIMER_TICKS_PER_SEC ((TIMER_HW_HPTICKS_PER_SEC + TIMER_HW_CNT / 2) / TIMER_HW_CNT) - //! Type of time expressed in ticks of the hardware high precision timer + /// Type of time expressed in ticks of the hardware high precision timer typedef uint16_t hptime_t; #elif (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE2) #define TIMER_PRESCALER 64 #define TIMER_HW_BITS 8 - #define DEFINE_TIMER_ISR SIGNAL(SIG_OUTPUT_COMPARE2) + #if CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA168 + #define DEFINE_TIMER_ISR SIGNAL(SIG_OUTPUT_COMPARE2A) + #else + #define DEFINE_TIMER_ISR SIGNAL(SIG_OUTPUT_COMPARE2) + #endif #define TIMER_TICKS_PER_SEC 1000 - /*! Value for OCR register in output-compare based timers. */ + /** Value for OCR register in output-compare based timers. */ #define TIMER_HW_CNT OCR_DIVISOR - //! Type of time expressed in ticks of the hardware high precision timer + /// Type of time expressed in ticks of the hardware high precision timer typedef uint8_t hptime_t; #elif (CONFIG_TIMER == TIMER_ON_OVERFLOW3) #define TIMER_PRESCALER 1 #define TIMER_HW_BITS 8 - /*! This value is the maximum in overflow based timers. */ + /** 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 TIMER_TICKS_PER_SEC ((TIMER_HW_HPTICKS_PER_SEC + TIMER_HW_CNT / 2) / TIMER_HW_CNT) - //! Type of time expressed in ticks of the hardware high precision timer + /// Type of time expressed in ticks of the hardware high precision timer typedef uint16_t hptime_t; #else @@ -120,17 +166,20 @@ #endif /* CONFIG_TIMER */ -/*! Frequency of the hardware high precision timer. */ +/** Frequency of the hardware high precision timer. */ #define TIMER_HW_HPTICKS_PER_SEC ((CLOCK_FREQ + TIMER_PRESCALER / 2) / TIMER_PRESCALER) -/*! +/** * System timer: additional division after the prescaler * 12288000 / 64 / 192 (0..191) = 1 ms */ #define OCR_DIVISOR (((CLOCK_FREQ + TIMER_PRESCALER / 2) / TIMER_PRESCALER + TIMER_TICKS_PER_SEC / 2) / TIMER_TICKS_PER_SEC - 1) -/*! Not needed, IRQ timer flag cleared automatically */ +/** Not needed, IRQ timer flag cleared automatically */ #define timer_hw_irq() do {} while (0) +/** Not needed, timer IRQ handler called only for timer source */ +#define timer_hw_triggered() (true) + #endif /* DRV_TIMER_AVR_H */