CaptureMSP432.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016-2019, Texas Instruments Incorporated
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  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 /*!****************************************************************************
33  * @file CaptureMSP432.h
34  * @brief Capture driver interface for MSP432 devices
35  *
36  * Refer to @ref Capture.h for a complete description of APIs & example
37  * of use.
38  *
39  * # Operation #
40  * This driver leverages the Timer_A peripheral of the MSP432 device. Each
41  * instance of a capture driver will occupy exactly one Timer_A peripheral on
42  * the device. This is done to reduce contingencies and conflicts that may
43  * arise from using more than one capture/compare registers on a Timer_A
44  * peripheral.
45  *
46  * The specific capture/compare register and pin used by the
47  * capture module is determined by the capturePort definition. If a mappable
48  * pin is contained in the capturePort parameter of the CaptureMSP432_HWAttrs
49  * structure, the driver will automatically configure the Port Mapping
50  * Controller (PMAP) module with the correct/corresponding pin assignments.
51  *
52  * # Accuracy #
53  * Each Timer_A peripheral has 16-bits of resolution. An appropriate
54  * clockSource and clockDivider must be specified in the CaptureMSP432_HWAttrs
55  * for each specific capture application. A higher clock rate may provide a
56  * better capture resolution at the cost of a smaller capturable period. The
57  * maximum capture period for a given clockSource and clockDivider is
58  * calculated as:
59  *
60  * MAX_CAPTURE_PERIOD = 2 * ((clockDivider * MATCH_VALUE) / CYCLES_PER_US) - 1
61  *
62  * Given that:
63  * MATCH_VALUE = 0xFFFF (65535)
64  * CYCLES_PER_US = clockSource / 1000000
65  *
66  * ### MPS432 Capture Driver Configuration #
67  *
68  * In order to use the Capture APIs, the application is required
69  * to define 4 configuration items in the application ti_drivers_config.c file:
70  *
71  * 1. An array of CaptureMSP432_Object elements, which will be used by
72  * by the driver to maintain instance state.
73  * Below is an example CaptureMSP432_Object array appropriate for the MSP432
74  * LaunchPad board:
75  * @code
76  * #include <ti/drivers/Capture.h>
77  * #include <ti/drivers/capture/CaptureMSP432.h>
78  *
79  * CaptureMSP432_Object captureMSP432Objects[2];
80  * @endcode
81  *
82  * 2. An array of CaptureMSP432_HWAttrs elements that defines which
83  * pin will be used by the corresponding capture instance
84  * (see @ref capturePortIdentifiersMSP432).
85  * Below is an example CaptureMSP432_HWAttrs array appropriate for the MSP432
86  * LaunchPad board:
87  * @code
88  * const CaptureMSP432_HWAttrs captureMSP432HWAttrs[2] = {
89  * {
90  * .timerBaseAddress = TIMER_A1_BASE,
91  * .clockSource = TIMER_A_CLOCKSOURCE_SMCLK,
92  * .clockDivider = TIMER_A_CLOCKSOURCE_DIVIDER_64,
93  * .capturePort = CaptureMSP432_P2_3_TA1,
94  * .intPriority = ~0
95  * },
96  * {
97  * .timerBaseAddress = TIMER_A2_BASE,
98  * .clockSource = TIMER_A_CLOCKSOURCE_ACLK,
99  * .clockDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1,
100  * .capturePort = CaptureMSP432_P6_6_TA2,
101  * .intPriority = ~0
102  * },
103  * };
104  * @endcode
105  *
106  * 3. An array of @ref Capture_Config elements, one for each Capture instance.
107  * Each element of this array identifies the device-specific API function
108  * table, the device specific capture object instance, and the device specific
109  * Hardware Attributes to be used for each capture channel.
110  * Below is an example @ref Capture_Config array appropriate for the MSP432
111  * LaunchPad board:
112  * @code
113  * const Capture_Config Capture_config[2] = {
114  * {
115  * .fxnTablePtr = &CaptureMSP432_captureFxnTable,
116  * .object = &captureMSP432Objects[0],
117  * .hwAttrs = &captureMSP432HWAttrs[0]
118  * },
119  * {
120  * .fxnTablePtr = &CaptureMSP432_captureFxnTable,
121  * .object = &captureMSP432Objects[1],
122  * .hwAttrs = &captureMSP432HWAttrs[1]
123  * }
124  * };
125  * @endcode
126  *
127  * 4. A global variable, Capture_count, that informs the driver how many
128  * capture instances are defined:
129  * @code
130  * const uint_least8_t Capture_count = 2;
131  * @endcode
132  *
133  * # Resource Allocation #
134  * The TimerMSP432_allocateTimerResource API will allocate a timer for exclusive
135  * use. Any attempt to re-allocate this resource by the TimerMSP432, PWMMSP432,
136  * or CaptureMSP432 drivers will result in a false value being returned from
137  * the allocation API. To free a timer resource, the
138  * TimerMSP432_freeTimerResource is used. The application is not responsible
139  * for calling these allocation APIs directly.
140  *
141  * ### Power Management #
142  * The TI-RTOS power management framework will try to put the device into the
143  * most power efficient mode whenever possible. Please see the technical
144  * reference manual for further details on each power mode.
145  *
146  * The following statements are valid:
147  * - After Capture_open(): Clocks are enabled to the timer resource and the
148  * configured capture pin. Dynamic performance level changes are allowed.
149  * - After Capture_start(): DEEPSLEEP is disabled for MSP432P401x devices.
150  * Performance level changes are not allowed.
151  * - After Capture_stop(): Conditions are equal as for after Capture_open.
152  * - After Capture_close(): The underlying GPTimer is turned off, and the
153  * clocks to the timer and pin are disabled.
154  *
155  * # Capture Modes #
156  * This device implementation only works with the following modes for
157  * #Capture_Mode :
158  * - #Capture_RISING_EDGE
159  * - #Capture_FALLING_EDGE
160  * - #Capture_ANY_EDGE
161  * All other modes will fail.
162  ******************************************************************************
163  */
164 #ifndef ti_drivers_capture_CaptureMSP432__include
165 #define ti_drivers_capture_CaptureMSP432__include
166 
167 #include <stdbool.h>
168 #include <stdint.h>
169 
170 #include <ti/drivers/dpl/HwiP.h>
172 #include <ti/drivers/Capture.h>
173 
174 #include <ti/devices/DeviceFamily.h>
175 #include <ti/devices/msp432p4xx/driverlib/interrupt.h>
176 
177 #ifdef __cplusplus
178 extern "C"
179 {
180 #endif
181 
183 /*
184  * Capture port definitions for MSP432 Timer_A pins.
185  *
186  * The interrupt number is stored in bits 31 - 24
187  * The capture compare register is stored in bits 23 - 16
188  * The port mapping is stored in bits 15 - 8
189  * The port number is stored in bits 7 - 4
190  * The pin number is stored in bits 3 - 0
191  *
192  * 31 - 24 23 - 16 15 - 8 7 - 4 3 - 0
193  * ----------------------------------------------------------------------
194  * | Int Num | Capture Compare Register | Port Map | Port Num | Pin Num |
195  * ----------------------------------------------------------------------
196  *
197  * For ports 2, 3, and 7; the PMAP is used to map TA0/TA1 capture and
198  * compare to any pin. Other ports have limited pin assignments.
199  */
200 #define CAPTUREMSP432_INT_OFS 24
201 #define CAPTUREMSP432_CCR_OFS 16
202 #define CAPTUREMSP432_PMAP_OFS 8
203 
214 #define CaptureMSP432_P2_0_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | 0x20 | \
215  (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
216  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
217 
223 #define CaptureMSP432_P2_0_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
224  0x20 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
225  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
226 
232 #define CaptureMSP432_P2_1_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
233  0x21 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
234  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
235 
241 #define CaptureMSP432_P2_1_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
242  0x21 | (INT_TA2_N << CAPTUREMSP432_INT_OFS) | \
243  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
244 
249 #define CaptureMSP432_P2_2_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
250  0x22 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
251  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
252 
258 #define CaptureMSP432_P2_2_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
259  0x22 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
260  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
261 
267 #define CaptureMSP432_P2_3_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
268  0x23 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
269  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
270 
276 #define CaptureMSP432_P2_3_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
277  0x23 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
278  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
279 
285 #define CaptureMSP432_P2_4_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
286  0x24 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
287  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
288 
294 #define CaptureMSP432_P2_4_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
295  0x24 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
296  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
297 
303 #define CaptureMSP432_P2_5_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
304  0x25 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
305  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
306 
312 #define CaptureMSP432_P2_5_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
313  0x25 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
314  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
315 
321 #define CaptureMSP432_P2_6_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
322  0x26 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
323  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
324 
330 #define CaptureMSP432_P2_6_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
331  0x26 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
332  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
333 
339 #define CaptureMSP432_P2_7_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
340  0x27 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
341  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
342 
348 #define CaptureMSP432_P2_7_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
349  0x27 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
350  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
351 
357 #define CaptureMSP432_P3_0_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
358  0x30 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
359  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
360 
366 #define CaptureMSP432_P3_0_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
367  0x30 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
368  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
369 
375 #define CaptureMSP432_P3_1_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
376  0x31 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
377  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
378 
384 #define CaptureMSP432_P3_1_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
385  0x31 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
386  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
387 
393 #define CaptureMSP432_P3_2_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
394  0x32 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
395  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
396 
402 #define CaptureMSP432_P3_2_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
403  0x32 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
404  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
405 
411 #define CaptureMSP432_P3_3_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
412  0x33 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
413  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
414 
420 #define CaptureMSP432_P3_3_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
421  0x33 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
422  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
423 
429 #define CaptureMSP432_P3_4_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
430  0x34 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
431  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
432 
438 #define CaptureMSP432_P3_4_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
439  0x34 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
440  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
441 
447 #define CaptureMSP432_P3_5_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
448  0x35 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
449  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
450 
456 #define CaptureMSP432_P3_5_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
457  0x35 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
458  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
459 
465 #define CaptureMSP432_P3_6_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
466  0x36 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
467  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
468 
474 #define CaptureMSP432_P3_6_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
475  0x36 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
476  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
477 
483 #define CaptureMSP432_P3_7_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
484  0x37 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
485  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
486 
492 #define CaptureMSP432_P3_7_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
493  0x37 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
494  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
495 
501 #define CaptureMSP432_P5_6_TA2 (0x56 | (INT_TA2_N << CAPTUREMSP432_INT_OFS) | \
502  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
503 
509 #define CaptureMSP432_P5_7_TA2 (0x57 | (INT_TA2_N << CAPTUREMSP432_INT_OFS) | \
510  (TIMER_A_CAPTURECOMPARE_REGISTER_2 << CAPTUREMSP432_CCR_OFS))
511 
517 #define CaptureMSP432_P6_6_TA2 (0x66 | (INT_TA2_N << CAPTUREMSP432_INT_OFS) | \
518  (TIMER_A_CAPTURECOMPARE_REGISTER_3 << CAPTUREMSP432_CCR_OFS))
519 
525 #define CaptureMSP432_P6_7_TA2 (0x67 | (INT_TA2_N << CAPTUREMSP432_INT_OFS) | \
526  (TIMER_A_CAPTURECOMPARE_REGISTER_4 << CAPTUREMSP432_CCR_OFS))
527 
533 #define CaptureMSP432_P7_0_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
534  0x70 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
535  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
536 
542 #define CaptureMSP432_P7_0_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
543  0x70 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
544  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
545 
551 #define CaptureMSP432_P7_1_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
552  0x71 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
553  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
554 
560 #define CaptureMSP432_P7_1_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
561  0x71 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
562  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
563 
569 #define CaptureMSP432_P7_2_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
570  0x72 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
571  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
572 
578 #define CaptureMSP432_P7_2_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
579  0x72 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
580  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
581 
587 #define CaptureMSP432_P7_3_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
588  0x73 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
589  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
590 
596 #define CaptureMSP432_P7_3_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
597  0x73 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
598  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
599 
605 #define CaptureMSP432_P7_4_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
606  0x74 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
607  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
608 
614 #define CaptureMSP432_P7_4_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
615  0x74 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
616  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
617 
623 #define CaptureMSP432_P7_5_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
624  0x75 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
625  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
626 
632 #define CaptureMSP432_P7_5_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
633  0x75 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
634  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
635 
641 #define CaptureMSP432_P7_6_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
642  0x76 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
643  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
644 
650 #define CaptureMSP432_P7_6_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
651  0x76 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
652  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
653 
659 #define CaptureMSP432_P7_7_TA0 ((PMAP_TA0CCR1A << CAPTUREMSP432_PMAP_OFS) | \
660  0x77 | (INT_TA0_N << CAPTUREMSP432_INT_OFS) | \
661  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
662 
668 #define CaptureMSP432_P7_7_TA1 ((PMAP_TA1CCR1A << CAPTUREMSP432_PMAP_OFS) | \
669  0x77 | (INT_TA1_N << CAPTUREMSP432_INT_OFS) | \
670  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
671 
677 #define CaptureMSP432_P8_0_TA1 (0x80 | (INT_TA1_0 << CAPTUREMSP432_INT_OFS) | \
678  (TIMER_A_CAPTURECOMPARE_REGISTER_0 << CAPTUREMSP432_CCR_OFS))
679 
685 #define CaptureMSP432_P8_1_TA2 (0x81 | (INT_TA2_0 << CAPTUREMSP432_INT_OFS) | \
686  (TIMER_A_CAPTURECOMPARE_REGISTER_0 << CAPTUREMSP432_CCR_OFS))
687 
693 #define CaptureMSP432_P8_2_TA3 (0x82 | (INT_TA3_N << CAPTUREMSP432_INT_OFS) | \
694  (TIMER_A_CAPTURECOMPARE_REGISTER_2 << CAPTUREMSP432_CCR_OFS))
695 
701 #define CaptureMSP432_P9_2_TA3 (0x92 | (INT_TA3_N << CAPTUREMSP432_INT_OFS) | \
702  (TIMER_A_CAPTURECOMPARE_REGISTER_3 << CAPTUREMSP432_CCR_OFS))
703 
709 #define CaptureMSP432_P9_3_TA3 (0x93 | (INT_TA3_N << CAPTUREMSP432_INT_OFS) | \
710  (TIMER_A_CAPTURECOMPARE_REGISTER_4 << CAPTUREMSP432_CCR_OFS))
711 
717 #define CaptureMSP432_P10_4_TA3 (0xA4 | (INT_TA3_0 << CAPTUREMSP432_INT_OFS) | \
718  (TIMER_A_CAPTURECOMPARE_REGISTER_0 << CAPTUREMSP432_CCR_OFS))
719 
725 #define CaptureMSP432_P10_5_TA3 (0xA5 | (INT_TA3_1 << CAPTUREMSP432_INT_OFS) | \
726  (TIMER_A_CAPTURECOMPARE_REGISTER_1 << CAPTUREMSP432_CCR_OFS))
727 
731 
759 typedef struct {
762 
764  uint32_t clockSource;
765 
767  uint32_t clockDivider;
768 
771  uint32_t capturePort;
772 
774  uint32_t intPriority;
776 
782 typedef struct {
783  HwiP_Handle hwiHandle;
786  uint32_t previousCount;
787  uint32_t ccrRegister;
788  bool isRunning;
790 
791 #endif /* ti_drivers_capture_CaptureMSP432__include */
uint32_t previousCount
Definition: CaptureMSP432.h:786
Timer driver interface for MSP432 devices.
const Capture_FxnTable CaptureMSP432_captureFxnTable
Capture_CallBackFxn callBack
Definition: CaptureMSP432.h:784
uint32_t timerBaseAddress
Definition: CaptureMSP432.h:761
uint32_t capturePort
Definition: CaptureMSP432.h:771
uint32_t ccrRegister
Definition: CaptureMSP432.h:787
Capture_PeriodUnits
Capture period unit enum.
Definition: Capture.h:221
uint32_t clockDivider
Definition: CaptureMSP432.h:767
uint32_t intPriority
Definition: CaptureMSP432.h:774
void(* Capture_CallBackFxn)(Capture_Handle handle, uint32_t interval)
Capture callback function.
Definition: Capture.h:243
CaptureMSP432 Object.
Definition: CaptureMSP432.h:782
HwiP_Handle hwiHandle
Definition: CaptureMSP432.h:783
uint32_t clockSource
Definition: CaptureMSP432.h:764
CaptureMSP432 Hardware Attributes.
Definition: CaptureMSP432.h:759
Capture_PeriodUnits periodUnits
Definition: CaptureMSP432.h:785
bool isRunning
Definition: CaptureMSP432.h:788
The definition of a capture function table that contains the required set of functions to control a s...
Definition: Capture.h:306
Capture Driver.
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale