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