RTCC - Real Timer Counter/Calendar

Description

Real Time Counter and Calendar (RTCC) Peripheral API.

This module contains functions to control the RTCC peripheral of Silicon Labs 32-bit MCUs and SoCs. The RTCC ensures timekeeping in low energy modes. The RTCC also includes a BCD calendar mode for easy time and date keeping.

Data Structures

struct  RTCC_Init_TypeDef
 RTCC initialization structure.
 
struct  RTCC_CCChConf_TypeDef
 RTCC capture/compare channel configuration structure.
 

Functions

void RTCC_ChannelInit (int ch, RTCC_CCChConf_TypeDef const *confPtr)
 Configure the selected capture/compare channel of the RTCC.
 
void RTCC_Enable (bool enable)
 Enable/disable RTCC counting.
 
void RTCC_Init (const RTCC_Init_TypeDef *init)
 Initialize RTCC.
 
void RTCC_Reset (void)
 Restore RTCC to its reset state.
 
void RTCC_StatusClear (void)
 Clear the STATUS register.
 
uint32_t RTCC_ChannelCompareValueGet (int ch)
 Get the RTCC compare register value for a selected channel.
 
void RTCC_ChannelCompareValueSet (int ch, uint32_t value)
 Set the RTCC compare register value for a selected channel.
 
uint32_t RTCC_ChannelCaptureValueGet (int ch)
 Get the RTCC input capture register value for a selected channel.
 
uint32_t RTCC_ChannelCCVGet (int ch)
 Get the RTCC capture/compare register value for a selected channel.
 
void RTCC_ChannelCCVSet (int ch, uint32_t value)
 Set RTCC capture/compare register value for a selected channel.
 
uint32_t RTCC_ChannelDateGet (int ch)
 Get the calendar DATE register content for a selected channel.
 
void RTCC_ChannelDateSet (int ch, uint32_t date)
 Set the calendar DATE register for a selected channel.
 
uint32_t RTCC_ChannelTimeGet (int ch)
 Get the calendar TIME register content for a selected channel.
 
void RTCC_ChannelTimeSet (int ch, uint32_t time)
 Set the calendar TIME register for a selected channel.
 
uint32_t RTCC_CombinedCounterGet (void)
 Get the combined CNT/PRECNT register content.
 
uint32_t RTCC_CounterGet (void)
 Get the RTCC counter value.
 
void RTCC_CounterSet (uint32_t value)
 Set the RTCC CNT counter.
 
uint32_t RTCC_DateGet (void)
 Get the DATE register value.
 
void RTCC_DateSet (uint32_t date)
 Set the RTCC DATE register.
 
void RTCC_EM4WakeupEnable (bool enable)
 Enable/disable EM4 wakeup capability.
 
void RTCC_IntClear (uint32_t flags)
 Clear one or more pending RTCC interrupts.
 
void RTCC_IntDisable (uint32_t flags)
 Disable one or more RTCC interrupts.
 
void RTCC_IntEnable (uint32_t flags)
 Enable one or more RTCC interrupts.
 
uint32_t RTCC_IntGet (void)
 Get pending RTCC interrupt flags.
 
uint32_t RTCC_IntGetEnabled (void)
 Get enabled and pending RTCC interrupt flags.
 
void RTCC_IntSet (uint32_t flags)
 Set one or more pending RTCC interrupts from SW.
 
void RTCC_Lock (void)
 Lock RTCC registers.
 
uint32_t RTCC_PreCounterGet (void)
 Get the RTCC pre-counter value.
 
void RTCC_PreCounterSet (uint32_t preCntVal)
 Set the RTCC pre-counter value.
 
void RTCC_RetentionRamPowerDown (void)
 Power down retention RAM.
 
uint32_t RTCC_StatusGet (void)
 Get the STATUS register value.
 
uint32_t RTCC_TimeGet (void)
 Get the TIME register value.
 
void RTCC_TimeSet (uint32_t time)
 Set the RTCC TIME register.
 
