Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
gptimer.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012, Texas Instruments Incorporated - http://www.ti.com/
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
*
14
* 3. Neither the name of the copyright holder nor the names of its
15
* contributors may be used to endorse or promote products derived
16
* from this software without specific prior written permission.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
29
* OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
/**
32
* \addtogroup cc2538
33
* @{
34
*
35
* \defgroup cc2538-gptimer cc2538 General-Purpose Timers
36
*
37
* Driver for the cc2538 General Purpose Timers
38
* @{
39
*
40
* \file
41
* Header file for the cc2538 General Purpose Timers
42
*/
43
#ifndef GPTIMER_H_
44
#define GPTIMER_H_
45
/*---------------------------------------------------------------------------*/
46
/** \name Base addresses for the GPT register instances
47
* @{
48
*/
49
#define GPT_0_BASE 0x40030000
/**< GPTIMER0 */
50
#define GPT_1_BASE 0x40031000
/**< GPTIMER1 */
51
#define GPT_2_BASE 0x40032000
/**< GPTIMER2 */
52
#define GPT_3_BASE 0x40033000
/**< GPTIMER3 */
53
/** @} */
54
/*---------------------------------------------------------------------------*/
55
/** \name GPTIMER Register offset declarations
56
* @{
57
*/
58
#define GPTIMER_CFG 0x00000000
/**< GPTM configuration */
59
#define GPTIMER_TAMR 0x00000004
/**< GPTM Timer A mode */
60
#define GPTIMER_TBMR 0x00000008
/**< GPTM Timer B mode */
61
#define GPTIMER_CTL 0x0000000C
/**< GPTM control */
62
#define GPTIMER_SYNC 0x00000010
/**< GPTM synchronize (0 only) */
63
#define GPTIMER_IMR 0x00000018
/**< GPTM interrupt mask */
64
#define GPTIMER_RIS 0x0000001C
/**< GPTM raw interrupt status */
65
#define GPTIMER_MIS 0x00000020
/**< GPTM masked interrupt status */
66
#define GPTIMER_ICR 0x00000024
/**< GPTM interrupt clear */
67
#define GPTIMER_TAILR 0x00000028
/**< GPTM Timer A interval load */
68
#define GPTIMER_TBILR 0x0000002C
/**< GPTM Timer B interval load */
69
#define GPTIMER_TAMATCHR 0x00000030
/**< GPTM Timer A match */
70
#define GPTIMER_TBMATCHR 0x00000034
/**< GPTM Timer B match */
71
#define GPTIMER_TAPR 0x00000038
/**< GPTM Timer A prescale */
72
#define GPTIMER_TBPR 0x0000003C
/**< GPTM Timer B prescale */
73
#define GPTIMER_TAPMR 0x00000040
/**< GPTM Timer A prescale match */
74
#define GPTIMER_TBPMR 0x00000044
/**< GPTM Timer B prescale match */
75
#define GPTIMER_TAR 0x00000048
/**< GPTM Timer A */
76
#define GPTIMER_TBR 0x0000004C
/**< GPTM Timer B */
77
#define GPTIMER_TAV 0x00000050
/**< GPTM Timer A value */
78
#define GPTIMER_TBV 0x00000054
/**< GPTM Timer B value */
79
#define GPTIMER_RTCPD 0x00000058
/**< GPTM RTC predivide */
80
#define GPTIMER_TAPS 0x0000005C
/**< GPTM Timer A prescale snapshot */
81
#define GPTIMER_TBPS 0x00000060
/**< GPTM Timer B prescale snapshot */
82
#define GPTIMER_TAPV 0x00000064
/**< GPTM Timer A prescale value */
83
#define GPTIMER_TBPV 0x00000068
/**< GPTM Timer B prescale value */
84
#define GPTIMER_PP 0x00000FC0
/**< GPTM peripheral properties */
85
/** @} */
86
/*---------------------------------------------------------------------------*/
87
/** \name GPTIMER_CFG register bit masks
88
* @{
89
*/
90
#define GPTIMER_CFG_GPTMCFG 0x00000007
/**< configuration */
91
/** @} */
92
/*---------------------------------------------------------------------------*/
93
/** \name GPTIMER_TnMR bit values
94
* @{
95
*/
96
#define GPTIMER_TAMR_TAMR_ONE_SHOT 0x00000001
97
#define GPTIMER_TAMR_TAMR_PERIODIC 0x00000002
98
#define GPTIMER_TAMR_TAMR_CAPTURE 0x00000003
99
#define GPTIMER_TBMR_TBMR_ONE_SHOT 0x00000001
100
#define GPTIMER_TBMR_TBMR_PERIODIC 0x00000002
101
#define GPTIMER_TBMR_TBMR_CAPTURE 0x00000003
102
/** @} */
103
/*---------------------------------------------------------------------------*/
104
/** \name GPTIMER_TAMR register bit masks
105
* @{
106
*/
107
#define GPTIMER_TAMR_TAPLO 0x00000800
/**< Legacy PWM operation */
108
#define GPTIMER_TAMR_TAMRSU 0x00000400
/**< Timer A match register update mode */
109
#define GPTIMER_TAMR_TAPWMIE 0x00000200
/**< Timer A PWM interrupt enable */
110
#define GPTIMER_TAMR_TAILD 0x00000100
/**< Timer A PWM interval load write */
111
#define GPTIMER_TAMR_TASNAPS 0x00000080
/**< Timer A snap-shot mode */
112
#define GPTIMER_TAMR_TAWOT 0x00000040
/**< Timer A wait-on-trigger */
113
#define GPTIMER_TAMR_TAMIE 0x00000020
/**< Timer A match interrupt enable */
114
#define GPTIMER_TAMR_TACDIR 0x00000010
/**< Timer A count direction */
115
#define GPTIMER_TAMR_TAAMS 0x00000008
/**< Timer A alternate mode */
116
#define GPTIMER_TAMR_TACMR 0x00000004
/**< Timer A capture mode */
117
#define GPTIMER_TAMR_TAMR 0x00000003
/**< Timer A mode */
118
/** @} */
119
/*---------------------------------------------------------------------------*/
120
/** \name GPTIMER_TBMR register bit masks
121
* @{
122
*/
123
#define GPTIMER_TBMR_TBPLO 0x00000800
/**< Legacy PWM operation */
124
#define GPTIMER_TBMR_TBMRSU 0x00000400
/**< Timer B match register update mode */
125
#define GPTIMER_TBMR_TBPWMIE 0x00000200
/**< Timer B PWM interrupt enable */
126
#define GPTIMER_TBMR_TBILD 0x00000100
/**< Timer B PWM interval load write */
127
#define GPTIMER_TBMR_TBSNAPS 0x00000080
/**< Timer B snap-shot mode */
128
#define GPTIMER_TBMR_TBWOT 0x00000040
/**< Timer B wait-on-trigger */
129
#define GPTIMER_TBMR_TBMIE 0x00000020
/**< Timer B match interrupt enable */
130
#define GPTIMER_TBMR_TBCDIR 0x00000010
/**< Timer B count direction */
131
#define GPTIMER_TBMR_TBAMS 0x00000008
/**< Timer B alternate mode */
132
#define GPTIMER_TBMR_TBCMR 0x00000004
/**< Timer B capture mode */
133
#define GPTIMER_TBMR_TBMR 0x00000003
/**< Timer B mode */
134
/** @} */
135
/*---------------------------------------------------------------------------*/
136
/** \name GPTIMER_CTL register bit masks
137
* @{
138
*/
139
#define GPTIMER_CTL_TBPWML 0x00004000
/**< Timer B PWM output level */
140
#define GPTIMER_CTL_TBOTE 0x00002000
/**< Timer B output trigger enable */
141
#define GPTIMER_CTL_TBEVENT 0x00000C00
/**< Timer B event mode */
142
#define GPTIMER_CTL_TBSTALL 0x00000200
/**< Timer B stall enable */
143
#define GPTIMER_CTL_TBEN 0x00000100
/**< Timer B enable */
144
#define GPTIMER_CTL_TAPWML 0x00000040
/**< Timer A PWM output level */
145
#define GPTIMER_CTL_TAOTE 0x00000020
/**< Timer A output trigger enable */
146
#define GPTIMER_CTL_RTCEN 0x00000010
/**< RTC enable */
147
#define GPTIMER_CTL_TAEVENT 0x0000000C
/**< Timer A event mode */
148
#define GPTIMER_CTL_TASTALL 0x00000002
/**< Timer A stall enable */
149
#define GPTIMER_CTL_TAEN 0x00000001
/**< Timer A enable */
150
/** @} */
151
/*---------------------------------------------------------------------------*/
152
/** \name GPTIMER_SYNC register bit masks
153
* @{
154
*/
155
#define GPTIMER_SYNC_SYNC3 0x000000C0
/**< Synchronize GPTM3 */
156
#define GPTIMER_SYNC_SYNC2 0x00000030
/**< Synchronize GPTM2 */
157
#define GPTIMER_SYNC_SYNC1 0x0000000C
/**< Synchronize GPTM1 */
158
#define GPTIMER_SYNC_SYNC0 0x00000003
/**< Synchronize GPTM0 */
159
/** @} */
160
/*---------------------------------------------------------------------------*/
161
/** \name GPTIMER_IMR register bit masks
162
* @{
163
*/
164
#define GPTIMER_IMR_TBMIM 0x00000800
/**< Timer B match int mask */
165
#define GPTIMER_IMR_CBEIM 0x00000400
/**< Timer B capture event int mask */
166
#define GPTIMER_IMR_CBMIM 0x00000200
/**< Timer B capture match int mask */
167
#define GPTIMER_IMR_TBTOIM 0x00000100
/**< Timer B time-out int mask */
168
#define GPTIMER_IMR_TAMIM 0x00000010
/**< Timer A match int mask */
169
#define GPTIMER_IMR_RTCIM 0x00000008
/**< RTC int mask */
170
#define GPTIMER_IMR_CAEIM 0x00000004
/**< Timer A capture event int mask */
171
#define GPTIMER_IMR_CAMIM 0x00000002
/**< Timer A capture match int mask */
172
#define GPTIMER_IMR_TATOIM 0x00000001
/**< Timer A time-out int mask */
173
/** @} */
174
/*---------------------------------------------------------------------------*/
175
/** \name GPTIMER_RIS register bit masks
176
* @{
177
*/
178
#define GPTIMER_RIS_TBMRIS 0x00000800
/**< Timer B match raw status */
179
#define GPTIMER_RIS_CBERIS 0x00000400
/**< Timer B capture event raw status */
180
#define GPTIMER_RIS_CBMRIS 0x00000200
/**< Timer B capture match raw status */
181
#define GPTIMER_RIS_TBTORIS 0x00000100
/**< Timer B time-out raw status */
182
#define GPTIMER_RIS_TAMRIS 0x00000010
/**< Timer A match raw status */
183
#define GPTIMER_RIS_RTCRIS 0x00000008
/**< RTC raw status */
184
#define GPTIMER_RIS_CAERIS 0x00000004
/**< Timer A capture event raw status */
185
#define GPTIMER_RIS_CAMRIS 0x00000002
/**< Timer A capture match raw status */
186
#define GPTIMER_RIS_TATORIS 0x00000001
/**< Timer A time-out raw status */
187
/** @} */
188
/*---------------------------------------------------------------------------*/
189
/** \name GPTIMER_MIS register bit masks
190
* @{
191
*/
192
#define GPTIMER_MIS_TBMMIS 0x00000800
/**< Timer B match masked status */
193
#define GPTIMER_MIS_CBEMIS 0x00000400
/**< Timer B capture event masked status */
194
#define GPTIMER_MIS_CBMMIS 0x00000200
/**< Timer B capture match masked status */
195
#define GPTIMER_MIS_TBTOMIS 0x00000100
/**< Timer B time-out masked status */
196
#define GPTIMER_MIS_TAMRIS 0x00000010
/**< Timer A match masked status */
197
#define GPTIMER_MIS_RTCMIS 0x00000008
/**< RTC masked status */
198
#define GPTIMER_MIS_CAEMIS 0x00000004
/**< Timer A capture event masked status */
199
#define GPTIMER_MIS_CAMMIS 0x00000002
/**< Timer A capture match masked status */
200
#define GPTIMER_MIS_TATOMIS 0x00000001
/**< Timer A time-out masked status */
201
/** @} */
202
/*---------------------------------------------------------------------------*/
203
/** \name GPTIMER_ICR register bit masks
204
* @{
205
*/
206
#define GPTIMER_ICR_WUECINT 0x00010000
/**< write update error int clear */
207
#define GPTIMER_ICR_TBMCINT 0x00000800
/**< Timer B match int clear */
208
#define GPTIMER_ICR_CBECINT 0x00000400
/**< Timer B capture event int clear */
209
#define GPTIMER_ICR_CBMCINT 0x00000200
/**< Timer B capture match int clear */
210
#define GPTIMER_ICR_TBTOCINT 0x00000100
/**< Timer B time-out int clear */
211
#define GPTIMER_ICR_TAMCINT 0x00000010
/**< Timer A match int clear */
212
#define GPTIMER_ICR_RTCCINT 0x00000008
/**< RTC interrupt clear */
213
#define GPTIMER_ICR_CAECINT 0x00000004
/**< Timer A capture event int clear */
214
#define GPTIMER_ICR_CAMCINT 0x00000002
/**< Timer A capture match int clear */
215
#define GPTIMER_ICR_TATOCINT 0x00000001
/**< Timer A time-out int clear */
216
/** @} */
217
/*---------------------------------------------------------------------------*/
218
/** \name GPTIMER_TAILR register bit masks
219
* @{
220
*/
221
#define GPTIMER_TAILR_TAILR 0xFFFFFFFF
/**< A interval load register */
222
/** @} */
223
/*---------------------------------------------------------------------------*/
224
/** \name GPTIMER_TBILR register bit masks
225
* @{
226
*/
227
#define GPTIMER_TBILR_TBILR 0x0000FFFF
/**< B interval load register */
228
/** @} */
229
/*---------------------------------------------------------------------------*/
230
/** \name GPTIMER_TAMATCHR register bit masks
231
* @{
232
*/
233
#define GPTIMER_TAMATCHR_TAMR 0xFFFFFFFF
/**< Timer A match register */
234
/** @} */
235
/*---------------------------------------------------------------------------*/
236
/** \name GPTIMER_TBMATCHR register bit masks
237
* @{
238
*/
239
#define GPTIMER_TBMATCHR_TBMR 0x0000FFFF
/**< Timer B match register */
240
/** @} */
241
/*---------------------------------------------------------------------------*/
242
/** \name GPTIMER_TAPR register bit masks
243
* @{
244
*/
245
#define GPTIMER_TAPR_TAPSR 0x000000FF
/**< Timer A prescale */
246
/** @} */
247
/*---------------------------------------------------------------------------*/
248
/** \name GPTIMER_TBPR register bit masks
249
* @{
250
*/
251
#define GPTIMER_TBPR_TBPSR 0x000000FF
/**< Timer B prescale */
252
/** @} */
253
/*---------------------------------------------------------------------------*/
254
/** \name GPTIMER_TAPMR register bit masks
255
* @{
256
*/
257
#define GPTIMER_TAPMR_TAPSR 0x000000FF
/**< Timer A prescale match */
258
/** @} */
259
/*---------------------------------------------------------------------------*/
260
/** \name GPTIMER_TBPMR register bit masks
261
* @{
262
*/
263
#define GPTIMER_TBPMR_TBPSR 0x000000FF
/**< Timer B prescale match */
264
/** @} */
265
/*---------------------------------------------------------------------------*/
266
/** \name GPTIMER_TAR register bit masks
267
* @{
268
*/
269
#define GPTIMER_TAR_TAR 0xFFFFFFFF
/**< Timer A register */
270
/** @} */
271
/*---------------------------------------------------------------------------*/
272
/** \name GPTIMER_TBR register bit masks
273
* @{
274
*/
275
#define GPTIMER_TBR_TBR 0x0000FFFF
/**< Timer B register */
276
/** @} */
277
/*---------------------------------------------------------------------------*/
278
/** \name GPTIMER_TAV register bit masks
279
* @{
280
*/
281
#define GPTIMER_TAV_TAV 0xFFFFFFFF
/**< Timer A register */
282
/** @} */
283
/*---------------------------------------------------------------------------*/
284
/** \name GPTIMER_TBV register bit masks
285
* @{
286
*/
287
#define GPTIMER_TBV_PRE 0x00FF0000
/**< Timer B prescale register */
288
#define GPTIMER_TBV_TBV 0x0000FFFF
/**< Timer B register */
289
/** @} */
290
/*---------------------------------------------------------------------------*/
291
/** \name GPTIMER_RTCPD register bit masks
292
* @{
293
*/
294
#define GPTIMER_RTCPD_RTCPD 0x0000FFFF
/**< RTC predivider */
295
/** @} */
296
/*---------------------------------------------------------------------------*/
297
/** \name GPTIMER_TAPS register bit masks
298
* @{
299
*/
300
#define GPTIMER_TAPS_PSS 0x0000FFFF
/**< Timer A prescaler */
301
/** @} */
302
/*---------------------------------------------------------------------------*/
303
/** \name GPTIMER_TBPS register bit masks
304
* @{
305
*/
306
#define GPTIMER_TBPS_PSS 0x0000FFFF
/**< Timer B prescaler */
307
/** @} */
308
/*---------------------------------------------------------------------------*/
309
/** \name GPTIMER_TAPV register bit masks
310
* @{
311
*/
312
#define GPTIMER_TAPV_PSV 0x0000FFFF
/**< Timer A prescaler value */
313
/** @} */
314
/*---------------------------------------------------------------------------*/
315
/** \name GPTIMER_TBPV register bit masks
316
* @{
317
*/
318
#define GPTIMER_TBPV_PSV 0x0000FFFF
/**< Timer B prescaler value */
319
/** @} */
320
/*---------------------------------------------------------------------------*/
321
/** \name GPTIMER_PP register bit masks
322
* @{
323
*/
324
#define GPTIMER_PP_ALTCLK 0x00000040
/**< Alternate clock source */
325
#define GPTIMER_PP_SYNCNT 0x00000020
/**< Synchronized start */
326
#define GPTIMER_PP_CHAIN 0x00000010
/**< Chain with other timers */
327
#define GPTIMER_PP_SIZE 0x0000000F
/**< Timer size */
328
/** @} */
329
330
#endif
/* GPTIMER_H_ */
331
332
/**
333
* @}
334
* @}
335
*/
arch
cpu
cc2538
dev
gptimer.h
Generated on
for Contiki-NG by
1.17.0