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 #include <ti/devices/msp432p4xx/driverlib/timer_a.h>
33*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/driverlib/interrupt.h>
34*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/driverlib/debug.h>
35*5fd0122aSMatthias Ringwald
privateTimer_AProcessClockSourceDivider(uint32_t timer,uint16_t clockSourceDivider)36*5fd0122aSMatthias Ringwald static void privateTimer_AProcessClockSourceDivider(uint32_t timer,
37*5fd0122aSMatthias Ringwald uint16_t clockSourceDivider)
38*5fd0122aSMatthias Ringwald {
39*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL &= ~TIMER_A_CTL_ID__8;
40*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 &= ~TIMER_A_EX0_IDEX_MASK;
41*5fd0122aSMatthias Ringwald
42*5fd0122aSMatthias Ringwald switch (clockSourceDivider)
43*5fd0122aSMatthias Ringwald {
44*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_1:
45*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_2:
46*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= ((clockSourceDivider - 1) << 6);
47*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = TIMER_A_EX0_TAIDEX_0;
48*5fd0122aSMatthias Ringwald break;
49*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_4:
50*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__4;
51*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = TIMER_A_EX0_TAIDEX_0;
52*5fd0122aSMatthias Ringwald break;
53*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_8:
54*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__8;
55*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = TIMER_A_EX0_TAIDEX_0;
56*5fd0122aSMatthias Ringwald break;
57*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_3:
58*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_5:
59*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_6:
60*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_7:
61*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__1;
62*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = (clockSourceDivider - 1);
63*5fd0122aSMatthias Ringwald break;
64*5fd0122aSMatthias Ringwald
65*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_10:
66*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_12:
67*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_14:
68*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_16:
69*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__2;
70*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = (clockSourceDivider / 2 - 1);
71*5fd0122aSMatthias Ringwald break;
72*5fd0122aSMatthias Ringwald
73*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_20:
74*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_24:
75*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_28:
76*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_32:
77*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__4;
78*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = (clockSourceDivider / 4 - 1);
79*5fd0122aSMatthias Ringwald break;
80*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_40:
81*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_48:
82*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_56:
83*5fd0122aSMatthias Ringwald case TIMER_A_CLOCKSOURCE_DIVIDER_64:
84*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= TIMER_A_CTL_ID__8;
85*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->EX0 = (clockSourceDivider / 8 - 1);
86*5fd0122aSMatthias Ringwald break;
87*5fd0122aSMatthias Ringwald }
88*5fd0122aSMatthias Ringwald }
89*5fd0122aSMatthias Ringwald
Timer_A_startCounter(uint32_t timer,uint_fast16_t timerMode)90*5fd0122aSMatthias Ringwald void Timer_A_startCounter(uint32_t timer, uint_fast16_t timerMode)
91*5fd0122aSMatthias Ringwald {
92*5fd0122aSMatthias Ringwald ASSERT(
93*5fd0122aSMatthias Ringwald (TIMER_A_UPDOWN_MODE == timerMode)
94*5fd0122aSMatthias Ringwald || (TIMER_A_CONTINUOUS_MODE == timerMode)
95*5fd0122aSMatthias Ringwald || (TIMER_A_UP_MODE == timerMode));
96*5fd0122aSMatthias Ringwald
97*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= timerMode;
98*5fd0122aSMatthias Ringwald }
99*5fd0122aSMatthias Ringwald
Timer_A_configureContinuousMode(uint32_t timer,const Timer_A_ContinuousModeConfig * config)100*5fd0122aSMatthias Ringwald void Timer_A_configureContinuousMode(uint32_t timer,
101*5fd0122aSMatthias Ringwald const Timer_A_ContinuousModeConfig *config)
102*5fd0122aSMatthias Ringwald {
103*5fd0122aSMatthias Ringwald ASSERT(
104*5fd0122aSMatthias Ringwald (TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK == config->clockSource)
105*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_ACLK == config->clockSource)
106*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_SMCLK == config->clockSource)
107*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
108*5fd0122aSMatthias Ringwald == config->clockSource));
109*5fd0122aSMatthias Ringwald
110*5fd0122aSMatthias Ringwald ASSERT(
111*5fd0122aSMatthias Ringwald (TIMER_A_DO_CLEAR == config->timerClear)
112*5fd0122aSMatthias Ringwald || (TIMER_A_SKIP_CLEAR == config->timerClear));
113*5fd0122aSMatthias Ringwald
114*5fd0122aSMatthias Ringwald ASSERT(
115*5fd0122aSMatthias Ringwald (TIMER_A_TAIE_INTERRUPT_ENABLE == config->timerInterruptEnable_TAIE)
116*5fd0122aSMatthias Ringwald || (TIMER_A_TAIE_INTERRUPT_DISABLE
117*5fd0122aSMatthias Ringwald == config->timerInterruptEnable_TAIE));
118*5fd0122aSMatthias Ringwald
119*5fd0122aSMatthias Ringwald ASSERT(
120*5fd0122aSMatthias Ringwald (TIMER_A_CLOCKSOURCE_DIVIDER_1 == config->clockSourceDivider)
121*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_2
122*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
123*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_4
124*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
125*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_8
126*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
127*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_3
128*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
129*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_5
130*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
131*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_6
132*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
133*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_7
134*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
135*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_10
136*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
137*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_12
138*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
139*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_14
140*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
141*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_16
142*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
143*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_20
144*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
145*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_24
146*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
147*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_28
148*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
149*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_32
150*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
151*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_40
152*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
153*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_48
154*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
155*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_56
156*5fd0122aSMatthias Ringwald == config->clockSourceDivider)
157*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_DIVIDER_64
158*5fd0122aSMatthias Ringwald == config->clockSourceDivider));
159*5fd0122aSMatthias Ringwald
160*5fd0122aSMatthias Ringwald privateTimer_AProcessClockSourceDivider(timer, config->clockSourceDivider);
161*5fd0122aSMatthias Ringwald
162*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL = (TIMER_A_CMSIS(timer)->CTL
163*5fd0122aSMatthias Ringwald & ~(TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
164*5fd0122aSMatthias Ringwald + TIMER_A_UPDOWN_MODE + TIMER_A_DO_CLEAR
165*5fd0122aSMatthias Ringwald + TIMER_A_TAIE_INTERRUPT_ENABLE))
166*5fd0122aSMatthias Ringwald | (config->clockSource + config->timerClear
167*5fd0122aSMatthias Ringwald + config->timerInterruptEnable_TAIE);
168*5fd0122aSMatthias Ringwald }
169*5fd0122aSMatthias Ringwald
Timer_A_configureUpMode(uint32_t timer,const Timer_A_UpModeConfig * config)170*5fd0122aSMatthias Ringwald void Timer_A_configureUpMode(uint32_t timer, const Timer_A_UpModeConfig *config)
171*5fd0122aSMatthias Ringwald {
172*5fd0122aSMatthias Ringwald ASSERT(
173*5fd0122aSMatthias Ringwald (TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK == config->clockSource)
174*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_ACLK == config->clockSource)
175*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_SMCLK == config->clockSource)
176*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
177*5fd0122aSMatthias Ringwald == config->clockSource));
178*5fd0122aSMatthias Ringwald
179*5fd0122aSMatthias Ringwald ASSERT(
180*5fd0122aSMatthias Ringwald (TIMER_A_DO_CLEAR == config->timerClear)
181*5fd0122aSMatthias Ringwald || (TIMER_A_SKIP_CLEAR == config->timerClear));
182*5fd0122aSMatthias Ringwald
183*5fd0122aSMatthias Ringwald ASSERT(
184*5fd0122aSMatthias Ringwald (TIMER_A_DO_CLEAR == config->timerClear)
185*5fd0122aSMatthias Ringwald || (TIMER_A_SKIP_CLEAR == config->timerClear));
186*5fd0122aSMatthias Ringwald
187*5fd0122aSMatthias Ringwald privateTimer_AProcessClockSourceDivider(timer, config->clockSourceDivider);
188*5fd0122aSMatthias Ringwald
189*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL &=
190*5fd0122aSMatthias Ringwald ~(TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK + TIMER_A_UPDOWN_MODE
191*5fd0122aSMatthias Ringwald + TIMER_A_DO_CLEAR + TIMER_A_TAIE_INTERRUPT_ENABLE);
192*5fd0122aSMatthias Ringwald
193*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= (config->clockSource + config->timerClear
194*5fd0122aSMatthias Ringwald + config->timerInterruptEnable_TAIE);
195*5fd0122aSMatthias Ringwald
196*5fd0122aSMatthias Ringwald if (TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE
197*5fd0122aSMatthias Ringwald == config->captureCompareInterruptEnable_CCR0_CCIE)
198*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[0],TIMER_A_CCTLN_CCIE_OFS) = 1;
199*5fd0122aSMatthias Ringwald else
200*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[0],TIMER_A_CCTLN_CCIE_OFS) = 0;
201*5fd0122aSMatthias Ringwald
202*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[0] = config->timerPeriod;
203*5fd0122aSMatthias Ringwald }
204*5fd0122aSMatthias Ringwald
Timer_A_configureUpDownMode(uint32_t timer,const Timer_A_UpDownModeConfig * config)205*5fd0122aSMatthias Ringwald void Timer_A_configureUpDownMode(uint32_t timer,
206*5fd0122aSMatthias Ringwald const Timer_A_UpDownModeConfig *config)
207*5fd0122aSMatthias Ringwald {
208*5fd0122aSMatthias Ringwald ASSERT(
209*5fd0122aSMatthias Ringwald (TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK == config->clockSource)
210*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_ACLK == config->clockSource)
211*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_SMCLK == config->clockSource)
212*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
213*5fd0122aSMatthias Ringwald == config->clockSource));
214*5fd0122aSMatthias Ringwald
215*5fd0122aSMatthias Ringwald ASSERT(
216*5fd0122aSMatthias Ringwald (TIMER_A_DO_CLEAR == config->timerClear)
217*5fd0122aSMatthias Ringwald || (TIMER_A_SKIP_CLEAR == config->timerClear));
218*5fd0122aSMatthias Ringwald
219*5fd0122aSMatthias Ringwald ASSERT(
220*5fd0122aSMatthias Ringwald (TIMER_A_DO_CLEAR == config->timerClear)
221*5fd0122aSMatthias Ringwald || (TIMER_A_SKIP_CLEAR == config->timerClear));
222*5fd0122aSMatthias Ringwald
223*5fd0122aSMatthias Ringwald privateTimer_AProcessClockSourceDivider(timer, config->clockSourceDivider);
224*5fd0122aSMatthias Ringwald
225*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL &=
226*5fd0122aSMatthias Ringwald ~(TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK + TIMER_A_UPDOWN_MODE
227*5fd0122aSMatthias Ringwald + TIMER_A_DO_CLEAR + TIMER_A_TAIE_INTERRUPT_ENABLE);
228*5fd0122aSMatthias Ringwald
229*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= (config->clockSource + TIMER_A_STOP_MODE
230*5fd0122aSMatthias Ringwald + config->timerClear + config->timerInterruptEnable_TAIE);
231*5fd0122aSMatthias Ringwald if (TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE
232*5fd0122aSMatthias Ringwald == config->captureCompareInterruptEnable_CCR0_CCIE)
233*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[0],TIMER_A_CCTLN_CCIE_OFS) = 1;
234*5fd0122aSMatthias Ringwald else
235*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[0],TIMER_A_CCTLN_CCIE_OFS) = 0;
236*5fd0122aSMatthias Ringwald
237*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[0] = config->timerPeriod;
238*5fd0122aSMatthias Ringwald }
239*5fd0122aSMatthias Ringwald
Timer_A_initCapture(uint32_t timer,const Timer_A_CaptureModeConfig * config)240*5fd0122aSMatthias Ringwald void Timer_A_initCapture(uint32_t timer,
241*5fd0122aSMatthias Ringwald const Timer_A_CaptureModeConfig *config)
242*5fd0122aSMatthias Ringwald {
243*5fd0122aSMatthias Ringwald ASSERT(
244*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == config->captureRegister)
245*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
246*5fd0122aSMatthias Ringwald == config->captureRegister)
247*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
248*5fd0122aSMatthias Ringwald == config->captureRegister)
249*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
250*5fd0122aSMatthias Ringwald == config->captureRegister)
251*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
252*5fd0122aSMatthias Ringwald == config->captureRegister)
253*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
254*5fd0122aSMatthias Ringwald == config->captureRegister)
255*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
256*5fd0122aSMatthias Ringwald == config->captureRegister));
257*5fd0122aSMatthias Ringwald
258*5fd0122aSMatthias Ringwald ASSERT(
259*5fd0122aSMatthias Ringwald (TIMER_A_CAPTUREMODE_NO_CAPTURE == config->captureMode)
260*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTUREMODE_RISING_EDGE == config->captureMode)
261*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTUREMODE_FALLING_EDGE == config->captureMode)
262*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE
263*5fd0122aSMatthias Ringwald == config->captureMode));
264*5fd0122aSMatthias Ringwald
265*5fd0122aSMatthias Ringwald ASSERT(
266*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURE_INPUTSELECT_CCIxA == config->captureInputSelect)
267*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURE_INPUTSELECT_CCIxB
268*5fd0122aSMatthias Ringwald == config->captureInputSelect)
269*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURE_INPUTSELECT_GND
270*5fd0122aSMatthias Ringwald == config->captureInputSelect)
271*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURE_INPUTSELECT_Vcc
272*5fd0122aSMatthias Ringwald == config->captureInputSelect));
273*5fd0122aSMatthias Ringwald
274*5fd0122aSMatthias Ringwald ASSERT(
275*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURE_ASYNCHRONOUS == config->synchronizeCaptureSource)
276*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURE_SYNCHRONOUS
277*5fd0122aSMatthias Ringwald == config->synchronizeCaptureSource));
278*5fd0122aSMatthias Ringwald
279*5fd0122aSMatthias Ringwald ASSERT(
280*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE
281*5fd0122aSMatthias Ringwald == config->captureInterruptEnable)
282*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
283*5fd0122aSMatthias Ringwald == config->captureInterruptEnable));
284*5fd0122aSMatthias Ringwald
285*5fd0122aSMatthias Ringwald ASSERT(
286*5fd0122aSMatthias Ringwald (TIMER_A_OUTPUTMODE_OUTBITVALUE == config->captureOutputMode)
287*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET == config->captureOutputMode)
288*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_RESET
289*5fd0122aSMatthias Ringwald == config->captureOutputMode)
290*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET_RESET
291*5fd0122aSMatthias Ringwald == config->captureOutputMode)
292*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE == config->captureOutputMode)
293*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET == config->captureOutputMode)
294*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_SET
295*5fd0122aSMatthias Ringwald == config->captureOutputMode)
296*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET_SET
297*5fd0122aSMatthias Ringwald == config->captureOutputMode));
298*5fd0122aSMatthias Ringwald
299*5fd0122aSMatthias Ringwald if (TIMER_A_CAPTURECOMPARE_REGISTER_0 == config->captureRegister)
300*5fd0122aSMatthias Ringwald {
301*5fd0122aSMatthias Ringwald //CaptureCompare register 0 only supports certain modes
302*5fd0122aSMatthias Ringwald ASSERT(
303*5fd0122aSMatthias Ringwald (TIMER_A_OUTPUTMODE_OUTBITVALUE == config->captureOutputMode)
304*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET == config->captureOutputMode)
305*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE
306*5fd0122aSMatthias Ringwald == config->captureOutputMode)
307*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET
308*5fd0122aSMatthias Ringwald == config->captureOutputMode));
309*5fd0122aSMatthias Ringwald }
310*5fd0122aSMatthias Ringwald uint8_t idx = (config->captureRegister>>1)-1;
311*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCTL[idx] =
312*5fd0122aSMatthias Ringwald (TIMER_A_CMSIS(timer)->CCTL[idx]
313*5fd0122aSMatthias Ringwald & ~(TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE
314*5fd0122aSMatthias Ringwald | TIMER_A_CAPTURE_INPUTSELECT_Vcc
315*5fd0122aSMatthias Ringwald | TIMER_A_CAPTURE_SYNCHRONOUS | TIMER_A_DO_CLEAR
316*5fd0122aSMatthias Ringwald | TIMER_A_TAIE_INTERRUPT_ENABLE | TIMER_A_CCTLN_CM_3))
317*5fd0122aSMatthias Ringwald | (config->captureMode | config->captureInputSelect
318*5fd0122aSMatthias Ringwald | config->synchronizeCaptureSource
319*5fd0122aSMatthias Ringwald | config->captureInterruptEnable
320*5fd0122aSMatthias Ringwald | config->captureOutputMode | TIMER_A_CCTLN_CAP);
321*5fd0122aSMatthias Ringwald
322*5fd0122aSMatthias Ringwald }
323*5fd0122aSMatthias Ringwald
Timer_A_initCompare(uint32_t timer,const Timer_A_CompareModeConfig * config)324*5fd0122aSMatthias Ringwald void Timer_A_initCompare(uint32_t timer,
325*5fd0122aSMatthias Ringwald const Timer_A_CompareModeConfig *config)
326*5fd0122aSMatthias Ringwald {
327*5fd0122aSMatthias Ringwald ASSERT(
328*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == config->compareRegister)
329*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
330*5fd0122aSMatthias Ringwald == config->compareRegister)
331*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
332*5fd0122aSMatthias Ringwald == config->compareRegister)
333*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
334*5fd0122aSMatthias Ringwald == config->compareRegister)
335*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
336*5fd0122aSMatthias Ringwald == config->compareRegister)
337*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
338*5fd0122aSMatthias Ringwald == config->compareRegister)
339*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
340*5fd0122aSMatthias Ringwald == config->compareRegister));
341*5fd0122aSMatthias Ringwald
342*5fd0122aSMatthias Ringwald ASSERT(
343*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
344*5fd0122aSMatthias Ringwald == config->compareInterruptEnable)
345*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE
346*5fd0122aSMatthias Ringwald == config->compareInterruptEnable));
347*5fd0122aSMatthias Ringwald
348*5fd0122aSMatthias Ringwald ASSERT(
349*5fd0122aSMatthias Ringwald (TIMER_A_OUTPUTMODE_OUTBITVALUE == config->compareOutputMode)
350*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET == config->compareOutputMode)
351*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_RESET
352*5fd0122aSMatthias Ringwald == config->compareOutputMode)
353*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET_RESET
354*5fd0122aSMatthias Ringwald == config->compareOutputMode)
355*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE == config->compareOutputMode)
356*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET == config->compareOutputMode)
357*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_SET
358*5fd0122aSMatthias Ringwald == config->compareOutputMode)
359*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET_SET
360*5fd0122aSMatthias Ringwald == config->compareOutputMode));
361*5fd0122aSMatthias Ringwald
362*5fd0122aSMatthias Ringwald if (TIMER_A_CAPTURECOMPARE_REGISTER_0 == config->compareRegister)
363*5fd0122aSMatthias Ringwald {
364*5fd0122aSMatthias Ringwald //CaptureCompare register 0 only supports certain modes
365*5fd0122aSMatthias Ringwald ASSERT(
366*5fd0122aSMatthias Ringwald (TIMER_A_OUTPUTMODE_OUTBITVALUE == config->compareOutputMode)
367*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET == config->compareOutputMode)
368*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE
369*5fd0122aSMatthias Ringwald == config->compareOutputMode)
370*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET
371*5fd0122aSMatthias Ringwald == config->compareOutputMode));
372*5fd0122aSMatthias Ringwald }
373*5fd0122aSMatthias Ringwald
374*5fd0122aSMatthias Ringwald uint8_t idx = (config->compareRegister>>1)-1;
375*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCTL[idx] =
376*5fd0122aSMatthias Ringwald (TIMER_A_CMSIS(timer)->CCTL[idx]
377*5fd0122aSMatthias Ringwald & ~(TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
378*5fd0122aSMatthias Ringwald | TIMER_A_OUTPUTMODE_RESET_SET | TIMER_A_CCTLN_CAP))
379*5fd0122aSMatthias Ringwald | (config->compareInterruptEnable + config->compareOutputMode);
380*5fd0122aSMatthias Ringwald
381*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[idx] = config->compareValue;
382*5fd0122aSMatthias Ringwald
383*5fd0122aSMatthias Ringwald }
384*5fd0122aSMatthias Ringwald
Timer_A_getCounterValue(uint32_t timer)385*5fd0122aSMatthias Ringwald uint16_t Timer_A_getCounterValue(uint32_t timer)
386*5fd0122aSMatthias Ringwald {
387*5fd0122aSMatthias Ringwald uint_fast16_t voteOne, voteTwo, res;
388*5fd0122aSMatthias Ringwald
389*5fd0122aSMatthias Ringwald voteTwo = TIMER_A_CMSIS(timer)->R;
390*5fd0122aSMatthias Ringwald
391*5fd0122aSMatthias Ringwald do
392*5fd0122aSMatthias Ringwald {
393*5fd0122aSMatthias Ringwald voteOne = voteTwo;
394*5fd0122aSMatthias Ringwald voteTwo = TIMER_A_CMSIS(timer)->R;
395*5fd0122aSMatthias Ringwald
396*5fd0122aSMatthias Ringwald if (voteTwo > voteOne)
397*5fd0122aSMatthias Ringwald res = voteTwo - voteOne;
398*5fd0122aSMatthias Ringwald else if (voteOne > voteTwo)
399*5fd0122aSMatthias Ringwald res = voteOne - voteTwo;
400*5fd0122aSMatthias Ringwald else
401*5fd0122aSMatthias Ringwald res = 0;
402*5fd0122aSMatthias Ringwald
403*5fd0122aSMatthias Ringwald } while (res > TIMER_A_THRESHOLD);
404*5fd0122aSMatthias Ringwald
405*5fd0122aSMatthias Ringwald return voteTwo;
406*5fd0122aSMatthias Ringwald
407*5fd0122aSMatthias Ringwald }
408*5fd0122aSMatthias Ringwald
Timer_A_clearTimer(uint32_t timer)409*5fd0122aSMatthias Ringwald void Timer_A_clearTimer(uint32_t timer)
410*5fd0122aSMatthias Ringwald {
411*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CTL , TIMER_A_CTL_CLR_OFS) = 1;
412*5fd0122aSMatthias Ringwald }
413*5fd0122aSMatthias Ringwald
Timer_A_getSynchronizedCaptureCompareInput(uint32_t timer,uint_fast16_t captureCompareRegister,uint_fast16_t synchronizedSetting)414*5fd0122aSMatthias Ringwald uint_fast8_t Timer_A_getSynchronizedCaptureCompareInput(uint32_t timer,
415*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister, uint_fast16_t synchronizedSetting)
416*5fd0122aSMatthias Ringwald {
417*5fd0122aSMatthias Ringwald ASSERT(
418*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
419*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
420*5fd0122aSMatthias Ringwald == captureCompareRegister)
421*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
422*5fd0122aSMatthias Ringwald == captureCompareRegister)
423*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
424*5fd0122aSMatthias Ringwald == captureCompareRegister)
425*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
426*5fd0122aSMatthias Ringwald == captureCompareRegister)
427*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
428*5fd0122aSMatthias Ringwald == captureCompareRegister)
429*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
430*5fd0122aSMatthias Ringwald == captureCompareRegister));
431*5fd0122aSMatthias Ringwald
432*5fd0122aSMatthias Ringwald ASSERT(
433*5fd0122aSMatthias Ringwald (TIMER_A_READ_CAPTURE_COMPARE_INPUT == synchronizedSetting)
434*5fd0122aSMatthias Ringwald || (TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT
435*5fd0122aSMatthias Ringwald == synchronizedSetting));
436*5fd0122aSMatthias Ringwald
437*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
438*5fd0122aSMatthias Ringwald if (TIMER_A_CMSIS(timer)->CCTL[idx] & synchronizedSetting)
439*5fd0122aSMatthias Ringwald return TIMER_A_CAPTURECOMPARE_INPUT_HIGH;
440*5fd0122aSMatthias Ringwald else
441*5fd0122aSMatthias Ringwald return TIMER_A_CAPTURECOMPARE_INPUT_LOW;
442*5fd0122aSMatthias Ringwald }
443*5fd0122aSMatthias Ringwald
Timer_A_getOutputForOutputModeOutBitValue(uint32_t timer,uint_fast16_t captureCompareRegister)444*5fd0122aSMatthias Ringwald uint_fast8_t Timer_A_getOutputForOutputModeOutBitValue(uint32_t timer,
445*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
446*5fd0122aSMatthias Ringwald {
447*5fd0122aSMatthias Ringwald ASSERT(
448*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
449*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
450*5fd0122aSMatthias Ringwald == captureCompareRegister)
451*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
452*5fd0122aSMatthias Ringwald == captureCompareRegister)
453*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
454*5fd0122aSMatthias Ringwald == captureCompareRegister)
455*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
456*5fd0122aSMatthias Ringwald == captureCompareRegister)
457*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
458*5fd0122aSMatthias Ringwald == captureCompareRegister)
459*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
460*5fd0122aSMatthias Ringwald == captureCompareRegister));
461*5fd0122aSMatthias Ringwald
462*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
463*5fd0122aSMatthias Ringwald if (BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[idx],TIMER_A_CCTLN_OUT_OFS))
464*5fd0122aSMatthias Ringwald return TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH;
465*5fd0122aSMatthias Ringwald else
466*5fd0122aSMatthias Ringwald return TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW;
467*5fd0122aSMatthias Ringwald }
468*5fd0122aSMatthias Ringwald
Timer_A_getCaptureCompareCount(uint32_t timer,uint_fast16_t captureCompareRegister)469*5fd0122aSMatthias Ringwald uint_fast16_t Timer_A_getCaptureCompareCount(uint32_t timer,
470*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
471*5fd0122aSMatthias Ringwald {
472*5fd0122aSMatthias Ringwald ASSERT(
473*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
474*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
475*5fd0122aSMatthias Ringwald == captureCompareRegister)
476*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
477*5fd0122aSMatthias Ringwald == captureCompareRegister)
478*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
479*5fd0122aSMatthias Ringwald == captureCompareRegister)
480*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
481*5fd0122aSMatthias Ringwald == captureCompareRegister)
482*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
483*5fd0122aSMatthias Ringwald == captureCompareRegister)
484*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
485*5fd0122aSMatthias Ringwald == captureCompareRegister));
486*5fd0122aSMatthias Ringwald
487*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
488*5fd0122aSMatthias Ringwald return (TIMER_A_CMSIS(timer)->CCR[idx]);
489*5fd0122aSMatthias Ringwald }
490*5fd0122aSMatthias Ringwald
Timer_A_setOutputForOutputModeOutBitValue(uint32_t timer,uint_fast16_t captureCompareRegister,uint_fast8_t outputModeOutBitValue)491*5fd0122aSMatthias Ringwald void Timer_A_setOutputForOutputModeOutBitValue(uint32_t timer,
492*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister,
493*5fd0122aSMatthias Ringwald uint_fast8_t outputModeOutBitValue)
494*5fd0122aSMatthias Ringwald {
495*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
496*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCTL[idx] =
497*5fd0122aSMatthias Ringwald ((TIMER_A_CMSIS(timer)->CCTL[idx])
498*5fd0122aSMatthias Ringwald & ~(TIMER_A_OUTPUTMODE_RESET_SET))
499*5fd0122aSMatthias Ringwald | (outputModeOutBitValue);
500*5fd0122aSMatthias Ringwald }
501*5fd0122aSMatthias Ringwald
Timer_A_generatePWM(uint32_t timer,const Timer_A_PWMConfig * config)502*5fd0122aSMatthias Ringwald void Timer_A_generatePWM(uint32_t timer, const Timer_A_PWMConfig *config)
503*5fd0122aSMatthias Ringwald {
504*5fd0122aSMatthias Ringwald ASSERT(
505*5fd0122aSMatthias Ringwald (TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK == config->clockSource)
506*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_ACLK == config->clockSource)
507*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_SMCLK == config->clockSource)
508*5fd0122aSMatthias Ringwald || (TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
509*5fd0122aSMatthias Ringwald == config->clockSource));
510*5fd0122aSMatthias Ringwald
511*5fd0122aSMatthias Ringwald ASSERT(
512*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == config->compareRegister)
513*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
514*5fd0122aSMatthias Ringwald == config->compareRegister)
515*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
516*5fd0122aSMatthias Ringwald == config->compareRegister)
517*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
518*5fd0122aSMatthias Ringwald == config->compareRegister)
519*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
520*5fd0122aSMatthias Ringwald == config->compareRegister)
521*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
522*5fd0122aSMatthias Ringwald == config->compareRegister)
523*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
524*5fd0122aSMatthias Ringwald == config->compareRegister));
525*5fd0122aSMatthias Ringwald
526*5fd0122aSMatthias Ringwald ASSERT(
527*5fd0122aSMatthias Ringwald (TIMER_A_OUTPUTMODE_OUTBITVALUE == config->compareOutputMode)
528*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET == config->compareOutputMode)
529*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_RESET
530*5fd0122aSMatthias Ringwald == config->compareOutputMode)
531*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_SET_RESET
532*5fd0122aSMatthias Ringwald == config->compareOutputMode)
533*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE == config->compareOutputMode)
534*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET == config->compareOutputMode)
535*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_TOGGLE_SET
536*5fd0122aSMatthias Ringwald == config->compareOutputMode)
537*5fd0122aSMatthias Ringwald || (TIMER_A_OUTPUTMODE_RESET_SET
538*5fd0122aSMatthias Ringwald == config->compareOutputMode));
539*5fd0122aSMatthias Ringwald
540*5fd0122aSMatthias Ringwald privateTimer_AProcessClockSourceDivider(timer, config->clockSourceDivider);
541*5fd0122aSMatthias Ringwald
542*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL &=
543*5fd0122aSMatthias Ringwald ~(TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK + TIMER_A_UPDOWN_MODE
544*5fd0122aSMatthias Ringwald + TIMER_A_DO_CLEAR + TIMER_A_TAIE_INTERRUPT_ENABLE);
545*5fd0122aSMatthias Ringwald
546*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL |= (config->clockSource + TIMER_A_UP_MODE
547*5fd0122aSMatthias Ringwald + TIMER_A_DO_CLEAR);
548*5fd0122aSMatthias Ringwald
549*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[0] = config->timerPeriod;
550*5fd0122aSMatthias Ringwald
551*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCTL[0] &= ~(TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
552*5fd0122aSMatthias Ringwald + TIMER_A_OUTPUTMODE_RESET_SET);
553*5fd0122aSMatthias Ringwald
554*5fd0122aSMatthias Ringwald uint8_t idx = (config->compareRegister>>1) - 1;
555*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCTL[idx] |= config->compareOutputMode;
556*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[idx] = config->dutyCycle;
557*5fd0122aSMatthias Ringwald }
558*5fd0122aSMatthias Ringwald
Timer_A_stopTimer(uint32_t timer)559*5fd0122aSMatthias Ringwald void Timer_A_stopTimer(uint32_t timer)
560*5fd0122aSMatthias Ringwald {
561*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CTL &= ~TIMER_A_CTL_MC_3;
562*5fd0122aSMatthias Ringwald }
563*5fd0122aSMatthias Ringwald
Timer_A_setCompareValue(uint32_t timer,uint_fast16_t compareRegister,uint_fast16_t compareValue)564*5fd0122aSMatthias Ringwald void Timer_A_setCompareValue(uint32_t timer, uint_fast16_t compareRegister,
565*5fd0122aSMatthias Ringwald uint_fast16_t compareValue)
566*5fd0122aSMatthias Ringwald {
567*5fd0122aSMatthias Ringwald ASSERT(
568*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == compareRegister)
569*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1 == compareRegister)
570*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2 == compareRegister)
571*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3 == compareRegister)
572*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4 == compareRegister)
573*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5 == compareRegister)
574*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6 == compareRegister));
575*5fd0122aSMatthias Ringwald
576*5fd0122aSMatthias Ringwald uint8_t idx = (compareRegister>>1) - 1;
577*5fd0122aSMatthias Ringwald TIMER_A_CMSIS(timer)->CCR[idx] = compareValue;
578*5fd0122aSMatthias Ringwald }
579*5fd0122aSMatthias Ringwald
Timer_A_clearInterruptFlag(uint32_t timer)580*5fd0122aSMatthias Ringwald void Timer_A_clearInterruptFlag(uint32_t timer)
581*5fd0122aSMatthias Ringwald {
582*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CTL,TIMER_A_CTL_IFG_OFS) = 0;
583*5fd0122aSMatthias Ringwald }
584*5fd0122aSMatthias Ringwald
Timer_A_clearCaptureCompareInterrupt(uint32_t timer,uint_fast16_t captureCompareRegister)585*5fd0122aSMatthias Ringwald void Timer_A_clearCaptureCompareInterrupt(uint32_t timer,
586*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
587*5fd0122aSMatthias Ringwald {
588*5fd0122aSMatthias Ringwald ASSERT(
589*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
590*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
591*5fd0122aSMatthias Ringwald == captureCompareRegister)
592*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
593*5fd0122aSMatthias Ringwald == captureCompareRegister)
594*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
595*5fd0122aSMatthias Ringwald == captureCompareRegister)
596*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
597*5fd0122aSMatthias Ringwald == captureCompareRegister)
598*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
599*5fd0122aSMatthias Ringwald == captureCompareRegister)
600*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
601*5fd0122aSMatthias Ringwald == captureCompareRegister));
602*5fd0122aSMatthias Ringwald
603*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
604*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[idx],TIMER_A_CCTLN_CCIFG_OFS) = 0;
605*5fd0122aSMatthias Ringwald }
606*5fd0122aSMatthias Ringwald
Timer_A_enableInterrupt(uint32_t timer)607*5fd0122aSMatthias Ringwald void Timer_A_enableInterrupt(uint32_t timer)
608*5fd0122aSMatthias Ringwald {
609*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CTL,TIMER_A_CTL_IE_OFS) = 1;
610*5fd0122aSMatthias Ringwald }
611*5fd0122aSMatthias Ringwald
Timer_A_disableInterrupt(uint32_t timer)612*5fd0122aSMatthias Ringwald void Timer_A_disableInterrupt(uint32_t timer)
613*5fd0122aSMatthias Ringwald {
614*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CTL,TIMER_A_CTL_IE_OFS) = 0;
615*5fd0122aSMatthias Ringwald }
616*5fd0122aSMatthias Ringwald
Timer_A_getInterruptStatus(uint32_t timer)617*5fd0122aSMatthias Ringwald uint32_t Timer_A_getInterruptStatus(uint32_t timer)
618*5fd0122aSMatthias Ringwald {
619*5fd0122aSMatthias Ringwald return (TIMER_A_CMSIS(timer)->CTL) & TIMER_A_CTL_IFG;
620*5fd0122aSMatthias Ringwald }
621*5fd0122aSMatthias Ringwald
Timer_A_enableCaptureCompareInterrupt(uint32_t timer,uint_fast16_t captureCompareRegister)622*5fd0122aSMatthias Ringwald void Timer_A_enableCaptureCompareInterrupt(uint32_t timer,
623*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
624*5fd0122aSMatthias Ringwald {
625*5fd0122aSMatthias Ringwald ASSERT(
626*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
627*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
628*5fd0122aSMatthias Ringwald == captureCompareRegister)
629*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
630*5fd0122aSMatthias Ringwald == captureCompareRegister)
631*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
632*5fd0122aSMatthias Ringwald == captureCompareRegister)
633*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
634*5fd0122aSMatthias Ringwald == captureCompareRegister)
635*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
636*5fd0122aSMatthias Ringwald == captureCompareRegister)
637*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
638*5fd0122aSMatthias Ringwald == captureCompareRegister));
639*5fd0122aSMatthias Ringwald
640*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
641*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[idx],TIMER_A_CCTLN_CCIE_OFS) = 1;
642*5fd0122aSMatthias Ringwald }
643*5fd0122aSMatthias Ringwald
Timer_A_disableCaptureCompareInterrupt(uint32_t timer,uint_fast16_t captureCompareRegister)644*5fd0122aSMatthias Ringwald void Timer_A_disableCaptureCompareInterrupt(uint32_t timer,
645*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
646*5fd0122aSMatthias Ringwald {
647*5fd0122aSMatthias Ringwald ASSERT(
648*5fd0122aSMatthias Ringwald (TIMER_A_CAPTURECOMPARE_REGISTER_0 == captureCompareRegister)
649*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_1
650*5fd0122aSMatthias Ringwald == captureCompareRegister)
651*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_2
652*5fd0122aSMatthias Ringwald == captureCompareRegister)
653*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_3
654*5fd0122aSMatthias Ringwald == captureCompareRegister)
655*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_4
656*5fd0122aSMatthias Ringwald == captureCompareRegister)
657*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_5
658*5fd0122aSMatthias Ringwald == captureCompareRegister)
659*5fd0122aSMatthias Ringwald || (TIMER_A_CAPTURECOMPARE_REGISTER_6
660*5fd0122aSMatthias Ringwald == captureCompareRegister));
661*5fd0122aSMatthias Ringwald
662*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
663*5fd0122aSMatthias Ringwald BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[idx],TIMER_A_CCTLN_CCIE_OFS) = 0;
664*5fd0122aSMatthias Ringwald
665*5fd0122aSMatthias Ringwald }
666*5fd0122aSMatthias Ringwald
Timer_A_getCaptureCompareInterruptStatus(uint32_t timer,uint_fast16_t captureCompareRegister,uint_fast16_t mask)667*5fd0122aSMatthias Ringwald uint32_t Timer_A_getCaptureCompareInterruptStatus(uint32_t timer,
668*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister, uint_fast16_t mask)
669*5fd0122aSMatthias Ringwald {
670*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
671*5fd0122aSMatthias Ringwald return (TIMER_A_CMSIS(timer)->CCTL[idx]) & mask;
672*5fd0122aSMatthias Ringwald }
673*5fd0122aSMatthias Ringwald
Timer_A_getEnabledInterruptStatus(uint32_t timer)674*5fd0122aSMatthias Ringwald uint32_t Timer_A_getEnabledInterruptStatus(uint32_t timer)
675*5fd0122aSMatthias Ringwald {
676*5fd0122aSMatthias Ringwald if (TIMER_A_CMSIS(timer)->CTL & TIMER_A_CTL_IE)
677*5fd0122aSMatthias Ringwald {
678*5fd0122aSMatthias Ringwald return Timer_A_getInterruptStatus(timer);
679*5fd0122aSMatthias Ringwald } else
680*5fd0122aSMatthias Ringwald {
681*5fd0122aSMatthias Ringwald return 0;
682*5fd0122aSMatthias Ringwald }
683*5fd0122aSMatthias Ringwald
684*5fd0122aSMatthias Ringwald }
685*5fd0122aSMatthias Ringwald
Timer_A_getCaptureCompareEnabledInterruptStatus(uint32_t timer,uint_fast16_t captureCompareRegister)686*5fd0122aSMatthias Ringwald uint32_t Timer_A_getCaptureCompareEnabledInterruptStatus(uint32_t timer,
687*5fd0122aSMatthias Ringwald uint_fast16_t captureCompareRegister)
688*5fd0122aSMatthias Ringwald {
689*5fd0122aSMatthias Ringwald uint8_t idx = (captureCompareRegister>>1) - 1;
690*5fd0122aSMatthias Ringwald if (BITBAND_PERI(TIMER_A_CMSIS(timer)->CCTL[idx],TIMER_A_CCTLN_CCIE_OFS))
691*5fd0122aSMatthias Ringwald return Timer_A_getCaptureCompareInterruptStatus(timer,
692*5fd0122aSMatthias Ringwald captureCompareRegister,
693*5fd0122aSMatthias Ringwald TIMER_A_CAPTURE_OVERFLOW |
694*5fd0122aSMatthias Ringwald TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG);
695*5fd0122aSMatthias Ringwald else
696*5fd0122aSMatthias Ringwald return 0;
697*5fd0122aSMatthias Ringwald }
698*5fd0122aSMatthias Ringwald
Timer_A_registerInterrupt(uint32_t timer,uint_fast8_t interruptSelect,void (* intHandler)(void))699*5fd0122aSMatthias Ringwald void Timer_A_registerInterrupt(uint32_t timer, uint_fast8_t interruptSelect,
700*5fd0122aSMatthias Ringwald void (*intHandler)(void))
701*5fd0122aSMatthias Ringwald {
702*5fd0122aSMatthias Ringwald if (interruptSelect == TIMER_A_CCR0_INTERRUPT)
703*5fd0122aSMatthias Ringwald {
704*5fd0122aSMatthias Ringwald switch (timer)
705*5fd0122aSMatthias Ringwald {
706*5fd0122aSMatthias Ringwald case TIMER_A0_BASE:
707*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA0_0, intHandler);
708*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA0_0);
709*5fd0122aSMatthias Ringwald break;
710*5fd0122aSMatthias Ringwald case TIMER_A1_BASE:
711*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA1_0, intHandler);
712*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA1_0);
713*5fd0122aSMatthias Ringwald break;
714*5fd0122aSMatthias Ringwald case TIMER_A2_BASE:
715*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA2_0, intHandler);
716*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA2_0);
717*5fd0122aSMatthias Ringwald break;
718*5fd0122aSMatthias Ringwald case TIMER_A3_BASE:
719*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA3_0, intHandler);
720*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA3_0);
721*5fd0122aSMatthias Ringwald break;
722*5fd0122aSMatthias Ringwald default:
723*5fd0122aSMatthias Ringwald ASSERT(false);
724*5fd0122aSMatthias Ringwald }
725*5fd0122aSMatthias Ringwald } else if (interruptSelect == TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT)
726*5fd0122aSMatthias Ringwald {
727*5fd0122aSMatthias Ringwald switch (timer)
728*5fd0122aSMatthias Ringwald {
729*5fd0122aSMatthias Ringwald case TIMER_A0_BASE:
730*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA0_N, intHandler);
731*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA0_N);
732*5fd0122aSMatthias Ringwald break;
733*5fd0122aSMatthias Ringwald case TIMER_A1_BASE:
734*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA1_N, intHandler);
735*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA1_N);
736*5fd0122aSMatthias Ringwald break;
737*5fd0122aSMatthias Ringwald case TIMER_A2_BASE:
738*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA2_N, intHandler);
739*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA2_N);
740*5fd0122aSMatthias Ringwald break;
741*5fd0122aSMatthias Ringwald case TIMER_A3_BASE:
742*5fd0122aSMatthias Ringwald Interrupt_registerInterrupt(INT_TA3_N, intHandler);
743*5fd0122aSMatthias Ringwald Interrupt_enableInterrupt(INT_TA3_N);
744*5fd0122aSMatthias Ringwald break;
745*5fd0122aSMatthias Ringwald default:
746*5fd0122aSMatthias Ringwald ASSERT(false);
747*5fd0122aSMatthias Ringwald }
748*5fd0122aSMatthias Ringwald } else
749*5fd0122aSMatthias Ringwald {
750*5fd0122aSMatthias Ringwald ASSERT(false);
751*5fd0122aSMatthias Ringwald }
752*5fd0122aSMatthias Ringwald }
753*5fd0122aSMatthias Ringwald
Timer_A_unregisterInterrupt(uint32_t timer,uint_fast8_t interruptSelect)754*5fd0122aSMatthias Ringwald void Timer_A_unregisterInterrupt(uint32_t timer, uint_fast8_t interruptSelect)
755*5fd0122aSMatthias Ringwald {
756*5fd0122aSMatthias Ringwald if (interruptSelect == TIMER_A_CCR0_INTERRUPT)
757*5fd0122aSMatthias Ringwald {
758*5fd0122aSMatthias Ringwald switch (timer)
759*5fd0122aSMatthias Ringwald {
760*5fd0122aSMatthias Ringwald case TIMER_A0_BASE:
761*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA0_0);
762*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA0_0);
763*5fd0122aSMatthias Ringwald break;
764*5fd0122aSMatthias Ringwald case TIMER_A1_BASE:
765*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA1_0);
766*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA1_0);
767*5fd0122aSMatthias Ringwald break;
768*5fd0122aSMatthias Ringwald case TIMER_A2_BASE:
769*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA2_0);
770*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA2_0);
771*5fd0122aSMatthias Ringwald break;
772*5fd0122aSMatthias Ringwald case TIMER_A3_BASE:
773*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA3_0);
774*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA3_0);
775*5fd0122aSMatthias Ringwald break;
776*5fd0122aSMatthias Ringwald default:
777*5fd0122aSMatthias Ringwald ASSERT(false);
778*5fd0122aSMatthias Ringwald }
779*5fd0122aSMatthias Ringwald } else if (interruptSelect == TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT)
780*5fd0122aSMatthias Ringwald {
781*5fd0122aSMatthias Ringwald switch (timer)
782*5fd0122aSMatthias Ringwald {
783*5fd0122aSMatthias Ringwald case TIMER_A0_BASE:
784*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA0_N);
785*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA0_N);
786*5fd0122aSMatthias Ringwald break;
787*5fd0122aSMatthias Ringwald case TIMER_A1_BASE:
788*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA1_N);
789*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA1_N);
790*5fd0122aSMatthias Ringwald break;
791*5fd0122aSMatthias Ringwald case TIMER_A2_BASE:
792*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA2_N);
793*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA2_N);
794*5fd0122aSMatthias Ringwald break;
795*5fd0122aSMatthias Ringwald case TIMER_A3_BASE:
796*5fd0122aSMatthias Ringwald Interrupt_disableInterrupt(INT_TA3_N);
797*5fd0122aSMatthias Ringwald Interrupt_unregisterInterrupt(INT_TA3_N);
798*5fd0122aSMatthias Ringwald break;
799*5fd0122aSMatthias Ringwald default:
800*5fd0122aSMatthias Ringwald ASSERT(false);
801*5fd0122aSMatthias Ringwald }
802*5fd0122aSMatthias Ringwald } else
803*5fd0122aSMatthias Ringwald {
804*5fd0122aSMatthias Ringwald ASSERT(false);
805*5fd0122aSMatthias Ringwald }
806*5fd0122aSMatthias Ringwald }
807*5fd0122aSMatthias Ringwald
808