void RTCC_Unlock (void)
 Unlock RTCC registers.
 

Macros

#define RTCC_INIT_DEFAULT
 Default RTCC initialization structure.
 
#define RTCC_CH_INIT_COMPARE_DEFAULT
 Default RTCC channel output compare initialization structure.
 
#define RTCC_CH_INIT_CAPTURE_DEFAULT
 Default RTCC channel input capture initialization structure.
 
#define RTCC_CC_NUM   3UL
 Number of RTCC capture/compare channels.
 
#define RTCC_CH_VALID(ch)   ((unsigned)(ch) < RTCC_CC_NUM)
 Validation of valid RTCC channel for assert statements.
 

Typedefs

typedef uint8_t RTCC_PRSSel_TypeDef
 PRS channel number.
 

Enumerations

enum  RTCC_CntMode_TypeDef {
  rtccCntModeNormal = _RTCC_CTRL_CNTMODE_NORMAL,
  rtccCntModeCalendar = _RTCC_CTRL_CNTMODE_CALENDAR
}
 Operational mode of the counter.
 
enum  RTCC_CntPresc_TypeDef {
  rtccCntPresc_1 = _RTCC_CTRL_CNTPRESC_DIV1,
  rtccCntPresc_2 = _RTCC_CTRL_CNTPRESC_DIV2,
  rtccCntPresc_4 = _RTCC_CTRL_CNTPRESC_DIV4,
  rtccCntPresc_8 = _RTCC_CTRL_CNTPRESC_DIV8,
  rtccCntPresc_16 = _RTCC_CTRL_CNTPRESC_DIV16,
  rtccCntPresc_32 = _RTCC_CTRL_CNTPRESC_DIV32,
  rtccCntPresc_64 = _RTCC_CTRL_CNTPRESC_DIV64,
  rtccCntPresc_128 = _RTCC_CTRL_CNTPRESC_DIV128,
  rtccCntPresc_256 = _RTCC_CTRL_CNTPRESC_DIV256,
  rtccCntPresc_512 = _RTCC_CTRL_CNTPRESC_DIV512,
  rtccCntPresc_1024 = _RTCC_CTRL_CNTPRESC_DIV1024,
  rtccCntPresc_2048 = _RTCC_CTRL_CNTPRESC_DIV2048,
  rtccCntPresc_4096 = _RTCC_CTRL_CNTPRESC_DIV4096,
  rtccCntPresc_8192 = _RTCC_CTRL_CNTPRESC_DIV8192,
  rtccCntPresc_16384 = _RTCC_CTRL_CNTPRESC_DIV16384,
  rtccCntPresc_32768 = _RTCC_CTRL_CNTPRESC_DIV32768
}
 Counter prescaler selection.
 
enum  RTCC_PrescMode_TypeDef {
  rtccCntTickPresc = _RTCC_CTRL_CNTTICK_PRESC,
  rtccCntTickCCV0Match = _RTCC_CTRL_CNTTICK_CCV0MATCH
}
 Prescaler mode of the RTCC counter.
 
enum  RTCC_CapComChMode_TypeDef {
  rtccCapComChModeOff = _RTCC_CC_CTRL_MODE_OFF,
  rtccCapComChModeCapture = _RTCC_CC_CTRL_MODE_INPUTCAPTURE,
  rtccCapComChModeCompare = _RTCC_CC_CTRL_MODE_OUTPUTCOMPARE
}
 Capture/Compare channel mode.
 
enum  RTCC_CompMatchOutAction_TypeDef {
  rtccCompMatchOutActionPulse = _RTCC_CC_CTRL_CMOA_PULSE,
  rtccCompMatchOutActionToggle = _RTCC_CC_CTRL_CMOA_TOGGLE,
  rtccCompMatchOutActionClear = _RTCC_CC_CTRL_CMOA_CLEAR,
  rtccCompMatchOutActionSet = _RTCC_CC_CTRL_CMOA_SET
}
 Compare match output action mode.
 
