Sistema l'errore da me commesso in fase di conversione...
[bertos.git] / drv / timer_avr.h
old mode 100755 (executable)
new mode 100644 (file)
index 1220395..c4bff65
@@ -1,4 +1,4 @@
-/*!
+/**
  * \file
  * <!--
  * Copyright 2003, 2004, 2005 Develer S.r.l. (http://www.develer.com/)
 
 /*#*
  *#* $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.
+ *#*
  *#* Revision 1.26  2006/02/21 21:28:02  bernie
  *#* New time handling based on TIMER_TICKS_PER_SEC to support slow timers with ticks longer than 1ms.
  *#*
 #ifndef DRV_TIMER_AVR_H
 #define DRV_TIMER_AVR_H
 
-#include <appconfig.h>  /* CONFIG_TIMER */
-#include <hw.h>
+#include <appconfig.h>     /* CONFIG_TIMER */
+#include <cfg/compiler.h>  /* uint8_t */
+#include <hw_cpu.h>        /* CLOCK_FREQ */
 
-/*!
+/**
  * \name Values for CONFIG_TIMER.
  *
  * Select which hardware timer interrupt to use for system clock and softtimers.
@@ -58,6 +77,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
 /* \} */
 
 /*
        #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
 
 #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 */