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

uint32_t RTCC_ChannelCompareValueGet (int ch)
 Get RTCC compare register value for selected channel.
 
void RTCC_ChannelCompareValueSet (int ch, uint32_t value)
 Set RTCC compare register value for selected channel.
 
uint32_t RTCC_ChannelCaptureValueGet (int ch)
 Get RTCC input capture register value for selected channel.
 
uint32_t RTCC_ChannelCCVGet (int ch)
 Get RTCC capture/compare register value for selected channel.
 
void RTCC_ChannelCCVSet (int ch, uint32_t value)
 Set RTCC capture/compare register value for selected channel.
 
uint32_t RTCC_CombinedCounterGet (void)
 Get combined CNT/PRECNT register content.
 
uint32_t RTCC_CounterGet (void)
 Get RTCC counter value.
 
void RTCC_CounterSet (uint32_t value)
 Set RTCC CNT counter.
 
void RTCC_Enable (bool enable)
 Enable/disable RTCC counting.
 
void RTCC_Init (const RTCC_Init_TypeDef *init)
 Initialize RTCC.
 
void RTCC_ChannelInit (int ch, RTCC_CCChConf_TypeDef const *confPtr)
 Configure the selected capture/compare channel of the RTCC.
 
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 RTCC pre-counter value.
 
void RTCC_PreCounterSet (uint32_t preCntVal)
 Set RTCC pre-counter value.
 
void RTCC_Reset (void)
 Restore RTCC to its reset state.
 
void RTCC_StatusClear (void)
 Clear the STATUS register.
 
uint32_t RTCC_StatusGet (void)
 Get STATUS register value.
 
void RTCC_SyncWait (void)
 Wait for the RTCC to complete all synchronization of register changes and commands.
 
void RTCC_Start (void)
 Start RTCC counter.
 
void RTCC_Stop (void)
 Stop the RTCC counter.
 
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_CH_VALID(ch)   ((unsigned)(ch) < RTCC_CC_NUM)
 Number of RTCC capture/compare channels.
 

Typedefs

typedef uint8_t RTCC_PRSSel_TypeDef
 PRS channel number.
 

Enumerations

enum  RTCC_CntPresc_TypeDef {
  rtccCntPresc_1 = _RTCC_CFG_CNTPRESC_DIV1,
  rtccCntPresc_2 = _RTCC_CFG_CNTPRESC_DIV2,
  rtccCntPresc_4 = _RTCC_CFG_CNTPRESC_DIV4,
  rtccCntPresc_8 = _RTCC_CFG_CNTPRESC_DIV8,
  rtccCntPresc_16 = _RTCC_CFG_CNTPRESC_DIV16,
  rtccCntPresc_32 = _RTCC_CFG_CNTPRESC_DIV32,
  rtccCntPresc_64 = _RTCC_CFG_CNTPRESC_DIV64,
  rtccCntPresc_128 = _RTCC_CFG_CNTPRESC_DIV128,
  rtccCntPresc_256 = _RTCC_CFG_CNTPRESC_DIV256,
  rtccCntPresc_512 = _RTCC_CFG_CNTPRESC_DIV512,
  rtccCntPresc_1024 = _RTCC_CFG_CNTPRESC_DIV1024,
  rtccCntPresc_2048 = _RTCC_CFG_CNTPRESC_DIV2048,
  rtccCntPresc_4096 = _RTCC_CFG_CNTPRESC_DIV4096,
  rtccCntPresc_8192 = _RTCC_CFG_CNTPRESC_DIV8192,
  rtccCntPresc_16384 = _RTCC_CFG_CNTPRESC_DIV16384,
  rtccCntPresc_32768 = _RTCC_CFG_CNTPRESC_DIV32768
}
 Counter prescaler selection.
 