enum  RTCC_InEdgeSel_TypeDef {
  rtccInEdgeRising = _RTCC_CC_CTRL_ICEDGE_RISING,
  rtccInEdgeFalling = _RTCC_CC_CTRL_ICEDGE_FALLING,
  rtccInEdgeBoth = _RTCC_CC_CTRL_ICEDGE_BOTH,
  rtccInEdgeNone = _RTCC_CC_CTRL_ICEDGE_NONE
}
 Input edge select.
 
enum  RTCC_CompBase_TypeDef {
  rtccCompBaseCnt = _RTCC_CC_CTRL_COMPBASE_CNT,
  rtccCompBasePreCnt = _RTCC_CC_CTRL_COMPBASE_PRECNT
}
 Capture/Compare channel compare mode.
 
enum  RTCC_DayCompareMode_TypeDef {
  rtccDayCompareModeMonth = _RTCC_CC_CTRL_DAYCC_MONTH,
  rtccDayCompareModeWeek = _RTCC_CC_CTRL_DAYCC_WEEK
}
 Day compare mode.
 

Function Documentation

◆ RTCC_ChannelInit()

void RTCC_ChannelInit ( int  ch,
RTCC_CCChConf_TypeDef const *  confPtr 
)

Configure the selected capture/compare channel of the RTCC.

Use this function to configure an RTCC channel. Select capture/compare mode, match output action, overflow output action, and PRS input configuration. See the configuration structure RTCC_CCChConf_TypeDef for more details.

Parameters
[in]chA channel selector.
[in]confPtrA pointer to the configuration structure.

Configure the selected capture/compare channel.

◆ RTCC_Enable()

void RTCC_Enable ( bool  enable)

Enable/disable RTCC counting.

Parameters
[in]enableTrue to enable RTCC counting, false to disable counting.

◆ RTCC_Init()

void RTCC_Init ( const RTCC_Init_TypeDef init)

Initialize RTCC.

Note that the compare values must be set separately with RTCC_CompareSet(), which should probably be done prior to the use of this function if configuring the RTCC to start when initialization is completed.

Parameters
[in]initA pointer to the RTCC initialization structure.

◆ RTCC_Reset()

void RTCC_Reset ( void  )

Restore RTCC to its reset state.

◆ RTCC_StatusClear()

void RTCC_StatusClear ( void  )

Clear the STATUS register.

◆ RTCC_ChannelCompareValueGet()

uint32_t RTCC_ChannelCompareValueGet ( int  ch)
inline

Get the RTCC compare register value for a selected channel.

Parameters
[in]chChannel selector.
Returns
Compare register value.

◆ RTCC_ChannelCompareValueSet()

void RTCC_ChannelCompareValueSet ( int  ch,
uint32_t  value 
)
inline

Set the RTCC compare register value for a selected channel.

Parameters
[in]chChannel selector.
[in]valueCompare register value

◆ RTCC_ChannelCaptureValueGet()

uint32_t RTCC_ChannelCaptureValueGet ( int  ch)
inline

Get the RTCC input capture register value for a selected channel.

Parameters
[in]chChannel selector.
Returns
Capture register value.

◆ RTCC_ChannelCCVGet()

uint32_t RTCC_ChannelCCVGet ( int  ch)
inline

Get the RTCC capture/compare register value for a selected channel.

For parts with separate capture compare value registers, this function returns the compare value.

Parameters
[in]chChannel selector.
Returns
Capture/compare register value.

◆ RTCC_ChannelCCVSet()

void RTCC_ChannelCCVSet ( int  ch,
uint32_t  value 
)
inline

Set RTCC capture/compare register value for a selected channel.

For parts with separate capture compare value registers, this function sets the compare value.

Parameters
[in]chChannel selector.
[in]valueCapture/compare register value

◆ RTCC_ChannelDateGet()

uint32_t RTCC_ChannelDateGet ( int  ch)
inline

Get the calendar DATE register content for a selected channel.

