1300 lines
54 KiB
C
1300 lines
54 KiB
C
/*
|
|
* -------------------------------------------
|
|
* MSP432 DriverLib - v3_40_00_10
|
|
* -------------------------------------------
|
|
*
|
|
* --COPYRIGHT--,BSD,BSD
|
|
* Copyright (c) 2016, 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_ */
|