enum  RTCC_PrescMode_TypeDef {
  rtccCntTickPresc = _RTCC_CFG_CNTTICK_PRESC,
  rtccCntTickCCV0Match = _RTCC_CFG_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.
 

Function Documentation

◆ RTCC_ChannelCompareValueGet()

uint32_t RTCC_ChannelCompareValueGet ( int  ch)
inline

Get RTCC compare register value for selected channel.

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

◆ RTCC_ChannelCompareValueSet()

void RTCC_ChannelCompareValueSet ( int  ch,
uint32_t  value 
)
inline

Set RTCC compare register value for selected channel.

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

◆ RTCC_ChannelCaptureValueGet()

uint32_t RTCC_ChannelCaptureValueGet ( int  ch)
inline

Get RTCC input capture register value for selected channel.

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

◆ RTCC_ChannelCCVGet()

uint32_t RTCC_ChannelCCVGet ( int  ch)
inline

Get RTCC capture/compare register value for 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 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_CombinedCounterGet()

uint32_t RTCC_CombinedCounterGet ( void  )
inline

Get combined CNT/PRECNT register content.

Returns
CNT/PRECNT register value.

◆ RTCC_CounterGet()

uint32_t RTCC_CounterGet ( void  )
inline

Get RTCC counter value.

Returns
Current RTCC counter value.

◆ RTCC_CounterSet()

void RTCC_CounterSet ( uint32_t  value)
inline

Set RTCC CNT counter.

Parameters
[in]valueCNT value.

◆ 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_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_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 RTCC pre-counter value.

Returns
Current RTCC pre-counter value.

◆ RTCC_PreCounterSet()

void RTCC_PreCounterSet ( uint32_t  preCntVal)
inline

Set RTCC pre-counter value.

Parameters
[in]preCntValRTCC pre-counter value to be set.

◆ RTCC_Reset()

void RTCC_Reset ( void  )

Restore RTCC to its reset state.

◆ RTCC_StatusClear()

void RTCC_StatusClear ( void  )

Clear the STATUS register.

◆ RTCC_StatusGet()

uint32_t RTCC_StatusGet ( void  )
inline

Get STATUS register value.

Returns
Current STATUS register value.

◆ RTCC_SyncWait()

void RTCC_SyncWait ( void  )
inline

Wait for the RTCC to complete all synchronization of register changes and commands.

◆ RTCC_Start()

void RTCC_Start ( void  )
inline

Start RTCC counter.

This function will send a start command to the RTCC peripheral. The RTCC peripheral will use some LF clock ticks before the command is executed. The RTCC_SyncWait() function can be used to wait for the start command to be executed.

Note
This function requires the RTCC to be enabled.

◆ RTCC_Stop()

void RTCC_Stop ( void  )
inline

Stop the RTCC counter.

This function will send a stop command to the RTCC peripheral. The RTCC peripheral will use some LF clock ticks before the command is executed. The RTCC_SyncWait() function can be used to wait for the stop command to be executed.

Note
This function requires the RTCC to be enabled.

◆ RTCC_Unlock()

void RTCC_Unlock ( void  )
inline

Unlock 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.

Macro Definition Documentation

◆ RTCC_INIT_DEFAULT

#define RTCC_INIT_DEFAULT
Value:
{ \
true, /* Start counting when init done. */ \
false, /* Disable RTCC during debug halt. */ \
false, /* Disable precounter wrap on ch. 0 CCV value. */ \
false, /* Disable counter wrap on ch. 1 CCV value. */ \
rtccCntPresc_32, /* 977 us per tick. */ \
rtccCntTickPresc, /* Counter increments according to prescaler value.*/ \
}

Default RTCC initialization structure.

◆ RTCC_CH_INIT_COMPARE_DEFAULT

#define RTCC_CH_INIT_COMPARE_DEFAULT
Value:
{ \
rtccCapComChModeCompare, /* Select output compare mode. */ \
rtccCompMatchOutActionPulse, /* Create pulse on compare match. */ \
0, /* Don't care. */ \
rtccInEdgeNone, /* Don't care. */ \
rtccCompBaseCnt, /* Use CNT for comparison. */ \
}

Default RTCC channel output compare initialization structure.

◆ RTCC_CH_INIT_CAPTURE_DEFAULT

#define RTCC_CH_INIT_CAPTURE_DEFAULT
Value:
{ \
rtccCapComChModeCapture, /* Select input capture mode. */ \
rtccCompMatchOutActionPulse, /* Don't care. */ \
0, /* Use PRS channel 0 as trigger. */ \
rtccInEdgeRising, /* Capture on rising edge. */ \
rtccCompBaseCnt, /* Don't care. */ \
}

Default RTCC channel input capture initialization structure.

◆ RTCC_CH_VALID

#define RTCC_CH_VALID (   ch)    ((unsigned)(ch) < RTCC_CC_NUM)

Number of RTCC capture/compare channels.

Validation of valid RTCC channel for assert statements.

Typedef Documentation

◆ RTCC_PRSSel_TypeDef

typedef uint8_t RTCC_PRSSel_TypeDef

PRS channel number.

This type is used when configuring input capture mode on a RTCC channel.

Enumeration Type Documentation

◆ RTCC_CntPresc_TypeDef

Counter prescaler selection.

Enumerator
rtccCntPresc_1 

Divide clock by 1.

rtccCntPresc_2 

Divide clock by 2.

rtccCntPresc_4 

Divide clock by 4.

rtccCntPresc_8 

Divide clock by 8.

rtccCntPresc_16 

Divide clock by 16.

rtccCntPresc_32 

Divide clock by 32.

rtccCntPresc_64 

Divide clock by 64.

rtccCntPresc_128 

Divide clock by 128.

rtccCntPresc_256 

Divide clock by 256.

rtccCntPresc_512 

Divide clock by 512.

rtccCntPresc_1024 

Divide clock by 1024.

rtccCntPresc_2048 

Divide clock by 2048.

rtccCntPresc_4096 

Divide clock by 4096.

rtccCntPresc_8192 

Divide clock by 8192.

rtccCntPresc_16384 

Divide clock by 16384.

rtccCntPresc_32768 

Divide clock by 32768.

◆ RTCC_PrescMode_TypeDef

Prescaler mode of the RTCC counter.

Enumerator
rtccCntTickPresc 

CNT register ticks according to the prescaler value.

rtccCntTickCCV0Match 

CNT register ticks when PRECNT matches the 15 least significant bits of ch.

0 CCV register.

◆ RTCC_CapComChMode_TypeDef

Capture/Compare channel mode.

Enumerator
rtccCapComChModeOff 

Capture/Compare channel turned off.

rtccCapComChModeCapture 

Capture mode.

rtccCapComChModeCompare 

Compare mode.

◆ RTCC_CompMatchOutAction_TypeDef

Compare match output action mode.

Enumerator
rtccCompMatchOutActionPulse 

Generate a pulse.

rtccCompMatchOutActionToggle 

Toggle output.

rtccCompMatchOutActionClear 

Clear output.

rtccCompMatchOutActionSet 

Set output.

◆ RTCC_InEdgeSel_TypeDef

Input edge select.

Enumerator
rtccInEdgeRising 

Rising edges detected.

rtccInEdgeFalling 

Falling edges detected.

rtccInEdgeBoth 

Both edges detected.

rtccInEdgeNone 

No edge detection, signal is left as is.

◆ RTCC_CompBase_TypeDef

Capture/Compare channel compare mode.

Enumerator
rtccCompBaseCnt 

CCVx is compared with the CNT register.

rtccCompBasePreCnt 

CCVx is compared with a CNT[16:0] and PRECNT[14:0].