Save some more RAM on AVR.
[bertos.git] / drv / timer_i196.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2000 Bernardo Innocenti
5  * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
6  * This file is part of DevLib - See devlib/README for information.
7  * -->
8  *
9  * \version $Id$
10  *
11  * \author Bernardo Innocenti <bernie@develer.com>
12  *
13  * \brief Low-level timer module for AVR
14  */
15
16 /*#*
17  *#* $Log$
18  *#* Revision 1.3  2004/08/25 14:12:08  rasky
19  *#* Aggiornato il comment block dei log RCS
20  *#*
21  *#* Revision 1.2  2004/06/03 11:27:09  bernie
22  *#* Add dual-license information.
23  *#*
24  *#* Revision 1.1  2004/05/23 18:23:30  bernie
25  *#* Import drv/timer module.
26  *#*
27  *#*/
28
29 #ifndef TIMER_I196_H
30 #define TIMER_I196_H
31
32         /*!
33          * Retrigger TIMER2, adjusting the time to account for
34          * the interrupt prologue latency.
35          */
36 #       define TIMER_RETRIGGER (TIMER2 -= TICKS_RATE)
37
38 #       define TIMER_INIT \
39                 TIMER2 = (65535 - TICKS_RATE); \
40                 INT_MASK1 |= INT1F_T2OVF; \
41                 \
42                 DISABLE_INTS; \
43                 WSR = 1; \
44                 IOC3 |= IOC3F_T2_ENA; \
45                 WSR = 0; \
46                 ENABLE_INTS
47
48 #define DEFINE_TIMER_ISR \
49         INTERRUPT(0x38) void TM2_OVFL_interrupt(void);  \
50         INTERRUPT(0x38) void TM2_OVFL_interrupt(void)
51
52 #endif /* DRV_TIMER_I196_H */