| /* |
| * ------------------------------------------- |
| * MSP432 DriverLib - v3_10_00_09 |
| * ------------------------------------------- |
| * |
| * --COPYRIGHT--,BSD,BSD |
| * Copyright (c) 2014, Texas Instruments Incorporated |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * * Neither the name of Texas Instruments Incorporated nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * --/COPYRIGHT--*/ |
| #ifndef TIMERA_H_ |
| #define TIMERA_H_ |
| |
| //***************************************************************************** |
| // |
| //! \addtogroup timera_api |
| //! @{ |
| // |
| //***************************************************************************** |
| |
| //***************************************************************************** |
| // |
| // If building with a C++ compiler, make all of the definitions in this header |
| // have a C binding. |
| // |
| //***************************************************************************** |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| #include <stdint.h> |
| #include <msp.h> |
| #include <stdbool.h> |
| |
| //***************************************************************************** |
| // |
| // Timer_A Specific Parameters |
| // |
| //***************************************************************************** |
| #define TIMER_A_CMSIS(x) ((Timer_A_Type *) x) |
| |
| #define TIMER_A_CCR0_INTERRUPT 0x00 |
| #define TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT 0x01 |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_ContinuousModeConfig |
| //! \brief Type definition for \link _Timer_A_ContinuousModeConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_ContinuousModeConfig |
| //! \brief Configuration structure for continuous mode in the \b Timer_A module. |
| //! See \link Timer_A_configureContinuousMode \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_ContinuousModeConfig |
| { |
| uint_fast16_t clockSource; |
| uint_fast16_t clockSourceDivider; |
| uint_fast16_t timerInterruptEnable_TAIE; |
| uint_fast16_t timerClear; |
| } Timer_A_ContinuousModeConfig; |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_UpModeConfig |
| //! \brief Type definition for \link _Timer_A_UpModeConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_UpModeConfig |
| //! \brief Configuration structure for Up mode in the \b Timer_A module. See |
| //! \link Timer_A_configureUpMode \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_UpModeConfig |
| { |
| uint_fast16_t clockSource; |
| uint_fast16_t clockSourceDivider; |
| uint_fast16_t timerPeriod; |
| uint_fast16_t timerInterruptEnable_TAIE; |
| uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE; |
| uint_fast16_t timerClear; |
| } Timer_A_UpModeConfig; |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_UpDownModeConfig |
| //! \brief Type definition for \link _Timer_A_UpDownModeConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_UpDownModeConfig |
| //! \brief Configuration structure for UpDown mode in the \b Timer_A module. See |
| //! \link Timer_A_configureUpDownMode \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_UpDownModeConfig |
| { |
| uint_fast16_t clockSource; |
| uint_fast16_t clockSourceDivider; |
| uint_fast16_t timerPeriod; |
| uint_fast16_t timerInterruptEnable_TAIE; |
| uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE; |
| uint_fast16_t timerClear; |
| } Timer_A_UpDownModeConfig; |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_CaptureModeConfig |
| //! \brief Type definition for \link _Timer_A_CaptureModeConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_CaptureModeConfig |
| //! \brief Configuration structure for capture mode in the \b Timer_A module. |
| //! See \link Timer_A_initCapture \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_CaptureModeConfig |
| { |
| uint_fast16_t captureRegister; |
| uint_fast16_t captureMode; |
| uint_fast16_t captureInputSelect; |
| uint_fast16_t synchronizeCaptureSource; |
| uint_fast8_t captureInterruptEnable; |
| uint_fast16_t captureOutputMode; |
| } Timer_A_CaptureModeConfig; |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_CompareModeConfig |
| //! \brief Type definition for \link _Timer_A_CompareModeConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_CompareModeConfig |
| //! \brief Configuration structure for compare mode in the \b Timer_A module. |
| //! See \link Timer_A_initCompare \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_CompareModeConfig |
| { |
| uint_fast16_t compareRegister; |
| uint_fast16_t compareInterruptEnable; |
| uint_fast16_t compareOutputMode; |
| uint_fast16_t compareValue; |
| } Timer_A_CompareModeConfig; |
| |
| //***************************************************************************** |
| // |
| //! ypedef Timer_A_PWMConfig |
| //! \brief Type definition for \link _Timer_A_PWMConfig \endlink |
| //! structure |
| //! |
| //! \struct _Timer_A_PWMConfig |
| //! \brief Configuration structure for PWM mode in the \b Timer_A module. See |
| //! \link Timer_A_generatePWM \endlink for parameter |
| //! documentation. |
| // |
| //***************************************************************************** |
| typedef struct _Timer_A_PWMConfig |
| { |
| uint_fast16_t clockSource; |
| uint_fast16_t clockSourceDivider; |
| uint_fast16_t timerPeriod; |
| uint_fast16_t compareRegister; |
| uint_fast16_t compareOutputMode; |
| uint_fast16_t dutyCycle; |
| } Timer_A_PWMConfig; |
| |
| |
| //***************************************************************************** |
| // |
| // The following is a parameter determines the maximum difference in counts of |
| // the TAxR register for a majority vote |
| // |
| //***************************************************************************** |
| #define TIMER_A_THRESHOLD 50 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the clockSourceDivider |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_1 0x01 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_2 0x02 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_4 0x04 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_8 0x08 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_3 0x03 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_5 0x05 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_6 0x06 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_7 0x07 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_10 0x0A |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_12 0x0C |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_14 0x0E |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_16 0x10 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_20 0x14 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_24 0x18 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_28 0x1C |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_32 0x20 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_40 0x28 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_48 0x30 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_56 0x38 |
| #define TIMER_A_CLOCKSOURCE_DIVIDER_64 0x40 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the timerMode parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_STOP_MODE TIMER_A_CTL_MC_0 |
| #define TIMER_A_UP_MODE TIMER_A_CTL_MC_1 |
| #define TIMER_A_CONTINUOUS_MODE TIMER_A_CTL_MC_2 |
| #define TIMER_A_UPDOWN_MODE TIMER_A_CTL_MC_3 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the timerClear parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_DO_CLEAR TIMER_A_CTL_CLR |
| #define TIMER_A_SKIP_CLEAR 0x00 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the clockSource parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK TIMER_A_CTL_SSEL__TACLK |
| #define TIMER_A_CLOCKSOURCE_ACLK TIMER_A_CTL_SSEL__ACLK |
| #define TIMER_A_CLOCKSOURCE_SMCLK TIMER_A_CTL_SSEL__SMCLK |
| #define TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK TIMER_A_CTL_SSEL__INCLK |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the timerInterruptEnable_TAIE |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_TAIE_INTERRUPT_ENABLE TIMER_A_CTL_IE |
| #define TIMER_A_TAIE_INTERRUPT_DISABLE 0x00 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the |
| // captureCompareInterruptEnable_CCR0_CCIE parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE TIMER_A_CCTLN_CCIE |
| #define TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE 0x00 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the captureInterruptEnable |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00 |
| #define TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE TIMER_A_CCTLN_CCIE |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the captureInputSelect |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTURE_INPUTSELECT_CCIxA TIMER_A_CCTLN_CCIS_0 |
| #define TIMER_A_CAPTURE_INPUTSELECT_CCIxB TIMER_A_CCTLN_CCIS_1 |
| #define TIMER_A_CAPTURE_INPUTSELECT_GND TIMER_A_CCTLN_CCIS_2 |
| #define TIMER_A_CAPTURE_INPUTSELECT_Vcc TIMER_A_CCTLN_CCIS_3 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the compareOutputMode |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_OUTPUTMODE_OUTBITVALUE TIMER_A_CCTLN_OUTMOD_0 |
| #define TIMER_A_OUTPUTMODE_SET TIMER_A_CCTLN_OUTMOD_1 |
| #define TIMER_A_OUTPUTMODE_TOGGLE_RESET TIMER_A_CCTLN_OUTMOD_2 |
| #define TIMER_A_OUTPUTMODE_SET_RESET TIMER_A_CCTLN_OUTMOD_3 |
| #define TIMER_A_OUTPUTMODE_TOGGLE TIMER_A_CCTLN_OUTMOD_4 |
| #define TIMER_A_OUTPUTMODE_RESET TIMER_A_CCTLN_OUTMOD_5 |
| #define TIMER_A_OUTPUTMODE_TOGGLE_SET TIMER_A_CCTLN_OUTMOD_6 |
| #define TIMER_A_OUTPUTMODE_RESET_SET TIMER_A_CCTLN_OUTMOD_7 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the compareRegister parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_0 0x02 |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_1 0x04 |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_2 0x06 |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_3 0x08 |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_4 0x0A |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_5 0x0C |
| #define TIMER_A_CAPTURECOMPARE_REGISTER_6 0x0E |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the captureMode parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTUREMODE_NO_CAPTURE TIMER_A_CCTLN_CM_0 |
| #define TIMER_A_CAPTUREMODE_RISING_EDGE TIMER_A_CCTLN_CM_1 |
| #define TIMER_A_CAPTUREMODE_FALLING_EDGE TIMER_A_CCTLN_CM_2 |
| #define TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE TIMER_A_CCTLN_CM_3 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the synchronizeCaptureSource |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTURE_ASYNCHRONOUS 0x00 |
| #define TIMER_A_CAPTURE_SYNCHRONOUS TIMER_A_CCTLN_SCS |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the mask parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_CAPTURE_OVERFLOW TIMER_A_CCTLN_COV |
| #define TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG TIMER_A_CCTLN_CCIFG |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the synchronized parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT TIMER_A_CCTLN_SCCI |
| #define TIMER_A_READ_CAPTURE_COMPARE_INPUT TIMER_A_CCTLN_CCI |
| |
| |
| #define TIMER_A_CAPTURECOMPARE_INPUT_HIGH 0x01 |
| #define TIMER_A_CAPTURECOMPARE_INPUT_LOW 0x00 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed to the outputModeOutBitValue |
| // parameter |
| // |
| //***************************************************************************** |
| #define TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH TIMER_A_CCTLN_OUT |
| #define TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW 0x00 |
| |
| //***************************************************************************** |
| // |
| // The following are values that can be passed toThe following are values that |
| // can be returned by the interrupt functions |
| // |
| //***************************************************************************** |
| #define TIMER_A_INTERRUPT_NOT_PENDING 0x00 |
| #define TIMER_A_INTERRUPT_PENDING 0x01 |
| |
| |
| /* Convenience function for setting the PWM Duty Cycle */ |
| #define Timer_A_setDutyCycle(timer,dutyCycle) \ |
| Timer_A_setCompareValue(timer,dutyCycle) |
| |
| //***************************************************************************** |
| // |
| //Prototypes for the APIs. |
| // |
| //***************************************************************************** |
| |
| //***************************************************************************** |
| // |
| //! Starts Timer_A counter |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param timerMode selects Clock source. Valid values are |
| //! - \b TIMER_A_CONTINUOUS_MODE [Default value] |
| //! - \b TIMER_A_UPDOWN_MODE |
| //! - \b TIMER_A_UP_MODE |
| //! |
| //! \note This function assumes that the timer has been previously configured |
| //! using Timer_A_configureContinuousMode, Timer_A_configureUpMode or |
| //! Timer_A_configureUpDownMode. |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_startCounter(uint32_t timer, uint_fast16_t timerMode); |
| |
| //***************************************************************************** |
| // |
| //! Configures Timer_A in continuous mode. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A continuous mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_ContinuousModeConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! |
| //! \param clockSource selects Clock source. Valid values are |
| //! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_ACLK |
| //! - \b TIMER_A_CLOCKSOURCE_SMCLK |
| //! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK |
| //! \param timerInterruptEnable_TAIE is the divider for Clock source. |
| //! Valid values are: |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64 |
| //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A |
| //! interrupt. Valid values are |
| //! - \b TIMER_A_TAIE_INTERRUPT_ENABLE |
| //! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value] |
| //! \param timerClear decides if Timer_A clock divider, count direction, |
| //! count need to be reset. Valid values are |
| //! - \b TIMER_A_DO_CLEAR |
| //! - \b TIMER_A_SKIP_CLEAR [Default value] |
| //! |
| //! \note This API does not start the timer. Timer needs to be started when |
| //! required using the Timer_A_startCounter API. |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_configureContinuousMode(uint32_t timer, |
| const Timer_A_ContinuousModeConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Configures Timer_A in up mode. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A Up mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_UpModeConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! \param clockSource selects Clock source. Valid values are |
| //! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_ACLK |
| //! - \b TIMER_A_CLOCKSOURCE_SMCLK |
| //! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK |
| //! \param clockSourceDivider is the divider for Clock source. Valid values |
| //! are: |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64 |
| //! \param timerPeriod is the specified Timer_A period. This is the value |
| //! that gets written into the CCR0. Limited to 16 bits[uint16_t] |
| //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A |
| //! interrupt. Valid values are: |
| //! - \b TIMER_A_TAIE_INTERRUPT_ENABLE and |
| //! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value] |
| //! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable |
| //! Timer_A CCR0 captureComapre interrupt. Valid values are |
| //! - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and |
| //! - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value] |
| //! \param timerClear decides if Timer_A clock divider, count direction, |
| //! count need to be reset. Valid values are |
| //! - \b TIMER_A_DO_CLEAR |
| //! - \b TIMER_A_SKIP_CLEAR [Default value] |
| //! |
| //!\note This API does not start the timer. Timer needs to be started when |
| //!required using the Timer_A_startCounter API. |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_configureUpMode(uint32_t timer, |
| const Timer_A_UpModeConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Configures Timer_A in up down mode. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A UpDown mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_UpDownModeConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! \param clockSource selects Clock source. Valid values are |
| //! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_ACLK |
| //! - \b TIMER_A_CLOCKSOURCE_SMCLK |
| //! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK |
| //! \param clockSourceDivider is the divider for Clock source. Valid values |
| //! are: |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value] |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64 |
| //! \param timerPeriod is the specified Timer_A period |
| //! \param timerInterruptEnable_TAIE is to enable or disable Timer_A |
| //! interrupt. |
| //! Valid values are |
| //! - \b TIMER_A_TAIE_INTERRUPT_ENABLE |
| //! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value] |
| //! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable |
| //! Timer_A CCR0 captureComapre interrupt. Valid values are |
| //! - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and |
| //! - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value] |
| //! \param timerClear decides if Timer_A clock divider, count direction, count |
| //! need to be reset. Valid values are |
| //! - \b TIMER_A_DO_CLEAR |
| //! - \b TIMER_A_SKIP_CLEAR [Default value] |
| //! |
| //!This API does not start the timer. Timer needs to be started when required |
| //!using the Timer_A_startCounter API. |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_configureUpDownMode(uint32_t timer, |
| const Timer_A_UpDownModeConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Initializes Capture Mode |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A capture mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_CaptureModeConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! \param captureRegister selects the Capture register being used. Valid |
| //! values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param captureMode is the capture mode selected. Valid values are |
| //! - \b TIMER_A_CAPTUREMODE_NO_CAPTURE [Default value] |
| //! - \b TIMER_A_CAPTUREMODE_RISING_EDGE |
| //! - \b TIMER_A_CAPTUREMODE_FALLING_EDGE |
| //! - \b TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE |
| //! \param captureInputSelect decides the Input Select |
| //! - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxA [Default value] |
| //! - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxB |
| //! - \b TIMER_A_CAPTURE_INPUTSELECT_GND |
| //! - \b TIMER_A_CAPTURE_INPUTSELECT_Vcc |
| //! \param synchronizeCaptureSource decides if capture source should be |
| //! synchronized with timer clock |
| //! Valid values are |
| //! - \b TIMER_A_CAPTURE_ASYNCHRONOUS [Default value] |
| //! - \b TIMER_A_CAPTURE_SYNCHRONOUS |
| //! \param captureInterruptEnable is to enable or disable |
| //! timer captureComapre interrupt. Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value] |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE |
| //! \param captureOutputMode specifies the ouput mode. Valid values are |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value], |
| //! - \b TIMER_A_OUTPUTMODE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_SET_RESET |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE, |
| //! - \b TIMER_A_OUTPUTMODE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_RESET_SET |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_initCapture(uint32_t timer, |
| const Timer_A_CaptureModeConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Initializes Compare Mode |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A compare mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_CompareModeConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! \param compareRegister selects the Capture register being used. Valid |
| //! values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param compareInterruptEnable is to enable or disable |
| //! timer captureComapre interrupt. Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE and |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value] |
| //! \param compareOutputMode specifies the output mode. Valid values are |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value], |
| //! - \b TIMER_A_OUTPUTMODE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_SET_RESET |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE, |
| //! - \b TIMER_A_OUTPUTMODE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_RESET_SET |
| //! \param compareValue is the count to be compared with in compare mode |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_initCompare(uint32_t timer, |
| const Timer_A_CompareModeConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Reset/Clear the timer clock divider, count direction, count |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \returns None |
| // |
| //***************************************************************************** |
| extern void Timer_A_clearTimer(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Get synchronized capture compare input |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister selects the Capture register being used. |
| //! Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param synchronizedSetting is to select type of capture compare input. |
| //! Valid values are |
| //! - \b TIMER_A_READ_CAPTURE_COMPARE_INPUT |
| //! - \b TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT |
| //! |
| //! \return \b TIMER_A_CAPTURECOMPARE_INPUT_HIGH or |
| //! - \b TIMER_A_CAPTURECOMPARE_INPUT_LOW |
| // |
| //***************************************************************************** |
| extern uint_fast8_t Timer_A_getSynchronizedCaptureCompareInput(uint32_t timer, |
| uint_fast16_t captureCompareRegister, |
| uint_fast16_t synchronizedSetting); |
| |
| //***************************************************************************** |
| // |
| //! Get ouput bit for output mode |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister selects the Capture register being used. |
| //! Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! |
| //! \return \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH or |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW |
| // |
| //***************************************************************************** |
| extern uint_fast8_t Timer_A_getOutputForOutputModeOutBitValue(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Get current capture compare count |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister selects the Capture register being used. |
| //! Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! |
| //! \return current count as uint16_t |
| // |
| //***************************************************************************** |
| extern uint_fast16_t Timer_A_getCaptureCompareCount(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Set ouput bit for output mode |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister selects the Capture register being used. |
| //! are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! \n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param outputModeOutBitValue the value to be set for out bit. |
| //! Valid values are: |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_setOutputForOutputModeOutBitValue(uint32_t timer, |
| uint_fast16_t captureCompareRegister, |
| uint_fast8_t outputModeOutBitValue); |
| |
| //***************************************************************************** |
| // |
| //! Generate a PWM with timer running in up mode |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param config Configuration structure for Timer_A PWM mode |
| //! |
| //! <hr> |
| //! <b>Configuration options for \link Timer_A_PWMConfig \endlink |
| //! structure.</b> |
| //! <hr> |
| //! \param clockSource selects Clock source. Valid values are |
| //! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK |
| //! - \b TIMER_A_CLOCKSOURCE_ACLK |
| //! - \b TIMER_A_CLOCKSOURCE_SMCLK |
| //! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK |
| //! \param clockSourceDivider is the divider for Clock source. Valid values |
| //! are |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56 |
| //! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64 |
| //! \param timerPeriod selects the desired timer period |
| //! \param compareRegister selects the compare register being used. |
| //! Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! <br>\n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param compareOutputMode specifies the ouput mode. Valid values are: |
| //! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE, |
| //! - \b TIMER_A_OUTPUTMODE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_SET_RESET |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE, |
| //! - \b TIMER_A_OUTPUTMODE_RESET, |
| //! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET, |
| //! - \b TIMER_A_OUTPUTMODE_RESET_SET |
| //! \param dutyCycle specifies the dutycycle for the generated waveform |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_generatePWM(uint32_t timer, |
| const Timer_A_PWMConfig *config); |
| |
| //***************************************************************************** |
| // |
| //! Stops the timer |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \returns None |
| // |
| //***************************************************************************** |
| extern void Timer_A_stopTimer(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Sets the value of the capture-compare register |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param compareRegister selects the Capture register being used. Valid |
| //! values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! <br>\n Refer to datasheet to ensure the device has the capture compare |
| //! register being used |
| //! \param compareValue is the count to be compared with in compare mode |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_setCompareValue(uint32_t timer, |
| uint_fast16_t compareRegister, uint_fast16_t compareValue); |
| |
| //***************************************************************************** |
| // |
| //! Returns the current value of the specified timer. Note that according to |
| //! the Timer A user guide, reading the value of the counter is unreliable |
| //! if the system clock is asynchronous from the timer clock. The API addresses |
| //! this concern by reading the timer count register twice and then determining |
| //! the integrity of the value. If the two values are within 10 timer counts |
| //! of each other, the value is deemed safe and returned. If not, the process |
| //! is repeated until a reliable timer value is determined. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \returns The value of the specified timer |
| // |
| //***************************************************************************** |
| extern uint16_t Timer_A_getCounterValue(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Clears the Timer TAIFG interrupt flag |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_clearInterruptFlag(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Clears the capture-compare interrupt flag |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister selects the Capture-compare register being |
| //! used. Valid values are |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5 |
| //! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6 |
| //! <br>Refer to the datasheet to ensure the device has the capture compare |
| //! register being used |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_clearCaptureCompareInterrupt(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Enable timer interrupt |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_enableInterrupt(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Disable timer interrupt |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_disableInterrupt(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Get timer interrupt status |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \return uint32_t. Return interrupt status. Valid values are |
| //! - \b TIMER_A_INTERRUPT_PENDING |
| //! - \b TIMER_A_INTERRUPT_NOT_PENDING |
| // |
| //***************************************************************************** |
| extern uint32_t Timer_A_getInterruptStatus(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Get timer interrupt status masked with the enabled interrupts. |
| //! This function is useful to call in ISRs to get a list of pending |
| //! interrupts that are actually enabled and could have caused |
| //! the ISR. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \return uint32_t. Return interrupt status. Valid values are |
| //! - \b TIMER_A_INTERRUPT_PENDING |
| //! - \b TIMER_A_INTERRUPT_NOT_PENDING |
| // |
| //***************************************************************************** |
| extern uint32_t Timer_A_getEnabledInterruptStatus(uint32_t timer); |
| |
| //***************************************************************************** |
| // |
| //! Enable capture compare interrupt |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister is the selected capture compare register |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_enableCaptureCompareInterrupt(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Disable capture compare interrupt |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister is the selected capture compare register |
| //! |
| //! \return None |
| // |
| //***************************************************************************** |
| extern void Timer_A_disableCaptureCompareInterrupt(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Return capture compare interrupt status |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister is the selected capture compare register |
| //! |
| //! \param mask is the mask for the interrupt status |
| //! Mask value is the logical OR of any of the following: |
| //! - \b TIMER_A_CAPTURE_OVERFLOW |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG |
| //! |
| //! \returns uint32_t. The mask of the set flags. |
| //! Valid values is an OR of |
| //! - \b TIMER_A_CAPTURE_OVERFLOW, |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG |
| // |
| //***************************************************************************** |
| extern uint32_t Timer_A_getCaptureCompareInterruptStatus(uint32_t timer, |
| uint_fast16_t captureCompareRegister, uint_fast16_t mask); |
| |
| //***************************************************************************** |
| // |
| //! Return capture compare interrupt status masked with the enabled interrupts. |
| //! This function is useful to call in ISRs to get a list of pending |
| //! interrupts that are actually enabled and could have caused |
| //! the ISR. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! \param captureCompareRegister is the selected capture compare register |
| //! |
| //! \returns uint32_t. The mask of the set flags. |
| //! Valid values is an OR of |
| //! - \b TIMER_A_CAPTURE_OVERFLOW, |
| //! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG |
| // |
| //***************************************************************************** |
| extern uint32_t Timer_A_getCaptureCompareEnabledInterruptStatus(uint32_t timer, |
| uint_fast16_t captureCompareRegister); |
| |
| //***************************************************************************** |
| // |
| //! Registers an interrupt handler for the timer capture compare interrupt. |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \param interruptSelect Selects which timer interrupt handler to |
| //! register. For the timer module, there are two separate interrupt handlers |
| //! that can be registered: |
| //! - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0 |
| //! - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the |
| //! interrupt for CCR1-6, as well as the overflow interrupt. |
| //! |
| //! \param intHandler is a pointer to the function to be called when the |
| //! timer capture compare interrupt occurs. |
| //! |
| //! This function registers the handler to be called when a timer |
| //! interrupt occurs. This function enables the global interrupt in the |
| //! interrupt controller; specific Timer_Ainterrupts must be enabled |
| //! via Timer_A_enableInterrupt(). It is the interrupt handler's |
| //! responsibility to clear the interrupt source |
| //! via Timer_A_clearCaptureCompareInterrupt(). |
| //! |
| //! \return None. |
| // |
| //***************************************************************************** |
| extern void Timer_A_registerInterrupt(uint32_t timer, |
| uint_fast8_t interruptSelect, void (*intHandler)(void)); |
| |
| //***************************************************************************** |
| // |
| //! Unregisters the interrupt handler for the timer |
| //! |
| //! \param timer is the instance of the Timer_A module. Valid parameters |
| //! vary from part to part, but can include: |
| //! - \b TIMER_A0_BASE |
| //! - \b TIMER_A1_BASE |
| //! - \b TIMER_A2_BASE |
| //! - \b TIMER_A3_BASE |
| //! |
| //! \param interruptSelect Selects which timer interrupt handler to |
| //! register. For the timer module, there are two separate interrupt handlers |
| //! that can be registered: |
| //! - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0 |
| //! - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the |
| //! interrupt for CCR1-6, as well as the overflow interrupt. |
| //! |
| //! This function unregisters the handler to be called when timer |
| //! interrupt occurs. This function also masks off the interrupt in the |
| //! interrupt controller so that the interrupt handler no longer is called. |
| //! |
| //! \sa Interrupt_registerInterrupt() for important information about |
| //! registering interrupt handlers. |
| //! |
| //! \return None. |
| // |
| //***************************************************************************** |
| extern void Timer_A_unregisterInterrupt(uint32_t timer, |
| uint_fast8_t interruptSelect); |
| |
| /* Backwards Compatibility Layer */ |
| #define Timer_A_clearTimerInterrupt Timer_A_clearInterruptFlag |
| #define Timer_A_clear Timer_A_clearTimer |
| #define Timer_A_initCaptureMode Timer_A_initCapture |
| #define Timer_A_initCompareMode Timer_A_initCompare |
| #define Timer_A_initContinuousMode Timer_A_configureContinuousMode |
| #define Timer_A_initUpDownMode Timer_A_configureUpDownMode |
| #define Timer_A_initUpMode Timer_A_configureUpMode |
| #define Timer_A_outputPWM Timer_A_generatePWM |
| #define Timer_A_stop Timer_A_stopTimer |
| |
| //***************************************************************************** |
| // |
| // Mark the end of the C bindings section for C++ compilers. |
| // |
| //***************************************************************************** |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| //***************************************************************************** |
| // |
| // Close the Doxygen group. |
| //! @} |
| // |
| //***************************************************************************** |
| |
| #endif /* TIMERA_H_ */ |