]> git.sur5r.net Git - freertos/blob - Demo/ARM7_AT91FR40008_GCC/tc.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ARM7_AT91FR40008_GCC / tc.h
1 //*----------------------------------------------------------------------------\r
2 //*         ATMEL Microcontroller Software Support  -  ROUSSET  -\r
3 //*----------------------------------------------------------------------------\r
4 //* The software is delivered "AS IS" without warranty or condition of any\r
5 //* kind, either express, implied or statutory. This includes without\r
6 //* limitation any warranty or condition with respect to merchantability or\r
7 //* fitness for any particular purpose, or against the infringements of\r
8 //* intellectual property rights of others.\r
9 //*-----------------------------------------------------------------------------\r
10 //* File Name           : tc.h\r
11 //* Object              : Timer Counter Header File\r
12 //*\r
13 //* 1.0 01/04/00 JCZ    : Creation\r
14 //* 1.0 01/09/00 JPP    : modification TC_BEEVT, TC_BEEVT_SET_OUTPUT,\r
15 //*                       TC_BEEVT_CLEAR_OUTPUT, TC_BEEVT_TOGGLE_OUTPUT\r
16 //*-----------------------------------------------------------------------------\r
17 \r
18 #ifndef tc_h\r
19 #define tc_h\r
20 \r
21 //#include    "periph/stdc/std_c.h"\r
22 //#include    "periph/pio/lib_pio.h"\r
23 \r
24 /*-------------------------------------------*/\r
25 /* Timer User Interface Structure Definition */\r
26 /*-------------------------------------------*/\r
27 \r
28 typedef struct\r
29 {\r
30     at91_reg        TC_CCR ;        /* Control Register */\r
31     at91_reg        TC_CMR ;        /* Mode Register */\r
32     at91_reg        Reserved0 ;\r
33     at91_reg        Reserved1 ;\r
34     at91_reg        TC_CV ;         /* Counter value */\r
35     at91_reg        TC_RA ;         /* Register A */\r
36     at91_reg        TC_RB ;         /* Register B */\r
37     at91_reg        TC_RC ;         /* Register C */\r
38     at91_reg        TC_SR ;         /* Status Register */\r
39     at91_reg        TC_IER ;        /* Interrupt Enable Register */\r
40     at91_reg        TC_IDR ;        /* Interrupt Disable Register */\r
41     at91_reg        TC_IMR ;        /* Interrupt Mask Register */\r
42     at91_reg        Reserved2 ;\r
43     at91_reg        Reserved3 ;\r
44     at91_reg        Reserved4 ;\r
45     at91_reg        Reserved5 ;\r
46 } StructTC ;\r
47 \r
48 #define NB_TC_CHANNEL       3\r
49 \r
50 typedef struct\r
51 {\r
52     StructTC        TC[NB_TC_CHANNEL] ;\r
53     at91_reg        TC_BCR ;        /* Block Control Register */\r
54     at91_reg        TC_BMR ;        /* Block Mode Register  */\r
55 } StructTCBlock ;\r
56 \r
57 /*--------------------------------------------------------*/\r
58 /* TC_CCR: Timer Counter Control Register Bits Definition */\r
59 /*--------------------------------------------------------*/\r
60 #define TC_CLKEN            0x1\r
61 #define TC_CLKDIS           0x2\r
62 #define TC_SWTRG            0x4\r
63 \r
64 /*---------------------------------------------------------------*/\r
65 /* TC_CMR: Timer Counter Channel Mode Register Bits Definition   */\r
66 /*---------------------------------------------------------------*/\r
67 \r
68 /*-----------------*/\r
69 /* Clock Selection */\r
70 /*-----------------*/\r
71 #define TC_CLKS                  0x7\r
72 #define TC_CLKS_MCK2             0x0\r
73 #define TC_CLKS_MCK8             0x1\r
74 #define TC_CLKS_MCK32            0x2\r
75 #define TC_CLKS_MCK128           0x3\r
76 #define TC_CLKS_MCK1024          0x4\r
77 \r
78 #define TC_CLKS_SLCK             0x4\r
79 \r
80 #define TC_CLKS_XC0              0x5\r
81 #define TC_CLKS_XC1              0x6\r
82 #define TC_CLKS_XC2              0x7\r
83 \r
84 \r
85 /*-----------------*/\r
86 /* Clock Inversion */\r
87 /*-----------------*/\r
88 #define TC_CLKI             0x8\r
89 \r
90 /*------------------------*/\r
91 /* Burst Signal Selection */\r
92 /*------------------------*/\r
93 #define TC_BURST            0x30\r
94 #define TC_BURST_NONE       0x0\r
95 #define TC_BUSRT_XC0        0x10\r
96 #define TC_BURST_XC1        0x20\r
97 #define TC_BURST_XC2        0x30\r
98 \r
99 /*------------------------------------------------------*/\r
100 /* Capture Mode : Counter Clock Stopped with RB Loading */\r
101 /*------------------------------------------------------*/\r
102 #define TC_LDBSTOP          0x40\r
103 \r
104 /*-------------------------------------------------------*/\r
105 /* Waveform Mode : Counter Clock Stopped with RC Compare */\r
106 /*-------------------------------------------------------*/\r
107 #define TC_CPCSTOP          0x40\r
108 \r
109 /*-------------------------------------------------------*/\r
110 /* Capture Mode : Counter Clock Disabled with RB Loading */\r
111 /*--------------------------------------------------------*/\r
112 #define TC_LDBDIS           0x80\r
113 \r
114 /*--------------------------------------------------------*/\r
115 /* Waveform Mode : Counter Clock Disabled with RC Compare */\r
116 /*--------------------------------------------------------*/\r
117 #define TC_CPCDIS           0x80\r
118 \r
119 /*------------------------------------------------*/\r
120 /* Capture Mode : External Trigger Edge Selection */\r
121 /*------------------------------------------------*/\r
122 #define TC_ETRGEDG                  0x300\r
123 #define TC_ETRGEDG_EDGE_NONE        0x0\r
124 #define TC_ETRGEDG_RISING_EDGE      0x100\r
125 #define TC_ETRGEDG_FALLING_EDGE     0x200\r
126 #define TC_ETRGEDG_BOTH_EDGE        0x300\r
127 \r
128 /*-----------------------------------------------*/\r
129 /* Waveform Mode : External Event Edge Selection */\r
130 /*-----------------------------------------------*/\r
131 #define TC_EEVTEDG                  0x300\r
132 #define TC_EEVTEDG_EDGE_NONE        0x0\r
133 #define TC_EEVTEDG_RISING_EDGE      0x100\r
134 #define TC_EEVTEDG_FALLING_EDGE     0x200\r
135 #define TC_EEVTEDG_BOTH_EDGE        0x300\r
136 \r
137 /*--------------------------------------------------------*/\r
138 /* Capture Mode : TIOA or TIOB External Trigger Selection */\r
139 /*--------------------------------------------------------*/\r
140 #define TC_ABETRG                   0x400\r
141 #define TC_ABETRG_TIOB              0x0\r
142 #define TC_ABETRG_TIOA              0x400\r
143 \r
144 /*------------------------------------------*/\r
145 /* Waveform Mode : External Event Selection */\r
146 /*------------------------------------------*/\r
147 #define TC_EEVT                     0xC00\r
148 #define TC_EEVT_TIOB                0x0\r
149 #define TC_EEVT_XC0                 0x400\r
150 #define TC_EEVT_XC1                 0x800\r
151 #define TC_EEVT_XC2                 0xC00\r
152 \r
153 /*--------------------------------------------------*/\r
154 /* Waveform Mode : Enable Trigger on External Event */\r
155 /*--------------------------------------------------*/\r
156 #define TC_ENETRG                   0x1000\r
157 \r
158 /*----------------------------------*/\r
159 /* RC Compare Enable Trigger Enable */\r
160 /*----------------------------------*/\r
161 #define TC_CPCTRG                   0x4000\r
162 \r
163 /*----------------*/\r
164 /* Mode Selection */\r
165 /*----------------*/\r
166 #define TC_WAVE                     0x8000\r
167 #define TC_CAPT                     0x0\r
168 \r
169 /*-------------------------------------*/\r
170 /* Capture Mode : RA Loading Selection */\r
171 /*-------------------------------------*/\r
172 #define TC_LDRA                     0x30000\r
173 #define TC_LDRA_EDGE_NONE           0x0\r
174 #define TC_LDRA_RISING_EDGE         0x10000\r
175 #define TC_LDRA_FALLING_EDGE        0x20000\r
176 #define TC_LDRA_BOTH_EDGE           0x30000\r
177 \r
178 /*-------------------------------------------*/\r
179 /* Waveform Mode : RA Compare Effect on TIOA */\r
180 /*-------------------------------------------*/\r
181 #define TC_ACPA                     0x30000\r
182 #define TC_ACPA_OUTPUT_NONE         0x0\r
183 #define TC_ACPA_SET_OUTPUT          0x10000\r
184 #define TC_ACPA_CLEAR_OUTPUT        0x20000\r
185 #define TC_ACPA_TOGGLE_OUTPUT       0x30000\r
186 \r
187 /*-------------------------------------*/\r
188 /* Capture Mode : RB Loading Selection */\r
189 /*-------------------------------------*/\r
190 #define TC_LDRB                     0xC0000\r
191 #define TC_LDRB_EDGE_NONE           0x0\r
192 #define TC_LDRB_RISING_EDGE         0x40000\r
193 #define TC_LDRB_FALLING_EDGE        0x80000\r
194 #define TC_LDRB_BOTH_EDGE           0xC0000\r
195 \r
196 /*-------------------------------------------*/\r
197 /* Waveform Mode : RC Compare Effect on TIOA */\r
198 /*-------------------------------------------*/\r
199 #define TC_ACPC                     0xC0000\r
200 #define TC_ACPC_OUTPUT_NONE         0x0\r
201 #define TC_ACPC_SET_OUTPUT          0x40000\r
202 #define TC_ACPC_CLEAR_OUTPUT        0x80000\r
203 #define TC_ACPC_TOGGLE_OUTPUT       0xC0000\r
204 \r
205 /*-----------------------------------------------*/\r
206 /* Waveform Mode : External Event Effect on TIOA */\r
207 /*-----------------------------------------------*/\r
208 #define TC_AEEVT                    0x300000\r
209 #define TC_AEEVT_OUTPUT_NONE        0x0\r
210 #define TC_AEEVT_SET_OUTPUT         0x100000\r
211 #define TC_AEEVT_CLEAR_OUTPUT       0x200000\r
212 #define TC_AEEVT_TOGGLE_OUTPUT      0x300000\r
213 \r
214 /*-------------------------------------------------*/\r
215 /* Waveform Mode : Software Trigger Effect on TIOA */\r
216 /*-------------------------------------------------*/\r
217 #define TC_ASWTRG                   0xC00000\r
218 #define TC_ASWTRG_OUTPUT_NONE       0x0\r
219 #define TC_ASWTRG_SET_OUTPUT        0x400000\r
220 #define TC_ASWTRG_CLEAR_OUTPUT      0x800000\r
221 #define TC_ASWTRG_TOGGLE_OUTPUT     0xC00000\r
222 \r
223 /*-------------------------------------------*/\r
224 /* Waveform Mode : RB Compare Effect on TIOB */\r
225 /*-------------------------------------------*/\r
226 #define TC_BCPB                     0x1000000\r
227 #define TC_BCPB_OUTPUT_NONE         0x0\r
228 #define TC_BCPB_SET_OUTPUT          0x1000000\r
229 #define TC_BCPB_CLEAR_OUTPUT        0x2000000\r
230 #define TC_BCPB_TOGGLE_OUTPUT       0x3000000\r
231 \r
232 /*-------------------------------------------*/\r
233 /* Waveform Mode : RC Compare Effect on TIOB */\r
234 /*-------------------------------------------*/\r
235 #define TC_BCPC                     0xC000000\r
236 #define TC_BCPC_OUTPUT_NONE         0x0\r
237 #define TC_BCPC_SET_OUTPUT          0x4000000\r
238 #define TC_BCPC_CLEAR_OUTPUT        0x8000000\r
239 #define TC_BCPC_TOGGLE_OUTPUT       0xC000000\r
240 \r
241 /*-----------------------------------------------*/\r
242 /* Waveform Mode : External Event Effect on TIOB */\r
243 /*-----------------------------------------------*/\r
244 #define TC_BEEVT                    0x30000000      //* bit 29-28\r
245 #define TC_BEEVT_OUTPUT_NONE        0x0\r
246 #define TC_BEEVT_SET_OUTPUT         0x10000000      //* bit 29-28  01\r
247 #define TC_BEEVT_CLEAR_OUTPUT       0x20000000      //* bit 29-28  10\r
248 #define TC_BEEVT_TOGGLE_OUTPUT      0x30000000      //* bit 29-28  11\r
249 \r
250 /*- -----------------------------------------------*/\r
251 /* Waveform Mode : Software Trigger Effect on TIOB */\r
252 /*-------------------------------------------------*/\r
253 #define TC_BSWTRG                   0xC0000000\r
254 #define TC_BSWTRG_OUTPUT_NONE       0x0\r
255 #define TC_BSWTRG_SET_OUTPUT        0x40000000\r
256 #define TC_BSWTRG_CLEAR_OUTPUT      0x80000000\r
257 #define TC_BSWTRG_TOGGLE_OUTPUT     0xC0000000\r
258 \r
259 /*------------------------------------------------------*/\r
260 /* TC_SR: Timer Counter Status Register Bits Definition */\r
261 /*------------------------------------------------------*/\r
262 #define TC_COVFS            0x1         /* Counter Overflow Status */\r
263 #define TC_LOVRS            0x2         /* Load Overrun Status */\r
264 #define TC_CPAS             0x4         /* RA Compare Status */\r
265 #define TC_CPBS             0x8         /* RB Compare Status */\r
266 #define TC_CPCS             0x10        /* RC Compare Status */\r
267 #define TC_LDRAS            0x20        /* RA Loading Status */\r
268 #define TC_LDRBS            0x40        /* RB Loading Status */\r
269 #define TC_ETRGS            0x80        /* External Trigger Status */\r
270 #define TC_CLKSTA           0x10000     /* Clock Status */\r
271 #define TC_MTIOA            0x20000     /* TIOA Mirror */\r
272 #define TC_MTIOB            0x40000     /* TIOB Status */\r
273 \r
274 /*--------------------------------------------------------------*/\r
275 /* TC_BCR: Timer Counter Block Control Register Bits Definition */\r
276 /*--------------------------------------------------------------*/\r
277 #define TC_SYNC             0x1         /* Synchronisation Trigger */\r
278 \r
279 /*------------------------------------------------------------*/\r
280 /*  TC_BMR: Timer Counter Block Mode Register Bits Definition */\r
281 /*------------------------------------------------------------*/\r
282 #define TC_TC0XC0S          0x3        /* External Clock Signal 0 Selection */\r
283 #define TC_TCLK0XC0         0x0\r
284 #define TC_NONEXC0          0x1\r
285 #define TC_TIOA1XC0         0x2\r
286 #define TC_TIOA2XC0         0x3\r
287 \r
288 #define TC_TC1XC1S          0xC        /* External Clock Signal 1 Selection */\r
289 #define TC_TCLK1XC1         0x0\r
290 #define TC_NONEXC1          0x4\r
291 #define TC_TIOA0XC1         0x8\r
292 #define TC_TIOA2XC1         0xC\r
293 \r
294 #define TC_TC2XC2S          0x30       /* External Clock Signal 2 Selection */\r
295 #define TC_TCLK2XC2         0x0\r
296 #define TC_NONEXC2          0x10\r
297 #define TC_TIOA0XC2         0x20\r
298 #define TC_TIOA1XC2         0x30\r
299 \r
300 #endif /* tc_h */\r
301 \r