xref: /btstack/port/msp432p401lp-cc256x/ti/devices/msp432p4xx/driverlib/timer_a.h (revision 5fd0122a3e19d95e11e1f3eb8a08a2b2acb2557e)
1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD
2*5fd0122aSMatthias Ringwald  * Copyright (c) 2017, Texas Instruments Incorporated
3*5fd0122aSMatthias Ringwald  * All rights reserved.
4*5fd0122aSMatthias Ringwald  *
5*5fd0122aSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
6*5fd0122aSMatthias Ringwald  * modification, are permitted provided that the following conditions
7*5fd0122aSMatthias Ringwald  * are met:
8*5fd0122aSMatthias Ringwald  *
9*5fd0122aSMatthias Ringwald  * *  Redistributions of source code must retain the above copyright
10*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
11*5fd0122aSMatthias Ringwald  *
12*5fd0122aSMatthias Ringwald  * *  Redistributions in binary form must reproduce the above copyright
13*5fd0122aSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
14*5fd0122aSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
15*5fd0122aSMatthias Ringwald  *
16*5fd0122aSMatthias Ringwald  * *  Neither the name of Texas Instruments Incorporated nor the names of
17*5fd0122aSMatthias Ringwald  *    its contributors may be used to endorse or promote products derived
18*5fd0122aSMatthias Ringwald  *    from this software without specific prior written permission.
19*5fd0122aSMatthias Ringwald  *
20*5fd0122aSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21*5fd0122aSMatthias Ringwald  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22*5fd0122aSMatthias Ringwald  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23*5fd0122aSMatthias Ringwald  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24*5fd0122aSMatthias Ringwald  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25*5fd0122aSMatthias Ringwald  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26*5fd0122aSMatthias Ringwald  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27*5fd0122aSMatthias Ringwald  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28*5fd0122aSMatthias Ringwald  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29*5fd0122aSMatthias Ringwald  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30*5fd0122aSMatthias Ringwald  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*5fd0122aSMatthias Ringwald  * --/COPYRIGHT--*/
32*5fd0122aSMatthias Ringwald #ifndef TIMERA_H_
33*5fd0122aSMatthias Ringwald #define TIMERA_H_
34*5fd0122aSMatthias Ringwald 
35*5fd0122aSMatthias Ringwald //*****************************************************************************
36*5fd0122aSMatthias Ringwald //
37*5fd0122aSMatthias Ringwald //! \addtogroup timera_api
38*5fd0122aSMatthias Ringwald //! @{
39*5fd0122aSMatthias Ringwald //
40*5fd0122aSMatthias Ringwald //*****************************************************************************
41*5fd0122aSMatthias Ringwald 
42*5fd0122aSMatthias Ringwald //*****************************************************************************
43*5fd0122aSMatthias Ringwald //
44*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header
45*5fd0122aSMatthias Ringwald // have a C binding.
46*5fd0122aSMatthias Ringwald //
47*5fd0122aSMatthias Ringwald //*****************************************************************************
48*5fd0122aSMatthias Ringwald #ifdef __cplusplus
49*5fd0122aSMatthias Ringwald extern "C"
50*5fd0122aSMatthias Ringwald {
51*5fd0122aSMatthias Ringwald #endif
52*5fd0122aSMatthias Ringwald #include <stdint.h>
53*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h>
54*5fd0122aSMatthias Ringwald #include <stdbool.h>
55*5fd0122aSMatthias Ringwald 
56*5fd0122aSMatthias Ringwald //*****************************************************************************
57*5fd0122aSMatthias Ringwald //
58*5fd0122aSMatthias Ringwald // Timer_A Specific Parameters
59*5fd0122aSMatthias Ringwald //
60*5fd0122aSMatthias Ringwald //*****************************************************************************
61*5fd0122aSMatthias Ringwald #define TIMER_A_CMSIS(x) ((Timer_A_Type *) x)
62*5fd0122aSMatthias Ringwald 
63*5fd0122aSMatthias Ringwald #define TIMER_A_CCR0_INTERRUPT              0x00
64*5fd0122aSMatthias Ringwald #define TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT 0x01
65*5fd0122aSMatthias Ringwald 
66*5fd0122aSMatthias Ringwald //*****************************************************************************
67*5fd0122aSMatthias Ringwald //
68*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_ContinuousModeConfig
69*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_ContinuousModeConfig \endlink
70*5fd0122aSMatthias Ringwald //!     structure
71*5fd0122aSMatthias Ringwald //!
72*5fd0122aSMatthias Ringwald //! \struct _Timer_A_ContinuousModeConfig
73*5fd0122aSMatthias Ringwald //! \brief Configuration structure for continuous mode in the \b Timer_A module.
74*5fd0122aSMatthias Ringwald //!         See \link Timer_A_configureContinuousMode \endlink for parameter
75*5fd0122aSMatthias Ringwald //!                 documentation.
76*5fd0122aSMatthias Ringwald //
77*5fd0122aSMatthias Ringwald //*****************************************************************************
78*5fd0122aSMatthias Ringwald typedef struct _Timer_A_ContinuousModeConfig
79*5fd0122aSMatthias Ringwald {
80*5fd0122aSMatthias Ringwald     uint_fast16_t clockSource;
81*5fd0122aSMatthias Ringwald     uint_fast16_t clockSourceDivider;
82*5fd0122aSMatthias Ringwald     uint_fast16_t timerInterruptEnable_TAIE;
83*5fd0122aSMatthias Ringwald     uint_fast16_t timerClear;
84*5fd0122aSMatthias Ringwald } Timer_A_ContinuousModeConfig;
85*5fd0122aSMatthias Ringwald 
86*5fd0122aSMatthias Ringwald //*****************************************************************************
87*5fd0122aSMatthias Ringwald //
88*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_UpModeConfig
89*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_UpModeConfig \endlink
90*5fd0122aSMatthias Ringwald //!     structure
91*5fd0122aSMatthias Ringwald //!
92*5fd0122aSMatthias Ringwald //! \struct _Timer_A_UpModeConfig
93*5fd0122aSMatthias Ringwald //! \brief Configuration structure for Up mode in the \b Timer_A module. See
94*5fd0122aSMatthias Ringwald //!          \link Timer_A_configureUpMode \endlink for parameter
95*5fd0122aSMatthias Ringwald //!                 documentation.
96*5fd0122aSMatthias Ringwald //
97*5fd0122aSMatthias Ringwald //*****************************************************************************
98*5fd0122aSMatthias Ringwald typedef struct _Timer_A_UpModeConfig
99*5fd0122aSMatthias Ringwald {
100*5fd0122aSMatthias Ringwald     uint_fast16_t clockSource;
101*5fd0122aSMatthias Ringwald     uint_fast16_t clockSourceDivider;
102*5fd0122aSMatthias Ringwald     uint_fast16_t timerPeriod;
103*5fd0122aSMatthias Ringwald     uint_fast16_t timerInterruptEnable_TAIE;
104*5fd0122aSMatthias Ringwald     uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE;
105*5fd0122aSMatthias Ringwald     uint_fast16_t timerClear;
106*5fd0122aSMatthias Ringwald } Timer_A_UpModeConfig;
107*5fd0122aSMatthias Ringwald 
108*5fd0122aSMatthias Ringwald //*****************************************************************************
109*5fd0122aSMatthias Ringwald //
110*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_UpDownModeConfig
111*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_UpDownModeConfig \endlink
112*5fd0122aSMatthias Ringwald //!     structure
113*5fd0122aSMatthias Ringwald //!
114*5fd0122aSMatthias Ringwald //! \struct _Timer_A_UpDownModeConfig
115*5fd0122aSMatthias Ringwald //! \brief Configuration structure for UpDown mode in the \b Timer_A module. See
116*5fd0122aSMatthias Ringwald //!          \link Timer_A_configureUpDownMode \endlink for parameter
117*5fd0122aSMatthias Ringwald //!                 documentation.
118*5fd0122aSMatthias Ringwald //
119*5fd0122aSMatthias Ringwald //*****************************************************************************
120*5fd0122aSMatthias Ringwald typedef struct _Timer_A_UpDownModeConfig
121*5fd0122aSMatthias Ringwald {
122*5fd0122aSMatthias Ringwald     uint_fast16_t clockSource;
123*5fd0122aSMatthias Ringwald     uint_fast16_t clockSourceDivider;
124*5fd0122aSMatthias Ringwald     uint_fast16_t timerPeriod;
125*5fd0122aSMatthias Ringwald     uint_fast16_t timerInterruptEnable_TAIE;
126*5fd0122aSMatthias Ringwald     uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE;
127*5fd0122aSMatthias Ringwald     uint_fast16_t timerClear;
128*5fd0122aSMatthias Ringwald } Timer_A_UpDownModeConfig;
129*5fd0122aSMatthias Ringwald 
130*5fd0122aSMatthias Ringwald //*****************************************************************************
131*5fd0122aSMatthias Ringwald //
132*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_CaptureModeConfig
133*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_CaptureModeConfig \endlink
134*5fd0122aSMatthias Ringwald //!     structure
135*5fd0122aSMatthias Ringwald //!
136*5fd0122aSMatthias Ringwald //! \struct _Timer_A_CaptureModeConfig
137*5fd0122aSMatthias Ringwald //! \brief Configuration structure for capture mode in the \b Timer_A module.
138*5fd0122aSMatthias Ringwald //!         See  \link Timer_A_initCapture \endlink for parameter
139*5fd0122aSMatthias Ringwald //!                 documentation.
140*5fd0122aSMatthias Ringwald //
141*5fd0122aSMatthias Ringwald //*****************************************************************************
142*5fd0122aSMatthias Ringwald typedef struct _Timer_A_CaptureModeConfig
143*5fd0122aSMatthias Ringwald {
144*5fd0122aSMatthias Ringwald     uint_fast16_t captureRegister;
145*5fd0122aSMatthias Ringwald     uint_fast16_t captureMode;
146*5fd0122aSMatthias Ringwald     uint_fast16_t captureInputSelect;
147*5fd0122aSMatthias Ringwald     uint_fast16_t synchronizeCaptureSource;
148*5fd0122aSMatthias Ringwald     uint_fast8_t captureInterruptEnable;
149*5fd0122aSMatthias Ringwald     uint_fast16_t captureOutputMode;
150*5fd0122aSMatthias Ringwald } Timer_A_CaptureModeConfig;
151*5fd0122aSMatthias Ringwald 
152*5fd0122aSMatthias Ringwald //*****************************************************************************
153*5fd0122aSMatthias Ringwald //
154*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_CompareModeConfig
155*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_CompareModeConfig \endlink
156*5fd0122aSMatthias Ringwald //!     structure
157*5fd0122aSMatthias Ringwald //!
158*5fd0122aSMatthias Ringwald //! \struct _Timer_A_CompareModeConfig
159*5fd0122aSMatthias Ringwald //! \brief Configuration structure for compare mode in the \b Timer_A module.
160*5fd0122aSMatthias Ringwald //!          See \link Timer_A_initCompare \endlink for parameter
161*5fd0122aSMatthias Ringwald //!                 documentation.
162*5fd0122aSMatthias Ringwald //
163*5fd0122aSMatthias Ringwald //*****************************************************************************
164*5fd0122aSMatthias Ringwald typedef struct _Timer_A_CompareModeConfig
165*5fd0122aSMatthias Ringwald {
166*5fd0122aSMatthias Ringwald     uint_fast16_t compareRegister;
167*5fd0122aSMatthias Ringwald     uint_fast16_t compareInterruptEnable;
168*5fd0122aSMatthias Ringwald     uint_fast16_t compareOutputMode;
169*5fd0122aSMatthias Ringwald     uint_fast16_t compareValue;
170*5fd0122aSMatthias Ringwald } Timer_A_CompareModeConfig;
171*5fd0122aSMatthias Ringwald 
172*5fd0122aSMatthias Ringwald //*****************************************************************************
173*5fd0122aSMatthias Ringwald //
174*5fd0122aSMatthias Ringwald //!     ypedef Timer_A_PWMConfig
175*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _Timer_A_PWMConfig \endlink
176*5fd0122aSMatthias Ringwald //!     structure
177*5fd0122aSMatthias Ringwald //!
178*5fd0122aSMatthias Ringwald //! \struct _Timer_A_PWMConfig
179*5fd0122aSMatthias Ringwald //! \brief Configuration structure for PWM mode in the \b Timer_A module. See
180*5fd0122aSMatthias Ringwald //!          \link Timer_A_generatePWM \endlink for parameter
181*5fd0122aSMatthias Ringwald //!                 documentation.
182*5fd0122aSMatthias Ringwald //
183*5fd0122aSMatthias Ringwald //*****************************************************************************
184*5fd0122aSMatthias Ringwald typedef struct _Timer_A_PWMConfig
185*5fd0122aSMatthias Ringwald {
186*5fd0122aSMatthias Ringwald     uint_fast16_t clockSource;
187*5fd0122aSMatthias Ringwald     uint_fast16_t clockSourceDivider;
188*5fd0122aSMatthias Ringwald     uint_fast16_t timerPeriod;
189*5fd0122aSMatthias Ringwald     uint_fast16_t compareRegister;
190*5fd0122aSMatthias Ringwald     uint_fast16_t compareOutputMode;
191*5fd0122aSMatthias Ringwald     uint_fast16_t dutyCycle;
192*5fd0122aSMatthias Ringwald } Timer_A_PWMConfig;
193*5fd0122aSMatthias Ringwald 
194*5fd0122aSMatthias Ringwald 
195*5fd0122aSMatthias Ringwald //*****************************************************************************
196*5fd0122aSMatthias Ringwald //
197*5fd0122aSMatthias Ringwald // The following is a parameter determines the maximum difference in counts of
198*5fd0122aSMatthias Ringwald // the TAxR register for a majority vote
199*5fd0122aSMatthias Ringwald //
200*5fd0122aSMatthias Ringwald //*****************************************************************************
201*5fd0122aSMatthias Ringwald #define TIMER_A_THRESHOLD                                                     50
202*5fd0122aSMatthias Ringwald 
203*5fd0122aSMatthias Ringwald //*****************************************************************************
204*5fd0122aSMatthias Ringwald //
205*5fd0122aSMatthias Ringwald // The following are values that can be passed to the clockSourceDivider
206*5fd0122aSMatthias Ringwald // parameter
207*5fd0122aSMatthias Ringwald //
208*5fd0122aSMatthias Ringwald //*****************************************************************************
209*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_1                                      0x01
210*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_2                                      0x02
211*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_4                                      0x04
212*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_8                                      0x08
213*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_3                                      0x03
214*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_5                                      0x05
215*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_6                                      0x06
216*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_7                                      0x07
217*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_10                                     0x0A
218*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_12                                     0x0C
219*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_14                                     0x0E
220*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_16                                     0x10
221*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_20                                     0x14
222*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_24                                     0x18
223*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_28                                     0x1C
224*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_32                                     0x20
225*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_40                                     0x28
226*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_48                                     0x30
227*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_56                                     0x38
228*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_DIVIDER_64                                     0x40
229*5fd0122aSMatthias Ringwald 
230*5fd0122aSMatthias Ringwald //*****************************************************************************
231*5fd0122aSMatthias Ringwald //
232*5fd0122aSMatthias Ringwald // The following are values that can be passed to the timerMode parameter
233*5fd0122aSMatthias Ringwald //
234*5fd0122aSMatthias Ringwald //*****************************************************************************
235*5fd0122aSMatthias Ringwald #define TIMER_A_STOP_MODE                                                  TIMER_A_CTL_MC_0
236*5fd0122aSMatthias Ringwald #define TIMER_A_UP_MODE                                                    TIMER_A_CTL_MC_1
237*5fd0122aSMatthias Ringwald #define TIMER_A_CONTINUOUS_MODE                                            TIMER_A_CTL_MC_2
238*5fd0122aSMatthias Ringwald #define TIMER_A_UPDOWN_MODE                                                TIMER_A_CTL_MC_3
239*5fd0122aSMatthias Ringwald 
240*5fd0122aSMatthias Ringwald //*****************************************************************************
241*5fd0122aSMatthias Ringwald //
242*5fd0122aSMatthias Ringwald // The following are values that can be passed to the timerClear parameter
243*5fd0122aSMatthias Ringwald //
244*5fd0122aSMatthias Ringwald //*****************************************************************************
245*5fd0122aSMatthias Ringwald #define TIMER_A_DO_CLEAR                                                  TIMER_A_CTL_CLR
246*5fd0122aSMatthias Ringwald #define TIMER_A_SKIP_CLEAR                                                 0x00
247*5fd0122aSMatthias Ringwald 
248*5fd0122aSMatthias Ringwald //*****************************************************************************
249*5fd0122aSMatthias Ringwald //
250*5fd0122aSMatthias Ringwald // The following are values that can be passed to the clockSource parameter
251*5fd0122aSMatthias Ringwald //
252*5fd0122aSMatthias Ringwald //*****************************************************************************
253*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK                        TIMER_A_CTL_SSEL__TACLK
254*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_ACLK                                  TIMER_A_CTL_SSEL__ACLK
255*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_SMCLK                                 TIMER_A_CTL_SSEL__SMCLK
256*5fd0122aSMatthias Ringwald #define TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK               TIMER_A_CTL_SSEL__INCLK
257*5fd0122aSMatthias Ringwald 
258*5fd0122aSMatthias Ringwald //*****************************************************************************
259*5fd0122aSMatthias Ringwald //
260*5fd0122aSMatthias Ringwald // The following are values that can be passed to the timerInterruptEnable_TAIE
261*5fd0122aSMatthias Ringwald // parameter
262*5fd0122aSMatthias Ringwald //
263*5fd0122aSMatthias Ringwald //*****************************************************************************
264*5fd0122aSMatthias Ringwald #define TIMER_A_TAIE_INTERRUPT_ENABLE                                      TIMER_A_CTL_IE
265*5fd0122aSMatthias Ringwald #define TIMER_A_TAIE_INTERRUPT_DISABLE                                     0x00
266*5fd0122aSMatthias Ringwald 
267*5fd0122aSMatthias Ringwald //*****************************************************************************
268*5fd0122aSMatthias Ringwald //
269*5fd0122aSMatthias Ringwald // The following are values that can be passed to the
270*5fd0122aSMatthias Ringwald // captureCompareInterruptEnable_CCR0_CCIE parameter
271*5fd0122aSMatthias Ringwald //
272*5fd0122aSMatthias Ringwald //*****************************************************************************
273*5fd0122aSMatthias Ringwald #define TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE                                 TIMER_A_CCTLN_CCIE
274*5fd0122aSMatthias Ringwald #define TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE                                0x00
275*5fd0122aSMatthias Ringwald 
276*5fd0122aSMatthias Ringwald //*****************************************************************************
277*5fd0122aSMatthias Ringwald //
278*5fd0122aSMatthias Ringwald // The following are values that can be passed to the captureInterruptEnable
279*5fd0122aSMatthias Ringwald // parameter
280*5fd0122aSMatthias Ringwald //
281*5fd0122aSMatthias Ringwald //*****************************************************************************
282*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE                           0x00
283*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE                            TIMER_A_CCTLN_CCIE
284*5fd0122aSMatthias Ringwald 
285*5fd0122aSMatthias Ringwald //*****************************************************************************
286*5fd0122aSMatthias Ringwald //
287*5fd0122aSMatthias Ringwald // The following are values that can be passed to the captureInputSelect
288*5fd0122aSMatthias Ringwald // parameter
289*5fd0122aSMatthias Ringwald //
290*5fd0122aSMatthias Ringwald //*****************************************************************************
291*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_INPUTSELECT_CCIxA                                TIMER_A_CCTLN_CCIS_0
292*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_INPUTSELECT_CCIxB                                TIMER_A_CCTLN_CCIS_1
293*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_INPUTSELECT_GND                                  TIMER_A_CCTLN_CCIS_2
294*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_INPUTSELECT_Vcc                                  TIMER_A_CCTLN_CCIS_3
295*5fd0122aSMatthias Ringwald 
296*5fd0122aSMatthias Ringwald //*****************************************************************************
297*5fd0122aSMatthias Ringwald //
298*5fd0122aSMatthias Ringwald // The following are values that can be passed to the compareOutputMode
299*5fd0122aSMatthias Ringwald // parameter
300*5fd0122aSMatthias Ringwald //
301*5fd0122aSMatthias Ringwald //*****************************************************************************
302*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_OUTBITVALUE                                 TIMER_A_CCTLN_OUTMOD_0
303*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_SET                                         TIMER_A_CCTLN_OUTMOD_1
304*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_TOGGLE_RESET                                TIMER_A_CCTLN_OUTMOD_2
305*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_SET_RESET                                   TIMER_A_CCTLN_OUTMOD_3
306*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_TOGGLE                                      TIMER_A_CCTLN_OUTMOD_4
307*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_RESET                                       TIMER_A_CCTLN_OUTMOD_5
308*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_TOGGLE_SET                                  TIMER_A_CCTLN_OUTMOD_6
309*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_RESET_SET                                   TIMER_A_CCTLN_OUTMOD_7
310*5fd0122aSMatthias Ringwald 
311*5fd0122aSMatthias Ringwald //*****************************************************************************
312*5fd0122aSMatthias Ringwald //
313*5fd0122aSMatthias Ringwald // The following are values that can be passed to the compareRegister parameter
314*5fd0122aSMatthias Ringwald //
315*5fd0122aSMatthias Ringwald //*****************************************************************************
316*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_0                                  0x02
317*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_1                                  0x04
318*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_2                                  0x06
319*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_3                                  0x08
320*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_4                                  0x0A
321*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_5                                  0x0C
322*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_REGISTER_6                                  0x0E
323*5fd0122aSMatthias Ringwald 
324*5fd0122aSMatthias Ringwald //*****************************************************************************
325*5fd0122aSMatthias Ringwald //
326*5fd0122aSMatthias Ringwald // The following are values that can be passed to the captureMode parameter
327*5fd0122aSMatthias Ringwald //
328*5fd0122aSMatthias Ringwald //*****************************************************************************
329*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTUREMODE_NO_CAPTURE                                     TIMER_A_CCTLN_CM_0
330*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTUREMODE_RISING_EDGE                                    TIMER_A_CCTLN_CM_1
331*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTUREMODE_FALLING_EDGE                                   TIMER_A_CCTLN_CM_2
332*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE                        TIMER_A_CCTLN_CM_3
333*5fd0122aSMatthias Ringwald 
334*5fd0122aSMatthias Ringwald //*****************************************************************************
335*5fd0122aSMatthias Ringwald //
336*5fd0122aSMatthias Ringwald // The following are values that can be passed to the synchronizeCaptureSource
337*5fd0122aSMatthias Ringwald // parameter
338*5fd0122aSMatthias Ringwald //
339*5fd0122aSMatthias Ringwald //*****************************************************************************
340*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_ASYNCHRONOUS                                       0x00
341*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_SYNCHRONOUS                                        TIMER_A_CCTLN_SCS
342*5fd0122aSMatthias Ringwald 
343*5fd0122aSMatthias Ringwald //*****************************************************************************
344*5fd0122aSMatthias Ringwald //
345*5fd0122aSMatthias Ringwald // The following are values that can be passed to the mask parameter
346*5fd0122aSMatthias Ringwald //
347*5fd0122aSMatthias Ringwald //*****************************************************************************
348*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURE_OVERFLOW                                          TIMER_A_CCTLN_COV
349*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG                             TIMER_A_CCTLN_CCIFG
350*5fd0122aSMatthias Ringwald 
351*5fd0122aSMatthias Ringwald //*****************************************************************************
352*5fd0122aSMatthias Ringwald //
353*5fd0122aSMatthias Ringwald // The following are values that can be passed to the synchronized parameter
354*5fd0122aSMatthias Ringwald //
355*5fd0122aSMatthias Ringwald //*****************************************************************************
356*5fd0122aSMatthias Ringwald #define TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT                      TIMER_A_CCTLN_SCCI
357*5fd0122aSMatthias Ringwald #define TIMER_A_READ_CAPTURE_COMPARE_INPUT                                 TIMER_A_CCTLN_CCI
358*5fd0122aSMatthias Ringwald 
359*5fd0122aSMatthias Ringwald 
360*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_INPUT_HIGH                                  0x01
361*5fd0122aSMatthias Ringwald #define TIMER_A_CAPTURECOMPARE_INPUT_LOW                                   0x00
362*5fd0122aSMatthias Ringwald 
363*5fd0122aSMatthias Ringwald //*****************************************************************************
364*5fd0122aSMatthias Ringwald //
365*5fd0122aSMatthias Ringwald // The following are values that can be passed to the outputModeOutBitValue
366*5fd0122aSMatthias Ringwald // parameter
367*5fd0122aSMatthias Ringwald //
368*5fd0122aSMatthias Ringwald //*****************************************************************************
369*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH                                TIMER_A_CCTLN_OUT
370*5fd0122aSMatthias Ringwald #define TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW                                 0x00
371*5fd0122aSMatthias Ringwald 
372*5fd0122aSMatthias Ringwald //*****************************************************************************
373*5fd0122aSMatthias Ringwald //
374*5fd0122aSMatthias Ringwald // The following are values that can be passed toThe following are values that
375*5fd0122aSMatthias Ringwald // can be returned by the interrupt functions
376*5fd0122aSMatthias Ringwald //
377*5fd0122aSMatthias Ringwald //*****************************************************************************
378*5fd0122aSMatthias Ringwald #define TIMER_A_INTERRUPT_NOT_PENDING                                      0x00
379*5fd0122aSMatthias Ringwald #define TIMER_A_INTERRUPT_PENDING                                          0x01
380*5fd0122aSMatthias Ringwald 
381*5fd0122aSMatthias Ringwald 
382*5fd0122aSMatthias Ringwald /* Convenience function for setting the PWM Duty Cycle */
383*5fd0122aSMatthias Ringwald #define Timer_A_setDutyCycle(timer,dutyCycle) \
384*5fd0122aSMatthias Ringwald                 Timer_A_setCompareValue(timer,dutyCycle)
385*5fd0122aSMatthias Ringwald 
386*5fd0122aSMatthias Ringwald //*****************************************************************************
387*5fd0122aSMatthias Ringwald //
388*5fd0122aSMatthias Ringwald //Prototypes for the APIs.
389*5fd0122aSMatthias Ringwald //
390*5fd0122aSMatthias Ringwald //*****************************************************************************
391*5fd0122aSMatthias Ringwald 
392*5fd0122aSMatthias Ringwald //*****************************************************************************
393*5fd0122aSMatthias Ringwald //
394*5fd0122aSMatthias Ringwald //! Starts Timer_A counter
395*5fd0122aSMatthias Ringwald //!
396*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
397*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
398*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
399*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
400*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
401*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
402*5fd0122aSMatthias Ringwald //! \param timerMode selects Clock source. Valid values are
403*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CONTINUOUS_MODE [Default value]
404*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_UPDOWN_MODE
405*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_UP_MODE
406*5fd0122aSMatthias Ringwald //!
407*5fd0122aSMatthias Ringwald //! \note This function assumes that the timer has been previously configured
408*5fd0122aSMatthias Ringwald //! using Timer_A_configureContinuousMode,  Timer_A_configureUpMode or
409*5fd0122aSMatthias Ringwald //! Timer_A_configureUpDownMode.
410*5fd0122aSMatthias Ringwald //!
411*5fd0122aSMatthias Ringwald //! \return None
412*5fd0122aSMatthias Ringwald //
413*5fd0122aSMatthias Ringwald //*****************************************************************************
414*5fd0122aSMatthias Ringwald extern void Timer_A_startCounter(uint32_t timer, uint_fast16_t timerMode);
415*5fd0122aSMatthias Ringwald 
416*5fd0122aSMatthias Ringwald //*****************************************************************************
417*5fd0122aSMatthias Ringwald //
418*5fd0122aSMatthias Ringwald //! Configures Timer_A in continuous mode.
419*5fd0122aSMatthias Ringwald //!
420*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
421*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
422*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
423*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
424*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
425*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
426*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A continuous mode
427*5fd0122aSMatthias Ringwald //!
428*5fd0122aSMatthias Ringwald //! <hr>
429*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_ContinuousModeConfig \endlink
430*5fd0122aSMatthias Ringwald //!         structure.</b>
431*5fd0122aSMatthias Ringwald //! <hr>
432*5fd0122aSMatthias Ringwald //!
433*5fd0122aSMatthias Ringwald //! \param clockSource selects Clock source. Valid values are
434*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
435*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_ACLK
436*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_SMCLK
437*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
438*5fd0122aSMatthias Ringwald //! \param timerInterruptEnable_TAIE is the divider for Clock source.
439*5fd0122aSMatthias Ringwald //!       Valid values are:
440*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
441*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
442*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
443*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
444*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
445*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
446*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
447*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
448*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
449*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
450*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
451*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
452*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
453*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
454*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
455*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
456*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
457*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
458*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
459*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
460*5fd0122aSMatthias Ringwald //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
461*5fd0122aSMatthias Ringwald //!        interrupt. Valid values are
462*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_ENABLE
463*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
464*5fd0122aSMatthias Ringwald //! \param timerClear decides if Timer_A clock divider, count direction,
465*5fd0122aSMatthias Ringwald //!        count need to be reset. Valid values are
466*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_DO_CLEAR
467*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_SKIP_CLEAR [Default value]
468*5fd0122aSMatthias Ringwald //!
469*5fd0122aSMatthias Ringwald //! \note This API does not start the timer. Timer needs to be started when
470*5fd0122aSMatthias Ringwald //! required using the Timer_A_startCounter API.
471*5fd0122aSMatthias Ringwald //!
472*5fd0122aSMatthias Ringwald //! \return None
473*5fd0122aSMatthias Ringwald //
474*5fd0122aSMatthias Ringwald //*****************************************************************************
475*5fd0122aSMatthias Ringwald extern void Timer_A_configureContinuousMode(uint32_t timer,
476*5fd0122aSMatthias Ringwald         const Timer_A_ContinuousModeConfig *config);
477*5fd0122aSMatthias Ringwald 
478*5fd0122aSMatthias Ringwald //*****************************************************************************
479*5fd0122aSMatthias Ringwald //
480*5fd0122aSMatthias Ringwald //! Configures Timer_A in up mode.
481*5fd0122aSMatthias Ringwald //!
482*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
483*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
484*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
485*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
486*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
487*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
488*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A Up mode
489*5fd0122aSMatthias Ringwald //!
490*5fd0122aSMatthias Ringwald //! <hr>
491*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_UpModeConfig \endlink
492*5fd0122aSMatthias Ringwald //!         structure.</b>
493*5fd0122aSMatthias Ringwald //! <hr>
494*5fd0122aSMatthias Ringwald //! \param clockSource selects Clock source. Valid values are
495*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
496*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_ACLK
497*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_SMCLK
498*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
499*5fd0122aSMatthias Ringwald //! \param clockSourceDivider is the divider for Clock source. Valid values
500*5fd0122aSMatthias Ringwald //!         are:
501*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
502*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
503*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
504*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
505*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
506*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
507*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
508*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
509*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
510*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
511*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
512*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
513*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
514*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
515*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
516*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
517*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
518*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
519*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
520*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
521*5fd0122aSMatthias Ringwald //! \param timerPeriod is the specified Timer_A period. This is the value
522*5fd0122aSMatthias Ringwald //!         that gets written into the CCR0. Limited to 16 bits[uint16_t]
523*5fd0122aSMatthias Ringwald //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
524*5fd0122aSMatthias Ringwald //!        interrupt. Valid values are:
525*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_ENABLE and
526*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
527*5fd0122aSMatthias Ringwald //! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable
528*5fd0122aSMatthias Ringwald //!         Timer_A CCR0 captureComapre interrupt. Valid values are
529*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and
530*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value]
531*5fd0122aSMatthias Ringwald //! \param timerClear decides if Timer_A clock divider, count direction,
532*5fd0122aSMatthias Ringwald //!        count need to be reset. Valid values are
533*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_DO_CLEAR
534*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_SKIP_CLEAR [Default value]
535*5fd0122aSMatthias Ringwald //!
536*5fd0122aSMatthias Ringwald //!\note This API does not start the timer. Timer needs to be started when
537*5fd0122aSMatthias Ringwald //!required using the Timer_A_startCounter API.
538*5fd0122aSMatthias Ringwald //!
539*5fd0122aSMatthias Ringwald //! \return None
540*5fd0122aSMatthias Ringwald //
541*5fd0122aSMatthias Ringwald //*****************************************************************************
542*5fd0122aSMatthias Ringwald extern void Timer_A_configureUpMode(uint32_t timer,
543*5fd0122aSMatthias Ringwald         const Timer_A_UpModeConfig *config);
544*5fd0122aSMatthias Ringwald 
545*5fd0122aSMatthias Ringwald //*****************************************************************************
546*5fd0122aSMatthias Ringwald //
547*5fd0122aSMatthias Ringwald //! Configures Timer_A in up down mode.
548*5fd0122aSMatthias Ringwald //!
549*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
550*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
551*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
552*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
553*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
554*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
555*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A UpDown mode
556*5fd0122aSMatthias Ringwald //!
557*5fd0122aSMatthias Ringwald //! <hr>
558*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_UpDownModeConfig \endlink
559*5fd0122aSMatthias Ringwald //!         structure.</b>
560*5fd0122aSMatthias Ringwald //! <hr>
561*5fd0122aSMatthias Ringwald //! \param clockSource selects Clock source. Valid values are
562*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
563*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_ACLK
564*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_SMCLK
565*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
566*5fd0122aSMatthias Ringwald //! \param clockSourceDivider is the divider for Clock source. Valid values
567*5fd0122aSMatthias Ringwald //!         are:
568*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
569*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
570*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
571*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
572*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
573*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
574*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
575*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
576*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
577*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
578*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
579*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
580*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
581*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
582*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
583*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
584*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
585*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
586*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
587*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
588*5fd0122aSMatthias Ringwald //! \param timerPeriod is the specified Timer_A period
589*5fd0122aSMatthias Ringwald //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
590*5fd0122aSMatthias Ringwald //!         interrupt.
591*5fd0122aSMatthias Ringwald //!        Valid values are
592*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_ENABLE
593*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
594*5fd0122aSMatthias Ringwald //! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable
595*5fd0122aSMatthias Ringwald //!         Timer_A CCR0 captureComapre interrupt. Valid values are
596*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and
597*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value]
598*5fd0122aSMatthias Ringwald //! \param timerClear decides if Timer_A clock divider, count direction, count
599*5fd0122aSMatthias Ringwald //!        need to be reset. Valid values are
600*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_DO_CLEAR
601*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_SKIP_CLEAR [Default value]
602*5fd0122aSMatthias Ringwald //!
603*5fd0122aSMatthias Ringwald //!This API does not start the timer. Timer needs to be started when required
604*5fd0122aSMatthias Ringwald //!using the Timer_A_startCounter API.
605*5fd0122aSMatthias Ringwald //!
606*5fd0122aSMatthias Ringwald //! \return None
607*5fd0122aSMatthias Ringwald //
608*5fd0122aSMatthias Ringwald //*****************************************************************************
609*5fd0122aSMatthias Ringwald extern void Timer_A_configureUpDownMode(uint32_t timer,
610*5fd0122aSMatthias Ringwald         const Timer_A_UpDownModeConfig *config);
611*5fd0122aSMatthias Ringwald 
612*5fd0122aSMatthias Ringwald //*****************************************************************************
613*5fd0122aSMatthias Ringwald //
614*5fd0122aSMatthias Ringwald //! Initializes Capture Mode
615*5fd0122aSMatthias Ringwald //!
616*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
617*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
618*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
619*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
620*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
621*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
622*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A capture mode
623*5fd0122aSMatthias Ringwald //!
624*5fd0122aSMatthias Ringwald //! <hr>
625*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_CaptureModeConfig \endlink
626*5fd0122aSMatthias Ringwald //!         structure.</b>
627*5fd0122aSMatthias Ringwald //! <hr>
628*5fd0122aSMatthias Ringwald //! \param captureRegister selects the Capture register being used. Valid
629*5fd0122aSMatthias Ringwald //!     values are
630*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
631*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
632*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
633*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
634*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
635*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
636*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
637*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
638*5fd0122aSMatthias Ringwald //!    register being used
639*5fd0122aSMatthias Ringwald //! \param captureMode is the capture mode selected. Valid values are
640*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTUREMODE_NO_CAPTURE [Default value]
641*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTUREMODE_RISING_EDGE
642*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTUREMODE_FALLING_EDGE
643*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE
644*5fd0122aSMatthias Ringwald //! \param captureInputSelect decides the Input Select
645*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxA [Default value]
646*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxB
647*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_INPUTSELECT_GND
648*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_INPUTSELECT_Vcc
649*5fd0122aSMatthias Ringwald //! \param synchronizeCaptureSource decides if capture source should be
650*5fd0122aSMatthias Ringwald //!         synchronized with timer clock
651*5fd0122aSMatthias Ringwald //!        Valid values are
652*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_ASYNCHRONOUS [Default value]
653*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURE_SYNCHRONOUS
654*5fd0122aSMatthias Ringwald //! \param captureInterruptEnable is to enable or disable
655*5fd0122aSMatthias Ringwald //!         timer captureComapre interrupt. Valid values are
656*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value]
657*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
658*5fd0122aSMatthias Ringwald //! \param captureOutputMode specifies the ouput mode. Valid values are
659*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value],
660*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET,
661*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
662*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET_RESET
663*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE,
664*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET,
665*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
666*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET_SET
667*5fd0122aSMatthias Ringwald //!
668*5fd0122aSMatthias Ringwald //! \return None
669*5fd0122aSMatthias Ringwald //
670*5fd0122aSMatthias Ringwald //*****************************************************************************
671*5fd0122aSMatthias Ringwald extern void Timer_A_initCapture(uint32_t timer,
672*5fd0122aSMatthias Ringwald         const Timer_A_CaptureModeConfig *config);
673*5fd0122aSMatthias Ringwald 
674*5fd0122aSMatthias Ringwald //*****************************************************************************
675*5fd0122aSMatthias Ringwald //
676*5fd0122aSMatthias Ringwald //! Initializes Compare Mode
677*5fd0122aSMatthias Ringwald //!
678*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
679*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
680*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
681*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
682*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
683*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
684*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A compare mode
685*5fd0122aSMatthias Ringwald //!
686*5fd0122aSMatthias Ringwald //! <hr>
687*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_CompareModeConfig \endlink
688*5fd0122aSMatthias Ringwald //!         structure.</b>
689*5fd0122aSMatthias Ringwald //! <hr>
690*5fd0122aSMatthias Ringwald //! \param compareRegister selects the Capture register being used. Valid
691*5fd0122aSMatthias Ringwald //!     values are
692*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
693*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
694*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
695*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
696*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
697*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
698*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
699*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
700*5fd0122aSMatthias Ringwald //!    register being used
701*5fd0122aSMatthias Ringwald //! \param compareInterruptEnable is to enable or disable
702*5fd0122aSMatthias Ringwald //!         timer captureComapre interrupt. Valid values are
703*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE and
704*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value]
705*5fd0122aSMatthias Ringwald //! \param compareOutputMode specifies the output mode. Valid values are
706*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value],
707*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET,
708*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
709*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET_RESET
710*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE,
711*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET,
712*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
713*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET_SET
714*5fd0122aSMatthias Ringwald //! \param compareValue is the count to be compared with in compare mode
715*5fd0122aSMatthias Ringwald //!
716*5fd0122aSMatthias Ringwald //! \return None
717*5fd0122aSMatthias Ringwald //
718*5fd0122aSMatthias Ringwald //*****************************************************************************
719*5fd0122aSMatthias Ringwald extern void Timer_A_initCompare(uint32_t timer,
720*5fd0122aSMatthias Ringwald         const Timer_A_CompareModeConfig *config);
721*5fd0122aSMatthias Ringwald 
722*5fd0122aSMatthias Ringwald //*****************************************************************************
723*5fd0122aSMatthias Ringwald //
724*5fd0122aSMatthias Ringwald //! Reset/Clear the timer clock divider, count direction, count
725*5fd0122aSMatthias Ringwald //!
726*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
727*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
728*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
729*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
730*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
731*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
732*5fd0122aSMatthias Ringwald //!
733*5fd0122aSMatthias Ringwald //! \returns None
734*5fd0122aSMatthias Ringwald //
735*5fd0122aSMatthias Ringwald //*****************************************************************************
736*5fd0122aSMatthias Ringwald extern void Timer_A_clearTimer(uint32_t timer);
737*5fd0122aSMatthias Ringwald 
738*5fd0122aSMatthias Ringwald //*****************************************************************************
739*5fd0122aSMatthias Ringwald //
740*5fd0122aSMatthias Ringwald //! Get synchronized capture compare input
741*5fd0122aSMatthias Ringwald //!
742*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
743*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
744*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
745*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
746*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
747*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
748*5fd0122aSMatthias Ringwald //! \param captureCompareRegister selects the Capture register being used.
749*5fd0122aSMatthias Ringwald //!     Valid values are
750*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
751*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
752*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
753*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
754*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
755*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
756*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
757*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
758*5fd0122aSMatthias Ringwald //!    register being used
759*5fd0122aSMatthias Ringwald //! \param synchronizedSetting is to select type of capture compare input.
760*5fd0122aSMatthias Ringwald //!         Valid values are
761*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_READ_CAPTURE_COMPARE_INPUT
762*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT
763*5fd0122aSMatthias Ringwald //!
764*5fd0122aSMatthias Ringwald //! \return \b TIMER_A_CAPTURECOMPARE_INPUT_HIGH or
765*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CAPTURECOMPARE_INPUT_LOW
766*5fd0122aSMatthias Ringwald //
767*5fd0122aSMatthias Ringwald //*****************************************************************************
768*5fd0122aSMatthias Ringwald extern uint_fast8_t Timer_A_getSynchronizedCaptureCompareInput(uint32_t timer,
769*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister,
770*5fd0122aSMatthias Ringwald         uint_fast16_t synchronizedSetting);
771*5fd0122aSMatthias Ringwald 
772*5fd0122aSMatthias Ringwald //*****************************************************************************
773*5fd0122aSMatthias Ringwald //
774*5fd0122aSMatthias Ringwald //! Get ouput bit for output mode
775*5fd0122aSMatthias Ringwald //!
776*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
777*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
778*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
779*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
780*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
781*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
782*5fd0122aSMatthias Ringwald //! \param captureCompareRegister selects the Capture register being used.
783*5fd0122aSMatthias Ringwald //!     Valid values are
784*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
785*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
786*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
787*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
788*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
789*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
790*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
791*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
792*5fd0122aSMatthias Ringwald //!    register being used
793*5fd0122aSMatthias Ringwald //!
794*5fd0122aSMatthias Ringwald //! \return \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH or
795*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW
796*5fd0122aSMatthias Ringwald //
797*5fd0122aSMatthias Ringwald //*****************************************************************************
798*5fd0122aSMatthias Ringwald extern uint_fast8_t Timer_A_getOutputForOutputModeOutBitValue(uint32_t timer,
799*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
800*5fd0122aSMatthias Ringwald 
801*5fd0122aSMatthias Ringwald //*****************************************************************************
802*5fd0122aSMatthias Ringwald //
803*5fd0122aSMatthias Ringwald //! Get current capture compare count
804*5fd0122aSMatthias Ringwald //!
805*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
806*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
807*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
808*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
809*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
810*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
811*5fd0122aSMatthias Ringwald //! \param captureCompareRegister selects the Capture register being used.
812*5fd0122aSMatthias Ringwald //!     Valid values are
813*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
814*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
815*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
816*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
817*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
818*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
819*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
820*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
821*5fd0122aSMatthias Ringwald //!    register being used
822*5fd0122aSMatthias Ringwald //!
823*5fd0122aSMatthias Ringwald //! \return current count as uint16_t
824*5fd0122aSMatthias Ringwald //
825*5fd0122aSMatthias Ringwald //*****************************************************************************
826*5fd0122aSMatthias Ringwald extern uint_fast16_t Timer_A_getCaptureCompareCount(uint32_t timer,
827*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
828*5fd0122aSMatthias Ringwald 
829*5fd0122aSMatthias Ringwald //*****************************************************************************
830*5fd0122aSMatthias Ringwald //
831*5fd0122aSMatthias Ringwald //! Set ouput bit for output mode
832*5fd0122aSMatthias Ringwald //!
833*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
834*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
835*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
836*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
837*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
838*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
839*5fd0122aSMatthias Ringwald //! \param captureCompareRegister selects the Capture register being used.
840*5fd0122aSMatthias Ringwald //!     are
841*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
842*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
843*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
844*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
845*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
846*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
847*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
848*5fd0122aSMatthias Ringwald //!    \n Refer to datasheet to ensure the device has the capture compare
849*5fd0122aSMatthias Ringwald //!    register being used
850*5fd0122aSMatthias Ringwald //! \param outputModeOutBitValue the value to be set for out bit.
851*5fd0122aSMatthias Ringwald //!     Valid values are:
852*5fd0122aSMatthias Ringwald //!                    - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH
853*5fd0122aSMatthias Ringwald //!                    - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW
854*5fd0122aSMatthias Ringwald //!
855*5fd0122aSMatthias Ringwald //! \return None
856*5fd0122aSMatthias Ringwald //
857*5fd0122aSMatthias Ringwald //*****************************************************************************
858*5fd0122aSMatthias Ringwald extern void Timer_A_setOutputForOutputModeOutBitValue(uint32_t timer,
859*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister,
860*5fd0122aSMatthias Ringwald         uint_fast8_t outputModeOutBitValue);
861*5fd0122aSMatthias Ringwald 
862*5fd0122aSMatthias Ringwald //*****************************************************************************
863*5fd0122aSMatthias Ringwald //
864*5fd0122aSMatthias Ringwald //! Generate a PWM with timer running in up mode
865*5fd0122aSMatthias Ringwald //!
866*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
867*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
868*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
869*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
870*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
871*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
872*5fd0122aSMatthias Ringwald //! \param config Configuration structure for Timer_A PWM mode
873*5fd0122aSMatthias Ringwald //!
874*5fd0122aSMatthias Ringwald //! <hr>
875*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link Timer_A_PWMConfig \endlink
876*5fd0122aSMatthias Ringwald //!         structure.</b>
877*5fd0122aSMatthias Ringwald //! <hr>
878*5fd0122aSMatthias Ringwald //! \param clockSource selects Clock source. Valid values are
879*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK
880*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_ACLK
881*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_SMCLK
882*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
883*5fd0122aSMatthias Ringwald //! \param clockSourceDivider is the divider for Clock source. Valid values
884*5fd0122aSMatthias Ringwald //!         are
885*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_1
886*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
887*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
888*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
889*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
890*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
891*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
892*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
893*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
894*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
895*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
896*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
897*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
898*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
899*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
900*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
901*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
902*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
903*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
904*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
905*5fd0122aSMatthias Ringwald //! \param timerPeriod selects the desired timer period
906*5fd0122aSMatthias Ringwald //! \param compareRegister selects the compare register being used.
907*5fd0122aSMatthias Ringwald //!     Valid values are
908*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
909*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
910*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
911*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
912*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
913*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
914*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
915*5fd0122aSMatthias Ringwald //!    <br>\n Refer to datasheet to ensure the device has the capture compare
916*5fd0122aSMatthias Ringwald //!    register being used
917*5fd0122aSMatthias Ringwald //! \param compareOutputMode specifies the ouput mode. Valid values are:
918*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_OUTBITVALUE,
919*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET,
920*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
921*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_SET_RESET
922*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE,
923*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET,
924*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
925*5fd0122aSMatthias Ringwald //!      - \b TIMER_A_OUTPUTMODE_RESET_SET
926*5fd0122aSMatthias Ringwald //! \param dutyCycle specifies the dutycycle for the generated waveform
927*5fd0122aSMatthias Ringwald //!
928*5fd0122aSMatthias Ringwald //! \return None
929*5fd0122aSMatthias Ringwald //
930*5fd0122aSMatthias Ringwald //*****************************************************************************
931*5fd0122aSMatthias Ringwald extern void Timer_A_generatePWM(uint32_t timer,
932*5fd0122aSMatthias Ringwald                                 const Timer_A_PWMConfig *config);
933*5fd0122aSMatthias Ringwald 
934*5fd0122aSMatthias Ringwald //*****************************************************************************
935*5fd0122aSMatthias Ringwald //
936*5fd0122aSMatthias Ringwald //! Stops the timer
937*5fd0122aSMatthias Ringwald //!
938*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
939*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
940*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
941*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
942*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
943*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
944*5fd0122aSMatthias Ringwald //!
945*5fd0122aSMatthias Ringwald //! \returns None
946*5fd0122aSMatthias Ringwald //
947*5fd0122aSMatthias Ringwald //*****************************************************************************
948*5fd0122aSMatthias Ringwald extern void Timer_A_stopTimer(uint32_t timer);
949*5fd0122aSMatthias Ringwald 
950*5fd0122aSMatthias Ringwald //*****************************************************************************
951*5fd0122aSMatthias Ringwald //
952*5fd0122aSMatthias Ringwald //! Sets the value of the capture-compare register
953*5fd0122aSMatthias Ringwald //!
954*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
955*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
956*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
957*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
958*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
959*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
960*5fd0122aSMatthias Ringwald //! \param compareRegister selects the Capture register being used. Valid
961*5fd0122aSMatthias Ringwald //!     values are
962*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
963*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
964*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
965*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
966*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
967*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
968*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
969*5fd0122aSMatthias Ringwald //!    <br>\n Refer to datasheet to ensure the device has the capture compare
970*5fd0122aSMatthias Ringwald //!     register being used
971*5fd0122aSMatthias Ringwald //! \param compareValue is the count to be compared with in compare mode
972*5fd0122aSMatthias Ringwald //!
973*5fd0122aSMatthias Ringwald //! \return None
974*5fd0122aSMatthias Ringwald //
975*5fd0122aSMatthias Ringwald //*****************************************************************************
976*5fd0122aSMatthias Ringwald extern void Timer_A_setCompareValue(uint32_t timer,
977*5fd0122aSMatthias Ringwald         uint_fast16_t compareRegister, uint_fast16_t compareValue);
978*5fd0122aSMatthias Ringwald 
979*5fd0122aSMatthias Ringwald //*****************************************************************************
980*5fd0122aSMatthias Ringwald //
981*5fd0122aSMatthias Ringwald //! Returns the current value of the specified timer. Note that according to
982*5fd0122aSMatthias Ringwald //! the Timer A user guide, reading the value of the counter is unreliable
983*5fd0122aSMatthias Ringwald //! if the system clock is asynchronous from the timer clock. The API addresses
984*5fd0122aSMatthias Ringwald //! this concern by reading the timer count register twice and then determining
985*5fd0122aSMatthias Ringwald //! the integrity of the value. If the two values are within 10 timer counts
986*5fd0122aSMatthias Ringwald //! of each other, the value is deemed safe and returned. If not, the process
987*5fd0122aSMatthias Ringwald //! is repeated until a reliable timer value is determined.
988*5fd0122aSMatthias Ringwald //!
989*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
990*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
991*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
992*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
993*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
994*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
995*5fd0122aSMatthias Ringwald //!
996*5fd0122aSMatthias Ringwald //! \returns The value of the specified timer
997*5fd0122aSMatthias Ringwald //
998*5fd0122aSMatthias Ringwald //*****************************************************************************
999*5fd0122aSMatthias Ringwald extern uint16_t Timer_A_getCounterValue(uint32_t timer);
1000*5fd0122aSMatthias Ringwald 
1001*5fd0122aSMatthias Ringwald //*****************************************************************************
1002*5fd0122aSMatthias Ringwald //
1003*5fd0122aSMatthias Ringwald //! Clears the Timer TAIFG interrupt flag
1004*5fd0122aSMatthias Ringwald //!
1005*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1006*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1007*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1008*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1009*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1010*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1011*5fd0122aSMatthias Ringwald //!
1012*5fd0122aSMatthias Ringwald //! \return None
1013*5fd0122aSMatthias Ringwald //
1014*5fd0122aSMatthias Ringwald //*****************************************************************************
1015*5fd0122aSMatthias Ringwald extern void Timer_A_clearInterruptFlag(uint32_t timer);
1016*5fd0122aSMatthias Ringwald 
1017*5fd0122aSMatthias Ringwald //*****************************************************************************
1018*5fd0122aSMatthias Ringwald //
1019*5fd0122aSMatthias Ringwald //! Clears the capture-compare interrupt flag
1020*5fd0122aSMatthias Ringwald //!
1021*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1022*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1023*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1024*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1025*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1026*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1027*5fd0122aSMatthias Ringwald //! \param captureCompareRegister selects the Capture-compare register being
1028*5fd0122aSMatthias Ringwald //! used. Valid values are
1029*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
1030*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
1031*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
1032*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
1033*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
1034*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
1035*5fd0122aSMatthias Ringwald //!   - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
1036*5fd0122aSMatthias Ringwald //!    <br>Refer to the datasheet to ensure the device has the capture compare
1037*5fd0122aSMatthias Ringwald //!    register being used
1038*5fd0122aSMatthias Ringwald //!
1039*5fd0122aSMatthias Ringwald //! \return None
1040*5fd0122aSMatthias Ringwald //
1041*5fd0122aSMatthias Ringwald //*****************************************************************************
1042*5fd0122aSMatthias Ringwald extern void Timer_A_clearCaptureCompareInterrupt(uint32_t timer,
1043*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
1044*5fd0122aSMatthias Ringwald 
1045*5fd0122aSMatthias Ringwald //*****************************************************************************
1046*5fd0122aSMatthias Ringwald //
1047*5fd0122aSMatthias Ringwald //! Enable timer interrupt
1048*5fd0122aSMatthias Ringwald //!
1049*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1050*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1051*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1052*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1053*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1054*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1055*5fd0122aSMatthias Ringwald //!
1056*5fd0122aSMatthias Ringwald //! \return None
1057*5fd0122aSMatthias Ringwald //
1058*5fd0122aSMatthias Ringwald //*****************************************************************************
1059*5fd0122aSMatthias Ringwald extern void Timer_A_enableInterrupt(uint32_t timer);
1060*5fd0122aSMatthias Ringwald 
1061*5fd0122aSMatthias Ringwald //*****************************************************************************
1062*5fd0122aSMatthias Ringwald //
1063*5fd0122aSMatthias Ringwald //! Disable timer interrupt
1064*5fd0122aSMatthias Ringwald //!
1065*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1066*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1067*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1068*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1069*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1070*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1071*5fd0122aSMatthias Ringwald //!
1072*5fd0122aSMatthias Ringwald //! \return None
1073*5fd0122aSMatthias Ringwald //
1074*5fd0122aSMatthias Ringwald //*****************************************************************************
1075*5fd0122aSMatthias Ringwald extern void Timer_A_disableInterrupt(uint32_t timer);
1076*5fd0122aSMatthias Ringwald 
1077*5fd0122aSMatthias Ringwald //*****************************************************************************
1078*5fd0122aSMatthias Ringwald //
1079*5fd0122aSMatthias Ringwald //! Get timer interrupt status
1080*5fd0122aSMatthias Ringwald //!
1081*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1082*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1083*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1084*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1085*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1086*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1087*5fd0122aSMatthias Ringwald //!
1088*5fd0122aSMatthias Ringwald //! \return uint32_t. Return interrupt status. Valid values are
1089*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_INTERRUPT_PENDING
1090*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_INTERRUPT_NOT_PENDING
1091*5fd0122aSMatthias Ringwald //
1092*5fd0122aSMatthias Ringwald //*****************************************************************************
1093*5fd0122aSMatthias Ringwald extern uint32_t Timer_A_getInterruptStatus(uint32_t timer);
1094*5fd0122aSMatthias Ringwald 
1095*5fd0122aSMatthias Ringwald //*****************************************************************************
1096*5fd0122aSMatthias Ringwald //
1097*5fd0122aSMatthias Ringwald //! Get timer interrupt status masked with the enabled interrupts.
1098*5fd0122aSMatthias Ringwald //! This function is useful to call in ISRs to get a list of pending
1099*5fd0122aSMatthias Ringwald //! interrupts that are actually enabled and could have caused
1100*5fd0122aSMatthias Ringwald //! the ISR.
1101*5fd0122aSMatthias Ringwald //!
1102*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1103*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1104*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1105*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1106*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1107*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1108*5fd0122aSMatthias Ringwald //!
1109*5fd0122aSMatthias Ringwald //! \return uint32_t. Return interrupt status. Valid values are
1110*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_INTERRUPT_PENDING
1111*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_INTERRUPT_NOT_PENDING
1112*5fd0122aSMatthias Ringwald //
1113*5fd0122aSMatthias Ringwald //*****************************************************************************
1114*5fd0122aSMatthias Ringwald extern uint32_t Timer_A_getEnabledInterruptStatus(uint32_t timer);
1115*5fd0122aSMatthias Ringwald 
1116*5fd0122aSMatthias Ringwald //*****************************************************************************
1117*5fd0122aSMatthias Ringwald //
1118*5fd0122aSMatthias Ringwald //! Enable capture compare interrupt
1119*5fd0122aSMatthias Ringwald //!
1120*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1121*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1122*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1123*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1124*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1125*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1126*5fd0122aSMatthias Ringwald //! \param captureCompareRegister is the selected capture compare register
1127*5fd0122aSMatthias Ringwald //!
1128*5fd0122aSMatthias Ringwald //! \return None
1129*5fd0122aSMatthias Ringwald //
1130*5fd0122aSMatthias Ringwald //*****************************************************************************
1131*5fd0122aSMatthias Ringwald extern void Timer_A_enableCaptureCompareInterrupt(uint32_t timer,
1132*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
1133*5fd0122aSMatthias Ringwald 
1134*5fd0122aSMatthias Ringwald //*****************************************************************************
1135*5fd0122aSMatthias Ringwald //
1136*5fd0122aSMatthias Ringwald //! Disable capture compare interrupt
1137*5fd0122aSMatthias Ringwald //!
1138*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1139*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1140*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1141*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1142*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1143*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1144*5fd0122aSMatthias Ringwald //! \param captureCompareRegister is the selected capture compare register
1145*5fd0122aSMatthias Ringwald //!
1146*5fd0122aSMatthias Ringwald //! \return None
1147*5fd0122aSMatthias Ringwald //
1148*5fd0122aSMatthias Ringwald //*****************************************************************************
1149*5fd0122aSMatthias Ringwald extern void Timer_A_disableCaptureCompareInterrupt(uint32_t timer,
1150*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
1151*5fd0122aSMatthias Ringwald 
1152*5fd0122aSMatthias Ringwald //*****************************************************************************
1153*5fd0122aSMatthias Ringwald //
1154*5fd0122aSMatthias Ringwald //! Return capture compare interrupt status
1155*5fd0122aSMatthias Ringwald //!
1156*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1157*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1158*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1159*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1160*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1161*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1162*5fd0122aSMatthias Ringwald //! \param captureCompareRegister is the selected capture compare register
1163*5fd0122aSMatthias Ringwald //!
1164*5fd0122aSMatthias Ringwald //! \param mask is the mask for the interrupt status
1165*5fd0122aSMatthias Ringwald //!        Mask value is the logical OR of any of the following:
1166*5fd0122aSMatthias Ringwald //!        - \b TIMER_A_CAPTURE_OVERFLOW
1167*5fd0122aSMatthias Ringwald //!        - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
1168*5fd0122aSMatthias Ringwald //!
1169*5fd0122aSMatthias Ringwald //! \returns uint32_t. The mask of the set flags.
1170*5fd0122aSMatthias Ringwald //!         Valid values is an OR of
1171*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CAPTURE_OVERFLOW,
1172*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
1173*5fd0122aSMatthias Ringwald //
1174*5fd0122aSMatthias Ringwald //*****************************************************************************
1175*5fd0122aSMatthias Ringwald extern uint32_t Timer_A_getCaptureCompareInterruptStatus(uint32_t timer,
1176*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister, uint_fast16_t mask);
1177*5fd0122aSMatthias Ringwald 
1178*5fd0122aSMatthias Ringwald //*****************************************************************************
1179*5fd0122aSMatthias Ringwald //
1180*5fd0122aSMatthias Ringwald //! Return capture compare interrupt status masked with the enabled interrupts.
1181*5fd0122aSMatthias Ringwald //! This function is useful to call in ISRs to get a list of pending
1182*5fd0122aSMatthias Ringwald //! interrupts that are actually enabled and could have caused
1183*5fd0122aSMatthias Ringwald //! the ISR.
1184*5fd0122aSMatthias Ringwald //!
1185*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1186*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1187*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1188*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1189*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1190*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1191*5fd0122aSMatthias Ringwald //! \param captureCompareRegister is the selected capture compare register
1192*5fd0122aSMatthias Ringwald //!
1193*5fd0122aSMatthias Ringwald //! \returns uint32_t. The mask of the set flags.
1194*5fd0122aSMatthias Ringwald //!         Valid values is an OR of
1195*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CAPTURE_OVERFLOW,
1196*5fd0122aSMatthias Ringwald //!       - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
1197*5fd0122aSMatthias Ringwald //
1198*5fd0122aSMatthias Ringwald //*****************************************************************************
1199*5fd0122aSMatthias Ringwald extern uint32_t Timer_A_getCaptureCompareEnabledInterruptStatus(uint32_t timer,
1200*5fd0122aSMatthias Ringwald         uint_fast16_t captureCompareRegister);
1201*5fd0122aSMatthias Ringwald 
1202*5fd0122aSMatthias Ringwald //*****************************************************************************
1203*5fd0122aSMatthias Ringwald //
1204*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for the timer capture compare interrupt.
1205*5fd0122aSMatthias Ringwald //!
1206*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1207*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1208*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1209*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1210*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1211*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1212*5fd0122aSMatthias Ringwald //!
1213*5fd0122aSMatthias Ringwald //! \param interruptSelect Selects which timer interrupt handler to
1214*5fd0122aSMatthias Ringwald //! register. For the timer module, there are two separate interrupt handlers
1215*5fd0122aSMatthias Ringwald //! that can be registered:
1216*5fd0122aSMatthias Ringwald //!         - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0
1217*5fd0122aSMatthias Ringwald //!         - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the
1218*5fd0122aSMatthias Ringwald //!          interrupt for CCR1-6, as well as the overflow interrupt.
1219*5fd0122aSMatthias Ringwald //!
1220*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the
1221*5fd0122aSMatthias Ringwald //! timer capture compare interrupt occurs.
1222*5fd0122aSMatthias Ringwald //!
1223*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when a timer
1224*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the
1225*5fd0122aSMatthias Ringwald //! interrupt controller; specific Timer_Ainterrupts must be enabled
1226*5fd0122aSMatthias Ringwald //! via Timer_A_enableInterrupt().  It is the interrupt handler's
1227*5fd0122aSMatthias Ringwald //! responsibility to clear the interrupt source
1228*5fd0122aSMatthias Ringwald //! via Timer_A_clearCaptureCompareInterrupt().
1229*5fd0122aSMatthias Ringwald //!
1230*5fd0122aSMatthias Ringwald //! \return None.
1231*5fd0122aSMatthias Ringwald //
1232*5fd0122aSMatthias Ringwald //*****************************************************************************
1233*5fd0122aSMatthias Ringwald extern void Timer_A_registerInterrupt(uint32_t timer,
1234*5fd0122aSMatthias Ringwald         uint_fast8_t interruptSelect, void (*intHandler)(void));
1235*5fd0122aSMatthias Ringwald 
1236*5fd0122aSMatthias Ringwald //*****************************************************************************
1237*5fd0122aSMatthias Ringwald //
1238*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the timer
1239*5fd0122aSMatthias Ringwald //!
1240*5fd0122aSMatthias Ringwald //! \param timer is the instance of the Timer_A module. Valid parameters
1241*5fd0122aSMatthias Ringwald //! vary from part to part, but can include:
1242*5fd0122aSMatthias Ringwald //!         - \b TIMER_A0_BASE
1243*5fd0122aSMatthias Ringwald //!         - \b TIMER_A1_BASE
1244*5fd0122aSMatthias Ringwald //!         - \b TIMER_A2_BASE
1245*5fd0122aSMatthias Ringwald //!         - \b TIMER_A3_BASE
1246*5fd0122aSMatthias Ringwald //!
1247*5fd0122aSMatthias Ringwald //! \param interruptSelect Selects which timer interrupt handler to
1248*5fd0122aSMatthias Ringwald //! register. For the timer module, there are two separate interrupt handlers
1249*5fd0122aSMatthias Ringwald //! that can be registered:
1250*5fd0122aSMatthias Ringwald //!         - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0
1251*5fd0122aSMatthias Ringwald //!         - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the
1252*5fd0122aSMatthias Ringwald //!          interrupt for CCR1-6, as well as the overflow interrupt.
1253*5fd0122aSMatthias Ringwald //!
1254*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when timer
1255*5fd0122aSMatthias Ringwald //! interrupt occurs.  This function also masks off the interrupt in the
1256*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called.
1257*5fd0122aSMatthias Ringwald //!
1258*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about
1259*5fd0122aSMatthias Ringwald //! registering interrupt handlers.
1260*5fd0122aSMatthias Ringwald //!
1261*5fd0122aSMatthias Ringwald //! \return None.
1262*5fd0122aSMatthias Ringwald //
1263*5fd0122aSMatthias Ringwald //*****************************************************************************
1264*5fd0122aSMatthias Ringwald extern void Timer_A_unregisterInterrupt(uint32_t timer,
1265*5fd0122aSMatthias Ringwald         uint_fast8_t interruptSelect);
1266*5fd0122aSMatthias Ringwald 
1267*5fd0122aSMatthias Ringwald /* Backwards Compatibility Layer */
1268*5fd0122aSMatthias Ringwald #define Timer_A_clearTimerInterrupt Timer_A_clearInterruptFlag
1269*5fd0122aSMatthias Ringwald #define Timer_A_clear Timer_A_clearTimer
1270*5fd0122aSMatthias Ringwald #define Timer_A_initCaptureMode Timer_A_initCapture
1271*5fd0122aSMatthias Ringwald #define Timer_A_initCompareMode Timer_A_initCompare
1272*5fd0122aSMatthias Ringwald #define Timer_A_initContinuousMode Timer_A_configureContinuousMode
1273*5fd0122aSMatthias Ringwald #define Timer_A_initUpDownMode Timer_A_configureUpDownMode
1274*5fd0122aSMatthias Ringwald #define Timer_A_initUpMode Timer_A_configureUpMode
1275*5fd0122aSMatthias Ringwald #define Timer_A_outputPWM Timer_A_generatePWM
1276*5fd0122aSMatthias Ringwald #define Timer_A_stop Timer_A_stopTimer
1277*5fd0122aSMatthias Ringwald 
1278*5fd0122aSMatthias Ringwald //*****************************************************************************
1279*5fd0122aSMatthias Ringwald //
1280*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers.
1281*5fd0122aSMatthias Ringwald //
1282*5fd0122aSMatthias Ringwald //*****************************************************************************
1283*5fd0122aSMatthias Ringwald #ifdef __cplusplus
1284*5fd0122aSMatthias Ringwald }
1285*5fd0122aSMatthias Ringwald #endif
1286*5fd0122aSMatthias Ringwald 
1287*5fd0122aSMatthias Ringwald //*****************************************************************************
1288*5fd0122aSMatthias Ringwald //
1289*5fd0122aSMatthias Ringwald // Close the Doxygen group.
1290*5fd0122aSMatthias Ringwald //! @}
1291*5fd0122aSMatthias Ringwald //
1292*5fd0122aSMatthias Ringwald //*****************************************************************************
1293*5fd0122aSMatthias Ringwald 
1294*5fd0122aSMatthias Ringwald #endif /* TIMERA_H_ */
1295