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_a.h - Driver for the TIMER_A Module.\r
35 //\r
36 //*****************************************************************************\r
37 \r
38 #ifndef __MSP430WARE_TIMER_A_H__\r
39 #define __MSP430WARE_TIMER_A_H__\r
40 \r
41 #include "inc/hw_memmap.h"\r
42 \r
43 #ifdef __MSP430_HAS_TxA7__\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_A_initContinuousMode()\r
59 //\r
60 //******************************************************************************\r
61 typedef struct TIMER_A_initContinuousModeParam {\r
62 uint16_t clockSource;\r
63 uint16_t clockSourceDivider;\r
64 uint16_t timerInterruptEnable_TAIE;\r
65 uint16_t timerClear;\r
66 bool startTimer;\r
67 } TIMER_A_initContinuousModeParam;\r
68 \r
69 //******************************************************************************\r
70 //\r
71 // The following is a struct that is passed to TIMER_A_initUpMode()\r
72 //\r
73 //******************************************************************************\r
74 typedef struct TIMER_A_initUpModeParam {\r
75 uint16_t clockSource;\r
76 uint16_t clockSourceDivider;\r
77 uint16_t timerPeriod;\r
78 uint16_t timerInterruptEnable_TAIE;\r
79 uint16_t captureCompareInterruptEnable_CCR0_CCIE;\r
80 uint16_t timerClear;\r
81 bool startTimer;\r
82 } TIMER_A_initUpModeParam;\r
83 \r
84 //******************************************************************************\r
85 //\r
86 // The following is a struct that is passed to TIMER_A_initUpDownMode()\r
87 //\r
88 //******************************************************************************\r
89 typedef struct TIMER_A_initUpDownModeParam {\r
90 uint16_t clockSource;\r
91 uint16_t clockSourceDivider;\r
92 uint16_t timerPeriod;\r
93 uint16_t timerInterruptEnable_TAIE;\r
94 uint16_t captureCompareInterruptEnable_CCR0_CCIE;\r
95 uint16_t timerClear;\r
96 bool startTimer;\r
97 } TIMER_A_initUpDownModeParam;\r
98 \r
99 //******************************************************************************\r
100 //\r
101 // The following is a struct that is passed to TIMER_A_initCaptureMode()\r
102 //\r
103 //******************************************************************************\r
104 typedef struct TIMER_A_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 } TIMER_A_initCaptureModeParam;\r
112 \r
113 //******************************************************************************\r
114 //\r
115 // The following is a struct that is passed to TIMER_A_initCompareMode()\r
116 //\r
117 //******************************************************************************\r
118 typedef struct TIMER_A_initCompareModeParam {\r
119 uint16_t compareRegister;\r
120 uint16_t compareInterruptEnable;\r
121 uint16_t compareOutputMode;\r
122 uint16_t compareValue;\r
123 } TIMER_A_initCompareModeParam;\r
124 \r
125 //******************************************************************************\r
126 //\r
127 // The following is a struct that is passed to TIMER_A_outputPWM()\r
128 //\r
129 //******************************************************************************\r
130 typedef struct TIMER_A_outputPWMParam {\r
131 uint16_t clockSource;\r
132 uint16_t clockSourceDivider;\r
133 uint16_t timerPeriod;\r
134 uint16_t compareRegister;\r
135 uint16_t compareOutputMode;\r
136 uint16_t dutyCycle;\r
137 } TIMER_A_outputPWMParam;\r
138 \r
139 //*****************************************************************************\r
140 //\r
141 // The following is a parameter used for TIMER_A_getCounterValue that\r
142 // determines the maximum difference in counts of the TAxR register for a\r
143 // majority vote.\r
144 //\r
145 //*****************************************************************************\r
146 #define TIMER_A_THRESHOLD 50\r
147 \r
148 //*****************************************************************************\r
149 //\r
150 // The following are values that can be passed to the clockSourceDivider\r
151 // parameter for functions: TIMER_A_configureContinuousMode(),\r
152 // TIMER_A_configureUpMode(), TIMER_A_configureUpDownMode(),\r
153 // TIMER_A_startContinuousMode(), TIMER_A_startContinousMode(),\r
154 // TIMER_A_startUpMode(), TIMER_A_startUpDownMode(), and TIMER_A_generatePWM().\r
155 //\r
156 //*****************************************************************************\r
157 #define TIMER_A_CLOCKSOURCE_DIVIDER_1 0x00\r
158 #define TIMER_A_CLOCKSOURCE_DIVIDER_2 0x08\r
159 #define TIMER_A_CLOCKSOURCE_DIVIDER_3 0x02\r
160 #define TIMER_A_CLOCKSOURCE_DIVIDER_4 0x10\r
161 #define TIMER_A_CLOCKSOURCE_DIVIDER_5 0x04\r
162 #define TIMER_A_CLOCKSOURCE_DIVIDER_6 0x05\r
163 #define TIMER_A_CLOCKSOURCE_DIVIDER_7 0x06\r
164 #define TIMER_A_CLOCKSOURCE_DIVIDER_8 0x18\r
165 #define TIMER_A_CLOCKSOURCE_DIVIDER_10 0x0C\r
166 #define TIMER_A_CLOCKSOURCE_DIVIDER_12 0x0D\r
167 #define TIMER_A_CLOCKSOURCE_DIVIDER_14 0x0E\r
168 #define TIMER_A_CLOCKSOURCE_DIVIDER_16 0x0F\r
169 #define TIMER_A_CLOCKSOURCE_DIVIDER_20 0x14\r
170 #define TIMER_A_CLOCKSOURCE_DIVIDER_24 0x15\r
171 #define TIMER_A_CLOCKSOURCE_DIVIDER_28 0x16\r
172 #define TIMER_A_CLOCKSOURCE_DIVIDER_32 0x17\r
173 #define TIMER_A_CLOCKSOURCE_DIVIDER_40 0x1C\r
174 #define TIMER_A_CLOCKSOURCE_DIVIDER_48 0x1D\r
175 #define TIMER_A_CLOCKSOURCE_DIVIDER_56 0x1E\r
176 #define TIMER_A_CLOCKSOURCE_DIVIDER_64 0x1F\r
177 \r
178 //*****************************************************************************\r
179 //\r
180 // The following are values that can be passed to the timerMode parameter for\r
181 // functions: TIMER_A_startCounter().\r
182 //\r
183 //*****************************************************************************\r
184 #define TIMER_A_STOP_MODE MC_0\r
185 #define TIMER_A_UP_MODE MC_1\r
186 #define TIMER_A_CONTINUOUS_MODE MC_2\r
187 #define TIMER_A_UPDOWN_MODE MC_3\r
188 \r
189 //*****************************************************************************\r
190 //\r
191 // The following are values that can be passed to the timerClear parameter for\r
192 // functions: TIMER_A_configureContinuousMode(), TIMER_A_configureUpMode(),\r
193 // TIMER_A_configureUpDownMode(), TIMER_A_startContinuousMode(),\r
194 // TIMER_A_startContinousMode(), TIMER_A_startUpMode(), and\r
195 // TIMER_A_startUpDownMode().\r
196 //\r
197 //*****************************************************************************\r
198 #define TIMER_A_DO_CLEAR TACLR\r
199 #define TIMER_A_SKIP_CLEAR 0x00\r
200 \r
201 //*****************************************************************************\r
202 //\r
203 // The following are values that can be passed to the clockSource parameter for\r
204 // functions: TIMER_A_configureContinuousMode(), TIMER_A_configureUpMode(),\r
205 // TIMER_A_configureUpDownMode(), TIMER_A_startContinuousMode(),\r
206 // TIMER_A_startContinousMode(), TIMER_A_startUpMode(),\r
207 // TIMER_A_startUpDownMode(), and TIMER_A_generatePWM().\r
208 //\r
209 //*****************************************************************************\r
210 #define TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK TASSEL__TACLK\r
211 #define TIMER_A_CLOCKSOURCE_ACLK TASSEL__ACLK\r
212 #define TIMER_A_CLOCKSOURCE_SMCLK TASSEL__SMCLK\r
213 #define TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK TASSEL__INCLK\r
214 \r
215 //*****************************************************************************\r
216 //\r
217 // The following are values that can be passed to the timerInterruptEnable_TAIE\r
218 // parameter for functions: TIMER_A_configureContinuousMode(),\r
219 // TIMER_A_configureUpMode(), TIMER_A_configureUpDownMode(),\r
220 // TIMER_A_startContinuousMode(), TIMER_A_startContinousMode(),\r
221 // TIMER_A_startUpMode(), and TIMER_A_startUpDownMode().\r
222 //\r
223 //*****************************************************************************\r
224 #define TIMER_A_TAIE_INTERRUPT_ENABLE TAIE\r
225 #define TIMER_A_TAIE_INTERRUPT_DISABLE 0x00\r
226 \r
227 //*****************************************************************************\r
228 //\r
229 // The following are values that can be passed to the\r
230 // captureCompareInterruptEnable_CCR0_CCIE parameter for functions:\r
231 // TIMER_A_configureUpMode(), TIMER_A_configureUpDownMode(),\r
232 // TIMER_A_startUpMode(), and TIMER_A_startUpDownMode().\r
233 //\r
234 //*****************************************************************************\r
235 #define TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE CCIE\r
236 #define TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE 0x00\r
237 \r
238 //*****************************************************************************\r
239 //\r
240 // The following are values that can be passed to the captureInterruptEnable\r
241 // parameter for functions: TIMER_A_initCapture(); the compareInterruptEnable\r
242 // parameter for functions: TIMER_A_initCompare().\r
243 //\r
244 //*****************************************************************************\r
245 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00\r
246 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE CCIE\r
247 \r
248 //*****************************************************************************\r
249 //\r
250 // The following are values that can be passed to the captureInputSelect\r
251 // parameter for functions: TIMER_A_initCapture().\r
252 //\r
253 //*****************************************************************************\r
254 #define TIMER_A_CAPTURE_INPUTSELECT_CCIxA CCIS_0\r
255 #define TIMER_A_CAPTURE_INPUTSELECT_CCIxB CCIS_1\r
256 #define TIMER_A_CAPTURE_INPUTSELECT_GND CCIS_2\r
257 #define TIMER_A_CAPTURE_INPUTSELECT_Vcc CCIS_3\r
258 \r
259 //*****************************************************************************\r
260 //\r
261 // The following are values that can be passed to the compareOutputMode\r
262 // parameter for functions: TIMER_A_initCompare(), and TIMER_A_generatePWM();\r
263 // the captureOutputMode parameter for functions: TIMER_A_initCapture().\r
264 //\r
265 //*****************************************************************************\r
266 #define TIMER_A_OUTPUTMODE_OUTBITVALUE OUTMOD_0\r
267 #define TIMER_A_OUTPUTMODE_SET OUTMOD_1\r
268 #define TIMER_A_OUTPUTMODE_TOGGLE_RESET OUTMOD_2\r
269 #define TIMER_A_OUTPUTMODE_SET_RESET OUTMOD_3\r
270 #define TIMER_A_OUTPUTMODE_TOGGLE OUTMOD_4\r
271 #define TIMER_A_OUTPUTMODE_RESET OUTMOD_5\r
272 #define TIMER_A_OUTPUTMODE_TOGGLE_SET OUTMOD_6\r
273 #define TIMER_A_OUTPUTMODE_RESET_SET OUTMOD_7\r
274 \r
275 //*****************************************************************************\r
276 //\r
277 // The following are values that can be passed to the compareRegister parameter\r
278 // for functions: TIMER_A_initCompare(), TIMER_A_generatePWM(), and\r
279 // TIMER_A_setCompareValue(); the captureCompareRegister parameter for\r
280 // functions: TIMER_A_enableCaptureCompareInterrupt(),\r
281 // TIMER_A_disableCaptureCompareInterrupt(),\r
282 // TIMER_A_getCaptureCompareInterruptStatus(),\r
283 // TIMER_A_getSynchronizedCaptureCompareInput(),\r
284 // TIMER_A_getOutputForOutputModeOutBitValue(),\r
285 // TIMER_A_getCaptureCompareCount(),\r
286 // TIMER_A_setOutputForOutputModeOutBitValue(), and\r
287 // TIMER_A_clearCaptureCompareInterruptFlag(); the captureRegister parameter\r
288 // for functions: TIMER_A_initCapture().\r
289 //\r
290 //*****************************************************************************\r
291 #define TIMER_A_CAPTURECOMPARE_REGISTER_0 0x02\r
292 #define TIMER_A_CAPTURECOMPARE_REGISTER_1 0x04\r
293 #define TIMER_A_CAPTURECOMPARE_REGISTER_2 0x06\r
294 #define TIMER_A_CAPTURECOMPARE_REGISTER_3 0x08\r
295 #define TIMER_A_CAPTURECOMPARE_REGISTER_4 0x0A\r
296 #define TIMER_A_CAPTURECOMPARE_REGISTER_5 0x0C\r
297 #define TIMER_A_CAPTURECOMPARE_REGISTER_6 0x0E\r
298 \r
299 //*****************************************************************************\r
300 //\r
301 // The following are values that can be passed to the captureMode parameter for\r
302 // functions: TIMER_A_initCapture().\r
303 //\r
304 //*****************************************************************************\r
305 #define TIMER_A_CAPTUREMODE_NO_CAPTURE CM_0\r
306 #define TIMER_A_CAPTUREMODE_RISING_EDGE CM_1\r
307 #define TIMER_A_CAPTUREMODE_FALLING_EDGE CM_2\r
308 #define TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE CM_3\r
309 \r
310 //*****************************************************************************\r
311 //\r
312 // The following are values that can be passed to the synchronizeCaptureSource\r
313 // parameter for functions: TIMER_A_initCapture().\r
314 //\r
315 //*****************************************************************************\r
316 #define TIMER_A_CAPTURE_ASYNCHRONOUS 0x00\r
317 #define TIMER_A_CAPTURE_SYNCHRONOUS SCS\r
318 \r
319 //*****************************************************************************\r
320 //\r
321 // The following are values that can be passed to the mask parameter for\r
322 // functions: TIMER_A_getCaptureCompareInterruptStatus() as well as returned by\r
323 // the TIMER_A_getCaptureCompareInterruptStatus() function.\r
324 //\r
325 //*****************************************************************************\r
326 #define TIMER_A_CAPTURE_OVERFLOW COV\r
327 #define TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG CCIFG\r
328 \r
329 //*****************************************************************************\r
330 //\r
331 // The following are values that can be passed to the synchronized parameter\r
332 // for functions: TIMER_A_getSynchronizedCaptureCompareInput().\r
333 //\r
334 //*****************************************************************************\r
335 #define TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT SCCI\r
336 #define TIMER_A_READ_CAPTURE_COMPARE_INPUT CCI\r
337 \r
338 //*****************************************************************************\r
339 //\r
340 // The following are values that can be passed toThe following are values that\r
341 // can be returned by the TIMER_A_getSynchronizedCaptureCompareInput()\r
342 // function.\r
343 //\r
344 //*****************************************************************************\r
345 #define TIMER_A_CAPTURECOMPARE_INPUT_HIGH 0x01\r
346 #define TIMER_A_CAPTURECOMPARE_INPUT_LOW 0x00\r
347 \r
348 //*****************************************************************************\r
349 //\r
350 // The following are values that can be passed to the outputModeOutBitValue\r
351 // parameter for functions: TIMER_A_setOutputForOutputModeOutBitValue() as well\r
352 // as returned by the TIMER_A_getOutputForOutputModeOutBitValue() function.\r
353 //\r
354 //*****************************************************************************\r
355 #define TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH OUT\r
356 #define TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW 0x00\r
357 \r
358 //*****************************************************************************\r
359 //\r
360 // The following are values that can be passed toThe following are values that\r
361 // can be returned by the TIMER_A_getInterruptStatus() function.\r
362 //\r
363 //*****************************************************************************\r
364 #define TIMER_A_INTERRUPT_NOT_PENDING 0x00\r
365 #define TIMER_A_INTERRUPT_PENDING 0x01\r
366 \r
367 //*****************************************************************************\r
368 //\r
369 // Prototypes for the APIs.\r
370 //\r
371 //*****************************************************************************\r
372 extern void TIMER_A_startCounter(uint16_t baseAddress,\r
373 uint16_t timerMode);\r
374 \r
375 extern void TIMER_A_initContinuousMode(uint16_t baseAddress,\r
376 TIMER_A_initContinuousModeParam *param);\r
377 \r
378 extern void TIMER_A_initUpMode(uint16_t baseAddress,\r
379 TIMER_A_initUpModeParam *param);\r
380 \r
381 extern void TIMER_A_initUpDownMode(uint16_t baseAddress,\r
382 TIMER_A_initUpDownModeParam *param);\r
383 \r
384 extern void TIMER_A_initCaptureMode(uint16_t baseAddress,\r
385 TIMER_A_initCaptureModeParam *param);\r
386 \r
387 extern void TIMER_A_initCompareMode(uint16_t baseAddress,\r
388 TIMER_A_initCompareModeParam *param);\r
389 \r
390 extern void TIMER_A_enableInterrupt(uint16_t baseAddress);\r
391 \r
392 extern void TIMER_A_disableInterrupt(uint16_t baseAddress);\r
393 \r
394 extern uint32_t TIMER_A_getInterruptStatus(uint16_t baseAddress);\r
395 \r
396 extern void TIMER_A_enableCaptureCompareInterrupt(uint16_t baseAddress,\r
397 uint16_t captureCompareRegister);\r
398 \r
399 extern void TIMER_A_disableCaptureCompareInterrupt(uint16_t baseAddress,\r
400 uint16_t captureCompareRegister);\r
401 \r
402 extern uint32_t TIMER_A_getCaptureCompareInterruptStatus(uint16_t baseAddress,\r
403 uint16_t captureCompareRegister,\r
404 uint16_t mask);\r
405 \r
406 extern void TIMER_A_clear(uint16_t baseAddress);\r
407 \r
408 extern uint8_t TIMER_A_getSynchronizedCaptureCompareInput(uint16_t baseAddress,\r
409 uint16_t captureCompareRegister,\r
410 uint16_t synchronized);\r
411 \r
412 extern uint8_t TIMER_A_getOutputForOutputModeOutBitValue(uint16_t baseAddress,\r
413 uint16_t captureCompareRegister);\r
414 \r
415 extern uint16_t TIMER_A_getCaptureCompareCount(uint16_t baseAddress,\r
416 uint16_t captureCompareRegister);\r
417 \r
418 extern void TIMER_A_setOutputForOutputModeOutBitValue(uint16_t baseAddress,\r
419 uint16_t captureCompareRegister,\r
420 uint8_t outputModeOutBitValue);\r
421 \r
422 extern void TIMER_A_outputPWM(uint16_t baseAddress,\r
423 TIMER_A_outputPWMParam *param);\r
424 \r
425 extern void TIMER_A_stop(uint16_t baseAddress);\r
426 \r
427 extern void TIMER_A_setCompareValue(uint16_t baseAddress,\r
428 uint16_t compareRegister,\r
429 uint16_t compareValue);\r
430 \r
431 extern void TIMER_A_clearTimerInterruptFlag(uint16_t baseAddress);\r
432 \r
433 extern void TIMER_A_clearCaptureCompareInterruptFlag(uint16_t baseAddress,\r
434 uint16_t captureCompareRegister);\r
435 \r
436 extern uint16_t TIMER_A_getCounterValue(uint16_t baseAddress);\r
437 \r
438 //*****************************************************************************\r
439 //\r
440 // The following are deprecated APIs.\r
441 //\r
442 //*****************************************************************************\r
443 extern void TIMER_A_configureContinuousMode(uint16_t baseAddress,\r
444 uint16_t clockSource,\r
445 uint16_t clockSourceDivider,\r
446 uint16_t timerInterruptEnable_TAIE,\r
447 uint16_t timerClear);\r
448 \r
449 extern void TIMER_A_configureUpMode(uint16_t baseAddress,\r
450 uint16_t clockSource,\r
451 uint16_t clockSourceDivider,\r
452 uint16_t timerPeriod,\r
453 uint16_t timerInterruptEnable_TAIE,\r
454 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
455 uint16_t timerClear);\r
456 \r
457 extern void TIMER_A_configureUpDownMode(uint16_t baseAddress,\r
458 uint16_t clockSource,\r
459 uint16_t clockSourceDivider,\r
460 uint16_t timerPeriod,\r
461 uint16_t timerInterruptEnable_TAIE,\r
462 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
463 uint16_t timerClear);\r
464 \r
465 extern void TIMER_A_startContinuousMode(uint16_t baseAddress,\r
466 uint16_t clockSource,\r
467 uint16_t clockSourceDivider,\r
468 uint16_t timerInterruptEnable_TAIE,\r
469 uint16_t timerClear);\r
470 \r
471 extern void TIMER_A_startContinousMode(uint16_t baseAddress,\r
472 uint16_t clockSource,\r
473 uint16_t clockSourceDivider,\r
474 uint16_t timerInterruptEnable_TAIE,\r
475 uint16_t timerClear);\r
476 \r
477 extern void TIMER_A_startUpMode(uint16_t baseAddress,\r
478 uint16_t clockSource,\r
479 uint16_t clockSourceDivider,\r
480 uint16_t timerPeriod,\r
481 uint16_t timerInterruptEnable_TAIE,\r
482 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
483 uint16_t timerClear);\r
484 \r
485 extern void TIMER_A_startUpDownMode(uint16_t baseAddress,\r
486 uint16_t clockSource,\r
487 uint16_t clockSourceDivider,\r
488 uint16_t timerPeriod,\r
489 uint16_t timerInterruptEnable_TAIE,\r
490 uint16_t captureCompareInterruptEnable_CCR0_CCIE,\r
491 uint16_t timerClear);\r
492 \r
493 extern void TIMER_A_initCapture(uint16_t baseAddress,\r
494 uint16_t captureRegister,\r
495 uint16_t captureMode,\r
496 uint16_t captureInputSelect,\r
497 uint16_t synchronizeCaptureSource,\r
498 uint16_t captureInterruptEnable,\r
499 uint16_t captureOutputMode);\r
500 \r
501 extern void TIMER_A_initCompare(uint16_t baseAddress,\r
502 uint16_t compareRegister,\r
503 uint16_t compareInterruptEnable,\r
504 uint16_t compareOutputMode,\r
505 uint16_t compareValue);\r
506 \r
507 extern void TIMER_A_generatePWM(uint16_t baseAddress,\r
508 uint16_t clockSource,\r
509 uint16_t clockSourceDivider,\r
510 uint16_t timerPeriod,\r
511 uint16_t compareRegister,\r
512 uint16_t compareOutputMode,\r
513 uint16_t dutyCycle);\r
514 \r
515 //*****************************************************************************\r
516 //\r
517 // Mark the end of the C bindings section for C++ compilers.\r
518 //\r
519 //*****************************************************************************\r
520 #ifdef __cplusplus\r
521 }\r
522 #endif\r
523 \r
524 #endif\r
525 #endif // __MSP430WARE_TIMER_A_H__\r