/*!
* \file
* <!--
- * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
* Copyright 2000 Bernardo Innocenti <bernie@develer.com>
* This file is part of DevLib - See devlib/README for information.
* -->
* \brief Low-level timer module for AVR
*/
-/*
- * $Log$
- * Revision 1.11 2004/08/03 15:53:17 aleph
- * Fix spacing
- *
- * Revision 1.10 2004/08/02 20:20:29 aleph
- * Merge from project_ks
- *
- * Revision 1.9 2004/07/22 02:01:14 bernie
- * Use TIMER_PRESCALER consistently.
- *
- * Revision 1.8 2004/07/20 23:50:20 bernie
- * Also define TIMER_PRESCALER.
- *
- * Revision 1.7 2004/07/20 23:49:40 bernie
- * Compute value of OCR_DIVISOR from CLOCK_FREQ.
- *
- * Revision 1.6 2004/07/20 23:48:16 bernie
- * Finally remove redundant protos.
- *
- * Revision 1.5 2004/07/18 22:16:35 bernie
- * Add missing header; Prevent warning for project_ks-specific code.
- *
- * Revision 1.4 2004/06/27 15:22:15 aleph
- * Fix spacing
- *
- * Revision 1.3 2004/06/07 15:57:40 aleph
- * Update to latest AVR timer code
- *
- * Revision 1.2 2004/06/03 11:27:09 bernie
- * Add dual-license information.
- *
- * Revision 1.1 2004/05/23 18:23:30 bernie
- * Import drv/timer module.
- *
- */
-
+/*#*
+ *#* $Log$
+ *#* Revision 1.16 2004/09/06 21:49:26 bernie
+ *#* CONFIG_TIMER_STROBE: be tolerant with missing optional macro.
+ *#*
+ *#* Revision 1.15 2004/08/25 14:12:08 rasky
+ *#* Aggiornato il comment block dei log RCS
+ *#*
+ *#* Revision 1.14 2004/08/24 16:27:01 bernie
+ *#* Add missing headers.
+ *#*
+ *#* Revision 1.13 2004/08/24 14:30:11 bernie
+ *#* Use new-style config macros for drv/timer.c
+ *#*
+ *#* Revision 1.12 2004/08/10 06:59:45 bernie
+ *#* CONFIG_TIMER_STROBE: Define no-op default macros.
+ *#*
+ *#* Revision 1.11 2004/08/03 15:53:17 aleph
+ *#* Fix spacing
+ *#*
+ *#* Revision 1.10 2004/08/02 20:20:29 aleph
+ *#* Merge from project_ks
+ *#*
+ *#* Revision 1.9 2004/07/22 02:01:14 bernie
+ *#* Use TIMER_PRESCALER consistently.
+ *#*/
#ifndef DRV_TIMER_AVR_H
#define DRV_TIMER_AVR_H
+#include <arch_config.h> // ARCH_BOARD_KC
#include <avr/wdt.h>
#include <avr/signal.h>
#endif
+/*!
+ * Values for CONFIG_TIMER.
+ *
+ * Select which hardware timer interrupt to use for system clock and softtimers.
+ * \note The timer 1 overflow mode set the timer as a 24 kHz PWM.
+ */
+#define TIMER_ON_OUTPUT_COMPARE0 1
+#define TIMER_ON_OVERFLOW1 2
+#define TIMER_ON_OUTPUT_COMPARE2 3
+
+
+/*!
+ * \def CONFIG_TIMER_STROBE
+ *
+ * This is a debug facility that can be used to
+ * monitor timer interrupt activity on an external pin.
+ *
+ * To use strobes, redefine the macros TIMER_STROBE_ON,
+ * TIMER_STROBE_OFF and TIMER_STROBE_INIT and set
+ * CONFIG_TIMER_STROBE to 1.
+ */
+#if !defined(CONFIG_TIMER_STROBE) || !CONFIG_TIMER_STROBE
+ #define TIMER_STROBE_ON do {/*nop*/} while(0)
+ #define TIMER_STROBE_OFF do {/*nop*/} while(0)
+ #define TIMER_STROBE_INIT do {/*nop*/} while(0)
+#endif
+
+
/* Not needed, IRQ timer flag cleared automatically */
#define timer_hw_irq() do {} while (0)
#define OCR_DIVISOR (CLOCK_FREQ / TIMER_PRESCALER / TICKS_PER_SEC - 1) /* 191 */
/*! HW dependent timer initialization */
-#if defined(CONFIG_TIMER_ON_TIMER0)
+#if (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE0)
//! Type of time expressed in ticks of the hardware high-precision timer
typedef uint8_t hptime_t;
return TCNT0;
}
-#elif defined(CONFIG_TIMER_ON_TIMER1_OVERFLOW)
+#elif (CONFIG_TIMER == TIMER_ON_OVERFLOW1)
//! Type of time expressed in ticks of the hardware high precision timer
typedef uint16_t hptime_t;
return TCNT1;
}
-#elif defined(CONFIG_TIMER_ON_TIMER2)
+#elif (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE2)
//! Type of time expressed in ticks of the hardware high precision timer
typedef uint8_t hptime_t;
}
#else
- #error Choose witch timer to use with CONFIG_TIMER_ON_TIMERx
-#endif /* CONFIG_TIMER_ON_TIMERx */
+ #error Unimplemented value for CONFIG_TIMER
+#endif /* CONFIG_TIMER */
-#if defined(CONFIG_TIMER_ON_TIMER1_OVERFLOW)
+#if (CONFIG_TIMER == TIMER_ON_OVERFLOW1)
#define DEFINE_TIMER_ISR \
static void timer_handler(void)
#endif
}
-#elif defined (CONFIG_TIMER_ON_TIMER0)
+#elif (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE0)
#define DEFINE_TIMER_ISR \
SIGNAL(SIG_OUTPUT_COMPARE0)
-#elif defined(CONFIG_TIMER_ON_TIMER2)
+#elif (CONFIG_TIMER == TIMER_ON_OUTPUT_COMPARE2)
#define DEFINE_TIMER_ISR \
SIGNAL(SIG_OUTPUT_COMPARE2)
#else
- #error Choose witch timer to use with CONFIG_TIMER_ON_TIMERx
-#endif /* CONFIG_TIMER_ON_TIMERx */
+ #error Unimplemented value for CONFIG_TIMER
+#endif /* CONFIG_TIMER */
#endif /* DRV_TIMER_AVR_H */