1 /* --COPYRIGHT--,BSD\r
2 * Copyright (c) 2014, Texas Instruments Incorporated\r
3 * All rights reserved.\r
4 *\r
5 * Redistribution and use in source and binary forms, with or without\r
6 * modification, are permitted provided that the following conditions\r
7 * are met:\r
8 *\r
9 * * Redistributions of source code must retain the above copyright\r
10 * notice, this list of conditions and the following disclaimer.\r
11 *\r
12 * * Redistributions in binary form must reproduce the above copyright\r
13 * notice, this list of conditions and the following disclaimer in the\r
14 * documentation and/or other materials provided with the distribution.\r
15 *\r
16 * * Neither the name of Texas Instruments Incorporated nor the names of\r
17 * its contributors may be used to endorse or promote products derived\r
18 * from this software without specific prior written permission.\r
19 *\r
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31 * --/COPYRIGHT--*/\r
32 //*****************************************************************************\r
33 //\r
34 // timer_d.h - Driver for the TIMER_D Module.\r
35 //\r
36 //*****************************************************************************\r
37 \r
38 #ifndef __MSP430WARE_TIMER_D_H__\r
39 #define __MSP430WARE_TIMER_D_H__\r
40 \r
41 #include "inc/hw_memmap.h"\r
42 \r
43 #ifdef __MSP430_HAS_TxD7__\r
44 \r
45 //*****************************************************************************\r
46 //\r
47 // If building with a C++ compiler, make all of the definitions in this header\r
48 // have a C binding.\r
49 //\r
50 //*****************************************************************************\r
51 #ifdef __cplusplus\r
52 extern "C"\r
53 {\r
54 #endif\r
55 \r
56 //******************************************************************************\r
57 //\r
58 // The following is a struct that is passed to TIMER_D_initContinuousMode()\r
59 //\r
60 //******************************************************************************\r
61 typedef struct TIMER_D_initContinuousModeParam {\r
62 uint16_t clockSource;\r
63 uint16_t clockSourceDivider;\r
64 uint16_t clockingMode;\r
65 uint16_t timerInterruptEnable_TDIE;\r
66 uint16_t timerClear;\r
67 } TIMER_D_initContinuousModeParam;\r
68 \r
69 //******************************************************************************\r
70 //\r
71 // The following is a struct that is passed to TIMER_D_initUpMode()\r
72 //\r
73 //******************************************************************************\r
74 typedef struct TIMER_D_initUpModeParam {\r
75 uint16_t clockSource;\r
76 uint16_t clockSourceDivider;\r
77 uint16_t clockingMode;\r
78 uint16_t timerPeriod;\r
79 uint16_t timerInterruptEnable_TDIE;\r
80 uint16_t captureCompareInterruptEnable_CCR0_CCIE;\r
81 uint16_t timerClear;\r
82 } TIMER_D_initUpModeParam;\r
83 \r
84 //******************************************************************************\r
85 //\r
86 // The following is a struct that is passed to TIMER_D_initUpDownMode()\r
87 //\r
88 //******************************************************************************\r
89 typedef struct TIMER_D_initUpDownModeParam {\r
90 uint16_t clockSource;\r
91 uint16_t clockSourceDivider;\r
92 uint16_t clockingMode;\r
93 uint16_t timerPeriod;\r
94 uint16_t timerInterruptEnable_TDIE;\r
95 uint16_t captureCompareInterruptEnable_CCR0_CCIE;\r
96 uint16_t timerClear;\r
97 } TIMER_D_initUpDownModeParam;\r
98 \r
99 //******************************************************************************\r
100 //\r
101 // The following is a struct that is passed to TIMER_D_initCaptureMode()\r
102 //\r
103 //******************************************************************************\r
104 typedef struct TIMER_D_initCaptureModeParam {\r
105 uint16_t captureRegister;\r
106 uint16_t captureMode;\r
107 uint16_t captureInputSelect;\r
108 uint16_t synchronizeCaptureSource;\r
109 uint16_t captureInterruptEnable;\r
110 uint16_t captureOutputMode;\r
111 uint8_t channelCaptureMode;\r
112 } TIMER_D_initCaptureModeParam;\r
113 \r
114 //******************************************************************************\r
115 //\r
116 // The following is a struct that is passed to TIMER_D_initCompareMode()\r
117 //\r
118 //******************************************************************************\r
119 typedef struct TIMER_D_initCompareModeParam {\r
120 uint16_t compareRegister;\r
121 uint16_t compareInterruptEnable;\r
122 uint16_t compareOutputMode;\r
123 uint16_t compareValue;\r
124 } TIMER_D_initCompareModeParam;\r
125 \r
126 //******************************************************************************\r
127 //\r
128 // The following is a struct that is passed to TIMER_D_outputPWM()\r
129 //\r
130 //******************************************************************************\r
131 typedef struct TIMER_D_outputPWMParam {\r
132 uint16_t clockSource;\r
133 uint16_t clockSourceDivider;\r
134 uint16_t clockingMode;\r
135 uint16_t timerPeriod;\r
136 uint16_t compareRegister;\r
137 uint16_t compareOutputMode;\r
138 uint16_t dutyCycle;\r
139 } TIMER_D_outputPWMParam;\r
140 \r
141 //******************************************************************************\r
142 //\r
143 // The following is a struct that is passed to\r
144 // TIMER_D_initHighResGeneratorInRegulatedMode()\r
145 //\r
146 //******************************************************************************\r
147 typedef struct TIMER_D_initHighResGeneratorInRegulatedModeParam {\r
148 uint16_t clockSource;\r
149 uint16_t clockSourceDivider;\r
150 uint16_t clockingMode;\r
151 uint8_t highResClockMultiplyFactor;\r
152 uint8_t highResClockDivider;\r
153 } TIMER_D_initHighResGeneratorInRegulatedModeParam;\r
154 \r
155 //******************************************************************************\r
156 //\r
157 // The following is a struct that is passed to\r
158 // TIMER_D_combineTDCCRToOutputPWM()\r
159 //\r
160 //******************************************************************************\r
161 typedef struct TIMER_D_combineTDCCRToOutputPWMParam {\r
162 uint16_t clockSource;\r
163 uint16_t clockSourceDivider;\r
164 uint16_t clockingMode;\r
165 uint16_t timerPeriod;\r
166 uint16_t combineCCRRegistersCombination;\r
167 uint16_t compareOutputMode;\r
168 uint16_t dutyCycle1;\r
169 uint16_t dutyCycle2;\r
170 } TIMER_D_combineTDCCRToOutputPWMParam;\r
171 \r
172 //*****************************************************************************\r
173 //\r
174 // The following is a parameter used for TIMER_D_getCounterValue that\r
175 // determines the maximum difference in counts of the TDxR register for a\r
176 // majority vote.\r
177 //\r
178 //*****************************************************************************\r
179 #define TIMER_D_THRESHOLD 50\r
180 \r
181 //*****************************************************************************\r
182 //\r
183 // The following are values that can be passed to the clockSourceDivider\r
184 // parameter for functions: TIMER_D_configureContinuousMode(),\r
185 // TIMER_D_configureUpMode(), TIMER_D_configureUpDownMode(),\r
186 // TIMER_D_generatePWM(), TIMER_D_configureHighResGeneratorInRegulatedMode(),\r
187 // and TIMER_D_combineTDCCRToGeneratePWM().\r
188 //\r
189 //*****************************************************************************\r
190 #define TIMER_D_CLOCKSOURCE_DIVIDER_1 0x00\r
191 #define TIMER_D_CLOCKSOURCE_DIVIDER_2 0x08\r
192 #define TIMER_D_CLOCKSOURCE_DIVIDER_3 0x02\r
193 #define TIMER_D_CLOCKSOURCE_DIVIDER_4 0x10\r
194 #define TIMER_D_CLOCKSOURCE_DIVIDER_5 0x04\r
195 #define TIMER_D_CLOCKSOURCE_DIVIDER_6 0x05\r
196 #define TIMER_D_CLOCKSOURCE_DIVIDER_7 0x06\r
197 #define TIMER_D_CLOCKSOURCE_DIVIDER_8 0x18\r
198 #define TIMER_D_CLOCKSOURCE_DIVIDER_10 0x0C\r
199 #define TIMER_D_CLOCKSOURCE_DIVIDER_12 0x0D\r
200 #define TIMER_D_CLOCKSOURCE_DIVIDER_14 0x0E\r
201 #define TIMER_D_CLOCKSOURCE_DIVIDER_16 0x0F\r
202 #define TIMER_D_CLOCKSOURCE_DIVIDER_20 0x14\r
203 #define TIMER_D_CLOCKSOURCE_DIVIDER_24 0x15\r
204 #define TIMER_D_CLOCKSOURCE_DIVIDER_28 0x16\r
205 #define TIMER_D_CLOCKSOURCE_DIVIDER_32 0x17\r
206 #define TIMER_D_CLOCKSOURCE_DIVIDER_40 0x1C\r
207 #define TIMER_D_CLOCKSOURCE_DIVIDER_48 0x1D\r
208 #define TIMER_D_CLOCKSOURCE_DIVIDER_56 0x1E\r
209 #define TIMER_D_CLOCKSOURCE_DIVIDER_64 0x1F\r
210 \r
211 //*****************************************************************************\r
212 //\r
213 // The following are values that can be passed to the timerMode parameter for\r
214 // functions: TIMER_D_startCounter().\r
215 //\r
216 //*****************************************************************************\r
217 #define TIMER_D_STOP_MODE MC_0\r
218 #define TIMER_D_UP_MODE MC_1\r
219 #define TIMER_D_CONTINUOUS_MODE MC_2\r
220 #define TIMER_D_UPDOWN_MODE MC_3\r
221 \r
222 //*****************************************************************************\r
223 //\r
224 // The following are values that can be passed to the timerClear parameter for\r
225 // functions: TIMER_D_configureContinuousMode(), TIMER_D_configureUpMode(), and\r
226 // TIMER_D_configureUpDownMode().\r
227 //\r
228 //*****************************************************************************\r
229 #define TIMER_D_DO_CLEAR TDCLR\r
230 #define TIMER_D_SKIP_CLEAR 0x00\r
231 \r
232 //*****************************************************************************\r
233 //\r
234 // The following are values that can be passed to the clockSource parameter for\r
235 // functions: TIMER_D_configureContinuousMode(), TIMER_D_configureUpMode(),\r
236 // TIMER_D_configureUpDownMode(), TIMER_D_generatePWM(),\r
237 // TIMER_D_configureHighResGeneratorInRegulatedMode(), and\r
238 // TIMER_D_combineTDCCRToGeneratePWM().\r
239 //\r
240 //*****************************************************************************\r
241 #define TIMER_D_CLOCKSOURCE_EXTERNAL_TDCLK TDSSEL__TACLK\r
242 #define TIMER_D_CLOCKSOURCE_ACLK TDSSEL__ACLK\r
243 #define TIMER_D_CLOCKSOURCE_SMCLK TDSSEL__SMCLK\r
244 #define TIMER_D_CLOCKSOURCE_INVERTED_EXTERNAL_TDCLK TDSSEL__INCLK\r
245 \r
246 //*****************************************************************************\r
247 //\r
248 // The following are values that can be passed to the clockingMode parameter\r
249 // for functions: TIMER_D_configureContinuousMode(), TIMER_D_configureUpMode(),\r
250 // TIMER_D_configureUpDownMode(), TIMER_D_generatePWM(),\r
251 // TIMER_D_configureHighResGeneratorInRegulatedMode(), and\r
252 // TIMER_D_combineTDCCRToGeneratePWM().\r
253 //\r
254 //*****************************************************************************\r
255 #define TIMER_D_CLOCKINGMODE_EXTERNAL_CLOCK TDCLKM_0\r
256 #define TIMER_D_CLOCKINGMODE_HIRES_LOCAL_CLOCK TDCLKM_1\r
257 #define TIMER_D_CLOCKINGMODE_AUXILIARY_CLK TDCLKM_2\r
258 \r
259 //*****************************************************************************\r
260 //\r
261 // The following are values that can be passed to the timerInterruptEnable_TDIE\r
262 // parameter for functions: TIMER_D_configureContinuousMode(),\r
263 // TIMER_D_configureUpMode(), and TIMER_D_configureUpDownMode().\r
264 //\r
265 //*****************************************************************************\r
266 #define TIMER_D_TDIE_INTERRUPT_ENABLE TDIE\r
267 #define TIMER_D_TDIE_INTERRUPT_DISABLE 0x00\r
268 \r
269 //*****************************************************************************\r
270 //\r
271 // The following are values that can be passed to the\r
272 // captureCompareInterruptEnable_CCR0_CCIE parameter for functions:\r
273 // TIMER_D_configureUpMode(), and TIMER_D_configureUpDownMode().\r
274 //\r
275 //*****************************************************************************\r
276 #define TIMER_D_CCIE_CCR0_INTERRUPT_ENABLE CCIE\r
277 #define TIMER_D_CCIE_CCR0_INTERRUPT_DISABLE 0x00\r
278 \r
279 //*****************************************************************************\r
280 //\r
281 // The following are values that can be passed to the channelCaptureMode\r
282 // parameter for functions: TIMER_D_initCapture().\r
283 //\r
284 //*****************************************************************************\r
285 #define TIMER_D_SINGLE_CAPTURE_MODE 0x00\r
286 #define TIMER_D_DUAL_CAPTURE_MODE 0x01\r
287 \r
288 //*****************************************************************************\r
289 //\r
290 // The following are values that can be passed to the captureInputSelect\r
291 // parameter for functions: TIMER_D_initCapture().\r
292 //\r
293 //*****************************************************************************\r
294 #define TIMER_D_CAPTURE_INPUTSELECT_CCIxA CCIS_0\r
295 #define TIMER_D_CAPTURE_INPUTSELECT_CCIxB CCIS_1\r
296 #define TIMER_D_CAPTURE_INPUTSELECT_GND CCIS_2\r
297 #define TIMER_D_CAPTURE_INPUTSELECT_Vcc CCIS_3\r
298 \r
299 //*****************************************************************************\r
300 //\r
301 // The following are values that can be passed to the compareOutputMode\r
302 // parameter for functions: TIMER_D_initCompare(), TIMER_D_generatePWM(), and\r
303 // TIMER_D_combineTDCCRToGeneratePWM(); the captureOutputMode parameter for\r
304 // functions: TIMER_D_initCapture().\r
305 //\r
306 //*****************************************************************************\r
307 #define TIMER_D_OUTPUTMODE_OUTBITVALUE OUTMOD_0\r
308 #define TIMER_D_OUTPUTMODE_SET OUTMOD_1\r
309 #define TIMER_D_OUTPUTMODE_TOGGLE_RESET OUTMOD_2\r
310 #define TIMER_D_OUTPUTMODE_SET_RESET OUTMOD_3\r
311 #define TIMER_D_OUTPUTMODE_TOGGLE OUTMOD_4\r
312 #define TIMER_D_OUTPUTMODE_RESET OUTMOD_5\r
313 #define TIMER_D_OUTPUTMODE_TOGGLE_SET OUTMOD_6\r
314 #define TIMER_D_OUTPUTMODE_RESET_SET OUTMOD_7\r
315 \r
316 //*****************************************************************************\r
317 //\r
318 // The following are values that can be passed to the compareRegister parameter\r
319 // for functions: TIMER_D_generatePWM(), TIMER_D_setCompareValue(),\r
320 // TIMER_D_initCompareLatchLoadEvent(), and TIMER_D_initCompare(); the\r
321 // captureCompareRegister parameter for functions:\r
322 // TIMER_D_enableCaptureCompareInterrupt(),\r
323 // TIMER_D_disableCaptureCompareInterrupt(),\r
324 // TIMER_D_getCaptureCompareInterruptStatus(),\r
325 // TIMER_D_getSynchronizedCaptureCompareInput(),\r
326 // TIMER_D_getOutputForOutputModeOutBitValue(),\r
327 // TIMER_D_getCaptureCompareCount(), TIMER_D_getCaptureCompareLatchCount(),\r
328 // TIMER_D_getCaptureCompareInputSignal(),\r
329 // TIMER_D_setOutputForOutputModeOutBitValue(), and\r
330 // TIMER_D_clearCaptureCompareInterruptFlag(); the captureRegister parameter\r
331 // for functions: TIMER_D_initCapture().\r
332 //\r
333 //*****************************************************************************\r
334 #define TIMER_D_CAPTURECOMPARE_REGISTER_0 0x08\r
335 #define TIMER_D_CAPTURECOMPARE_REGISTER_1 0x0E\r
336 #define TIMER_D_CAPTURECOMPARE_REGISTER_2 0x14\r
337 #define TIMER_D_CAPTURECOMPARE_REGISTER_3 0x1A\r
338 #define TIMER_D_CAPTURECOMPARE_REGISTER_4 0x20\r
339 #define TIMER_D_CAPTURECOMPARE_REGISTER_5 0x28\r
340 #define TIMER_D_CAPTURECOMPARE_REGISTER_6 0x2E\r
341 \r
342 //*****************************************************************************\r
343 //\r
344 // The following are values that can be passed to the captureMode parameter for\r
345 // functions: TIMER_D_initCapture().\r
346 //\r
347 //*****************************************************************************\r
348 #define TIMER_D_CAPTUREMODE_NO_CAPTURE CM_0\r
349 #define TIMER_D_CAPTUREMODE_RISING_EDGE CM_1\r
350 #define TIMER_D_CAPTUREMODE_FALLING_EDGE CM_2\r
351 #define TIMER_D_CAPTUREMODE_RISING_AND_FALLING_EDGE CM_3\r
352 \r
353 //*****************************************************************************\r
354 //\r
355 // The following are values that can be passed to the synchronizeCaptureSource\r
356 // parameter for functions: TIMER_D_initCapture().\r
357 //\r
358 //*****************************************************************************\r
359 #define TIMER_D_CAPTURE_ASYNCHRONOUS 0x00\r
360 #define TIMER_D_CAPTURE_SYNCHRONOUS SCS\r
361 \r
362 //*****************************************************************************\r
363 //\r
364 // The following are values that can be passed to the compareInterruptEnable\r
365 // parameter for functions: TIMER_D_initCompare().\r
366 //\r
367 //*****************************************************************************\r
368 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_ENABLE CCIE\r
369 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00\r
370 \r
371 //*****************************************************************************\r
372 //\r
373 // The following are values that can be passed to the mask parameter for\r
374 // functions: TIMER_D_enableHighResInterrupt(),\r
375 // TIMER_D_disableHighResInterrupt(), TIMER_D_getHighResInterruptStatus(), and\r
376 // TIMER_D_clearHighResInterruptStatus() as well as returned by the\r
377 // TIMER_D_getHighResInterruptStatus() function.\r
378 //\r
379 //*****************************************************************************\r
380 #define TIMER_D_HIGH_RES_FREQUENCY_UNLOCK TDHUNLKIE\r
381 #define TIMER_D_HIGH_RES_FREQUENCY_LOCK TDHLKIE\r
382 #define TIMER_D_HIGH_RES_FAIL_HIGH TDHFHIE\r
383 #define TIMER_D_HIGH_RES_FAIL_LOW TDHFLIE\r
384 \r
385 //*****************************************************************************\r
386 //\r
387 // The following are values that can be passed to the mask parameter for\r
388 // functions: TIMER_D_getCaptureCompareInterruptStatus() as well as returned by\r
389 // the TIMER_D_getCaptureCompareInterruptStatus() function.\r
390 //\r
391 //*****************************************************************************\r
392 #define TIMER_D_CAPTURE_OVERFLOW COV\r
393 #define TIMER_D_CAPTURECOMPARE_INTERRUPT_FLAG CCIFG\r
394 \r
395 //*****************************************************************************\r
396 //\r
397 // The following are values that can be passed to the synchronized parameter\r
398 // for functions: TIMER_D_getSynchronizedCaptureCompareInput().\r
399 //\r
400 //*****************************************************************************\r
401 #define TIMER_D_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT SCCI\r
402 #define TIMER_D_READ_CAPTURE_COMPARE_INPUT CCI\r
403 \r
404 //*****************************************************************************\r
405 //\r
406 // The following are values that can be passed to the outputModeOutBitValue\r
407 // parameter for functions: TIMER_D_setOutputForOutputModeOutBitValue() as well\r
408 // as returned by the TIMER_D_getOutputForOutputModeOutBitValue() function.\r
409 //\r
410 //*****************************************************************************\r
411 #define TIMER_D_OUTPUTMODE_OUTBITVALUE_HIGH OUT\r
412 #define TIMER_D_OUTPUTMODE_OUTBITVALUE_LOW 0x00\r
413 \r
414 //*****************************************************************************\r
415 //\r
416 // The following are values that can be passed to the desiredHighResFrequency\r
417 // parameter for functions: TIMER_D_initHighResGeneratorInFreeRunningMode().\r
418 //\r
419 //*****************************************************************************\r
420 #define TIMER_D_HIGHRES_64MHZ 0x00\r
421 #define TIMER_D_HIGHRES_128MHZ 0x01\r
422 #define TIMER_D_HIGHRES_200MHZ 0x02\r
423 #define TIMER_D_HIGHRES_256MHZ 0x03\r
424 \r
425 //*****************************************************************************\r
426 //\r
427 // The following are values that can be passed to the highResClockDivider\r
428 // parameter for functions: TIMER_D_configureHighResGeneratorInRegulatedMode().\r
429 //\r
430 //*****************************************************************************\r
431 #define TIMER_D_HIGHRES_CLK_DIVIDER_1 TDHD__1\r
432 #define TIMER_D_HIGHRES_CLK_DIVIDER_2 TDHD__2\r
433 #define TIMER_D_HIGHRES_CLK_DIVIDER_4 TDHD__4\r
434 #define TIMER_D_HIGHRES_CLK_DIVIDER_8 TDHD__8\r
435 \r
436 //*****************************************************************************\r
437 //\r
438 // The following are values that can be passed to the\r
439 // highResClockMultiplyFactor parameter for functions:\r
440 // TIMER_D_configureHighResGeneratorInRegulatedMode().\r
441 //\r
442 //*****************************************************************************\r
443 #define TIMER_D_HIGHRES_CLK_MULTIPLY_FACTOR_8x TDHM_0\r
444 #define TIMER_D_HIGHRES_CLK_MULTIPLY_FACTOR_16x TDHM_1\r
445 \r
446 //*****************************************************************************\r
447 //\r
448 // The following are values that can be passed to the\r
449 // combineCCRRegistersCombination parameter for functions:\r
450 // TIMER_D_combineTDCCRToGeneratePWM().\r
451 //\r
452 //*****************************************************************************\r
453 #define TIMER_D_COMBINE_CCR1_CCR2 2\r
454 #define TIMER_D_COMBINE_CCR3_CCR4 4\r
455 #define TIMER_D_COMBINE_CCR5_CCR6 6\r
456 \r
457 //*****************************************************************************\r
458 //\r
459 // The following are values that can be passed to the groupLatch parameter for\r
460 // functions: TIMER_D_selectLatchingGroup().\r
461 //\r
462 //*****************************************************************************\r
463 #define TIMER_D_GROUP_NONE TDCLGRP_0\r
464 #define TIMER_D_GROUP_CL12_CL23_CL56 TDCLGRP_1\r
465 #define TIMER_D_GROUP_CL123_CL456 TDCLGRP_2\r
466 #define TIMER_D_GROUP_ALL TDCLGRP_3\r
467 \r
468 //*****************************************************************************\r
469 //\r
470 // The following are values that can be passed to the counterLength parameter\r
471 // for functions: TIMER_D_selectCounterLength().\r
472 //\r
473 //*****************************************************************************\r
474 #define TIMER_D_COUNTER_16BIT CNTL_0\r
475 #define TIMER_D_COUNTER_12BIT CNTL_1\r
476 #define TIMER_D_COUNTER_10BIT CNTL_2\r
477 #define TIMER_D_COUNTER_8BIT CNTL_3\r
478 \r
479 //*****************************************************************************\r
480 //\r
481 // The following are values that can be passed to the compareLatchLoadEvent\r
482 // parameter for functions: TIMER_D_initCompareLatchLoadEvent().\r
483 //\r
484 //*****************************************************************************\r
485 #define TIMER_D_LATCH_ON_WRITE_TO_TDxCCRn_COMPARE_REGISTER CLLD_0\r
486 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_0_IN_UP_OR_CONT_MODE CLLD_1\r
487 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_0_IN_UPDOWN_MODE CLLD_2\r
488 #define TIMER_D_LATCH_WHEN_COUNTER_COUNTS_TO_CURRENT_COMPARE_LATCH_VALUE CLLD_3\r
489 \r
490 //*****************************************************************************\r
491 //\r
492 // The following are values that can be passed to the highResCoarseClockRange\r
493 // parameter for functions: TIMER_D_selectHighResCoarseClockRange().\r
494 //\r
495 //*****************************************************************************\r
496 #define TIMER_D_HIGHRES_BELOW_15MHz 0x00\r
497 #define TIMER_D_HIGHRES_ABOVE_15MHz TDHCLKCR\r
498 \r
499 //*****************************************************************************\r
500 //\r
501 // The following are values that can be passed to the highResClockRange\r
502 // parameter for functions: TIMER_D_selectHighResClockRange().\r
503 //\r
504 //*****************************************************************************\r
505 #define TIMER_D_CLOCK_RANGE0 0x0000\r
506 #define TIMER_D_CLOCK_RANGE1 0x2000\r
507 #define TIMER_D_CLOCK_RANGE2 0x4000\r
508 \r
509 //*****************************************************************************\r
510 //\r
511 // The following are values that can be passed toThe following are values that\r
512 // can be returned by the TIMER_D_getSynchronizedCaptureCompareInput()\r
513 // function.\r
514 //\r
515 //*****************************************************************************\r
516 #define TIMER_D_CAPTURECOMPARE_INPUT_HIGH 0x01\r
517 #define TIMER_D_CAPTURECOMPARE_INPUT_LOW 0x00\r
518 \r
519 //*****************************************************************************\r
520 //\r
521 // The following are values that can be passed toThe following are values that\r
522 // can be returned by the TIMER_D_getTimerInterruptStatus() function.\r
523 //\r
524 //*****************************************************************************\r
525 #define TIMER_D_INTERRUPT_NOT_PENDING 0x00\r
526 #define TIMER_D_INTERRUPT_PENDING 0x01\r
527 \r
528 //*****************************************************************************\r
529 //\r
530 // The following are values that can be passed toThe following are values that\r
531 // can be returned by the TIMER_D_getCaptureCompareInputSignal() function.\r
532 //\r
533 //*****************************************************************************\r
534 #define TIMER_D_CAPTURECOMPARE_INPUT CCI\r
535 \r
536 //*****************************************************************************\r
537 //\r
538 // Prototypes for the APIs.\r
539 //\r
540 //*****************************************************************************\r
541 extern void TIMER_D_startCounter(uint16_t baseAddress,\r
542 uint16_t timerMode);\r
543 \r
544 extern void TIMER_D_initContinuousMode(uint16_t baseAddress,\r
545 TIMER_D_initContinuousModeParam *param);\r
546 \r
547 extern void TIMER_D_initUpMode(uint16_t baseAddress,\r
548 TIMER_D_initUpModeParam *param);\r
549 \r
550 extern void TIMER_D_initUpDownMode(uint16_t baseAddress,\r
551 TIMER_D_initUpDownModeParam *param);\r
552 \r
553 extern void TIMER_D_initCaptureMode(uint16_t baseAddress,\r
554 TIMER_D_initCaptureModeParam *param);\r
555 \r
556 extern void TIMER_D_initCompareMode(uint16_t baseAddress,\r
557 TIMER_D_initCompareModeParam *param);\r
558 \r
559 extern void TIMER_D_enableTimerInterrupt(uint16_t baseAddress);\r
560 \r
561 extern void TIMER_D_enableHighResInterrupt(uint16_t baseAddress,\r
562 uint16_t mask);\r
563 \r
564 extern void TIMER_D_disableTimerInterrupt(uint16_t baseAddress);\r
565 \r
566 extern void TIMER_D_disableHighResInterrupt(uint16_t baseAddress,\r
567 uint16_t mask);\r
568 \r
569 extern uint32_t TIMER_D_getTimerInterruptStatus(uint16_t baseAddress);\r
570 \r
571 extern void TIMER_D_enableCaptureCompareInterrupt(uint16_t baseAddress,\r
572 uint16_t captureCompareRegister);\r
573 \r
574 extern void TIMER_D_disableCaptureCompareInterrupt(uint16_t baseAddress,\r
575 uint16_t captureCompareRegister);\r
576 \r
577 extern uint32_t TIMER_D_getCaptureCompareInterruptStatus(uint16_t baseAddress,\r
578 uint16_t captureCompareRegister,\r
579 uint16_t mask);\r
580 \r
581 extern uint16_t TIMER_D_getHighResInterruptStatus(uint16_t baseAddress,\r
582 uint16_t mask);\r
583 \r
584 extern void TIMER_D_clear(uint16_t baseAddress);\r
585 \r
586 extern void TIMER_D_clearHighResInterruptStatus(uint16_t baseAddress,\r
587 uint16_t mask);\r
588 \r
589 extern uint8_t TIMER_D_getSynchronizedCaptureCompareInput(uint16_t baseAddress,\r
590 uint16_t captureCompareRegister,\r
591 uint16_t synchronized);\r
592 \r
593 extern uint8_t TIMER_D_getOutputForOutputModeOutBitValue(uint16_t baseAddress,\r
594 uint16_t captureCompareRegister);\r
595 \r
596 extern uint16_t TIMER_D_getCaptureCompareCount(uint16_t baseAddress,\r
597 uint16_t captureCompareRegister);\r
598 \r
599 extern uint16_t TIMER_D_getCaptureCompareLatchCount(uint16_t baseAddress,\r
600 uint16_t captureCompareRegister);\r
601 \r
602 extern uint8_t TIMER_D_getCaptureCompareInputSignal(uint16_t baseAddress,\r
603 uint16_t captureCompareRegister);\r
604 \r
605 extern void TIMER_D_setOutputForOutputModeOutBitValue(uint16_t baseAddress,\r
606 uint16_t captureCompareRegister,\r
607 uint8_t outputModeOutBitValue);\r
608 \r
609 extern void TIMER_D_outputPWM(uint16_t baseAddress,\r
610 TIMER_D_outputPWMParam *param);\r
611 \r
612 extern void TIMER_D_stop(uint16_t baseAddress);\r
613 \r
614 extern void TIMER_D_setCompareValue(uint16_t baseAddress,\r
615 uint16_t compareRegister,\r
616 uint16_t compareValue);\r
617 \r
618 extern void TIMER_D_clearTimerInterruptFlag(uint16_t baseAddress);\r
619 \r
620 extern void TIMER_D_clearCaptureCompareInterruptFlag(uint16_t baseAddress,\r
621 uint16_t captureCompareRegister);\r
622 \r
623 extern uint8_t TIMER_D_initHighResGeneratorInFreeRunningMode(uint16_t baseAddress,\r
624 uint8_t desiredHighResFrequency);\r
625 \r
626 extern void TIMER_D_initHighResGeneratorInRegulatedMode(uint16_t baseAddress,\r
627 TIMER_D_initHighResGeneratorInRegulatedModeParam *param);\r
628 \r
629 extern void TIMER_D_combineTDCCRToOutputPWM(uint16_t baseAddress,\r
630 TIMER_D_combineTDCCRToOutputPWMParam *param);\r
631 \r
632 extern void TIMER_D_selectLatchingGroup(uint16_t baseAddress,\r
633 uint16_t groupLatch);\r
634 \r
635 extern void TIMER_D_selectCounterLength(uint16_t baseAddress,\r
636 uint16_t counterLength);\r
637 \r
638 extern void TIMER_D_initCompareLatchLoadEvent(uint16_t baseAddress,\r
639 uint16_t compareRegister,\r
640 uint16_t compareLatchLoadEvent);\r
641 \r
642 extern void TIMER_D_disableHighResFastWakeup(uint16_t baseAddress);\r
643 \r
644 extern void TIMER_D_enableHighResFastWakeup(uint16_t baseAddress);\r
645 \r
646 extern void TIMER_D_disableHighResClockEnhancedAccuracy(uint16_t baseAddress);\r
647 \r
648 extern void TIMER_D_enableHighResClockEnhancedAccuracy(uint16_t baseAddress);\r
649 \r
650 extern void TIMER_D_DisableHighResGeneratorForceON(uint16_t baseAddress);\r
651 \r
652 extern void TIMER_D_EnableHighResGeneratorForceON(uint16_t baseAddress);\r
653 \r
654 extern void TIMER_D_selectHighResCoarseClockRange(uint16_t baseAddress,\r
655 uint16_t highResCoarseClockRange);\r
656 \r
657 extern void TIMER_D_selectHighResClockRange(uint16_t baseAddress,\r
658 uint16_t highResClockRange);\r
659 \r
660 extern uint16_t TIMER_D_getCounterValue(uint16_t baseAddress);\r
661 \r
662 //*****************************************************************************\r
663 //\r
664 // The following are deprecated APIs.\r
665 //\r
666 //*****************************************************************************\r
667 #define TIMER_D_configureHighResGeneratorInFreeRunningMode \\r
668 TIMER_D_initHighResGeneratorInFreeRunningMode\r
669 \r
670 //*****************************************************************************\r
671 //\r
672 // The following are deprecated APIs.\r
673 //\r
674 //*****************************************************************************\r
675 extern void TIMER_D_configureContinuousMode(uint16_t baseAddress,\r
676 uint16_t clockSource,\r
677 uint16_t clockSourceDivider,\r
678 uint16_t clockingMode,\r
679 uint16_t timerInterruptEnable_TDIE,\r
680 uint16_t timerClear);\r
681 \r
682 extern void TIMER_D_configureUpMode(uint16_t baseAddress,\r
683 uint16_t clockSource,\r
684 uint16_t clockSourceDivider,\r
685 uint16_t clockingMode,\r
686 uint16_t timerPeriod,\r
687 uint16_t timerInterruptEnable_TDIE,\r
688 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
689 uint16_t timerClear);\r
690 \r
691 extern void TIMER_D_configureUpDownMode(uint16_t baseAddress,\r
692 uint16_t clockSource,\r
693 uint16_t clockSourceDivider,\r
694 uint16_t clockingMode,\r
695 uint16_t timerPeriod,\r
696 uint16_t timerInterruptEnable_TDIE,\r
697 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
698 uint16_t timerClear);\r
699 \r
700 extern void TIMER_D_initCapture(uint16_t baseAddress,\r
701 uint16_t captureRegister,\r
702 uint16_t captureMode,\r
703 uint16_t captureInputSelect,\r
704 uint16_t synchronizeCaptureSource,\r
705 uint16_t captureInterruptEnable,\r
706 uint16_t captureOutputMode,\r
707 uint8_t channelCaptureMode);\r
708 \r
709 extern void TIMER_D_initCompare(uint16_t baseAddress,\r
710 uint16_t compareRegister,\r
711 uint16_t compareInterruptEnable,\r
712 uint16_t compareOutputMode,\r
713 uint16_t compareValue);\r
714 \r
715 extern void TIMER_D_generatePWM(uint16_t baseAddress,\r
716 uint16_t clockSource,\r
717 uint16_t clockSourceDivider,\r
718 uint16_t clockingMode,\r
719 uint16_t timerPeriod,\r
720 uint16_t compareRegister,\r
721 uint16_t compareOutputMode,\r
722 uint16_t dutyCycle);\r
723 \r
724 extern void TIMER_D_configureHighResGeneratorInRegulatedMode(uint16_t baseAddress,\r
725 uint16_t clockSource,\r
726 uint16_t clockSourceDivider,\r
727 uint16_t clockingMode,\r
728 uint8_t highResClockMultiplyFactor,\r
729 uint8_t highResClockDivider);\r
730 \r
731 extern void TIMER_D_combineTDCCRToGeneratePWM(uint16_t baseAddress,\r
732 uint16_t clockSource,\r
733 uint16_t clockSourceDivider,\r
734 uint16_t clockingMode,\r
735 uint16_t timerPeriod,\r
736 uint16_t combineCCRRegistersCombination,\r
737 uint16_t compareOutputMode,\r
738 uint16_t dutyCycle1,\r
739 uint16_t dutyCycle2);\r
740 \r
741 //*****************************************************************************\r
742 //\r
743 // Mark the end of the C bindings section for C++ compilers.\r
744 //\r
745 //*****************************************************************************\r
746 #ifdef __cplusplus\r
747 }\r
748 #endif\r
749 \r
750 #endif\r
751 #endif // __MSP430WARE_TIMER_D_H__\r