Parameters
[in]chChannel selector.
Returns
DATE register value.

◆ RTCC_ChannelDateSet()

void RTCC_ChannelDateSet ( int  ch,
uint32_t  date 
)
inline

Set the calendar DATE register for a selected channel.

Parameters
[in]chChannel selector.
[in]dateDATE value.

◆ RTCC_ChannelTimeGet()

uint32_t RTCC_ChannelTimeGet ( int  ch)
inline

Get the calendar TIME register content for a selected channel.

Parameters
[in]chChannel selector.
Returns
TIME register value.

◆ RTCC_ChannelTimeSet()

void RTCC_ChannelTimeSet ( int  ch,
uint32_t  time 
)
inline

Set the calendar TIME register for a selected channel.

Parameters
[in]chChannel selector.
[in]timeTIME value.

◆ RTCC_CombinedCounterGet()

uint32_t RTCC_CombinedCounterGet ( void  )
inline

Get the combined CNT/PRECNT register content.

Returns
CNT/PRECNT register value.

◆ RTCC_CounterGet()

uint32_t RTCC_CounterGet ( void  )
inline

Get the RTCC counter value.

Returns
Current RTCC counter value.

◆ RTCC_CounterSet()

void RTCC_CounterSet ( uint32_t  value)
inline

Set the RTCC CNT counter.

Parameters
[in]valueCNT value.

◆ RTCC_DateGet()

uint32_t RTCC_DateGet ( void  )
inline

Get the DATE register value.

Returns
Current DATE register value.

◆ RTCC_DateSet()

void RTCC_DateSet ( uint32_t  date)
inline

Set the RTCC DATE register.

Parameters
[in]dateDATE value.

◆ RTCC_EM4WakeupEnable()

void RTCC_EM4WakeupEnable ( bool  enable)
inline

Enable/disable EM4 wakeup capability.

Parameters
[in]enableSet to true to enable EM4 wakeup, set to false otherwise.

◆ RTCC_IntClear()

void RTCC_IntClear ( uint32_t  flags)
inline

Clear one or more pending RTCC interrupts.

Parameters
[in]flagsRTCC interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources.

◆ RTCC_IntDisable()

void RTCC_IntDisable ( uint32_t  flags)
inline

Disable one or more RTCC interrupts.

Parameters
[in]flagsRTCC interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt.

◆ RTCC_IntEnable()

void RTCC_IntEnable ( uint32_t  flags)
inline

Enable one or more RTCC interrupts.

Note
Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using RTCC_IntClear() prior to enabling the interrupt.
Parameters
[in]flagsRTCC interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt.

◆ RTCC_IntGet()

uint32_t RTCC_IntGet ( void  )
inline

Get pending RTCC interrupt flags.

Note
Event bits are not cleared by using this function.
Returns
Pending RTCC interrupt sources. Returns a set of interrupt flags OR-ed together for the interrupt sources set.

◆ RTCC_IntGetEnabled()

uint32_t RTCC_IntGetEnabled ( void  )
inline

Get enabled and pending RTCC interrupt flags.

Useful for handling more interrupt sources in the same interrupt handler.

Returns
Pending and enabled RTCC interrupt sources. Returns a set of interrupt flags OR-ed together for the interrupt sources set.

◆ RTCC_IntSet()

void RTCC_IntSet ( uint32_t  flags)
inline

Set one or more pending RTCC interrupts from SW.

Parameters
[in]flagsRTCC interrupt sources to set to pending. Use a set of interrupt flags (RTCC_IFS_nnn).

◆ RTCC_Lock()

void RTCC_Lock ( void  )
inline

Lock RTCC registers.

Note
When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT, RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers cannot be written to.

◆ RTCC_PreCounterGet()

uint32_t RTCC_PreCounterGet ( void  )
inline

Get the RTCC pre-counter value.

Returns
Current RTCC pre-counter value.

◆ RTCC_PreCounterSet()

void RTCC_PreCounterSet ( uint32_t  preCntVal)