RTCEMLIB

Detailed Description

Real Time Counter (RTC) Peripheral API.

This module contains functions to control the RTC peripheral of Silicon Labs 32-bit MCUs and SoCs. The RTC ensures timekeeping in low energy modes.

Data Structures

struct  RTC_Init_TypeDef
 

Macros

#define RTC_INIT_DEFAULT
 

Functions

uint32_t RTC_CompareGet (unsigned int comp)
 Get RTC compare register value.
 
void RTC_CompareSet (unsigned int comp, uint32_t value)
 Set RTC compare register value.
 
__STATIC_INLINE uint32_t RTC_CounterGet (void)
 Get RTC counter value.
 
void RTC_CounterReset (void)
 Restart RTC counter from zero.
 
void RTC_Enable (bool enable)
 Enable/disable RTC.
 
void RTC_FreezeEnable (bool enable)
 RTC register synchronization freeze control.
 
void RTC_Init (const RTC_Init_TypeDef *init)
 Initialize RTC.
 
__STATIC_INLINE void RTC_IntClear (uint32_t flags)
 Clear one or more pending RTC interrupts.
 
__STATIC_INLINE void RTC_IntDisable (uint32_t flags)
 Disable one or more RTC interrupts.
 
__STATIC_INLINE void RTC_IntEnable (uint32_t flags)
 Enable one or more RTC interrupts.
 
__STATIC_INLINE uint32_t RTC_IntGet (void)
 Get pending RTC interrupt flags.
 
__STATIC_INLINE uint32_t RTC_IntGetEnabled (void)
 Get enabled and pending RTC interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.
 
__STATIC_INLINE void RTC_IntSet (uint32_t flags)
 Set one or more pending RTC interrupts from SW.
 
void RTC_Reset (void)
 Restore RTC to reset state.
 

Macro Definition Documentation

#define RTC_INIT_DEFAULT
Value:
{ \
true, /* Start counting when init done */ \
false, /* Disable updating during debug halt */ \
true /* Restart counting from 0 when reaching COMP0 */ \
}

Suggested default config for RTC init structure.

Definition at line 67 of file em_rtc.h.

Referenced by UDELAY_Calibrate().

Function Documentation

uint32_t RTC_CompareGet ( unsigned int  comp)

Get RTC compare register value.

Parameters
[in]compCompare register to get, either 0 or 1
Returns
Compare register value, 0 if invalid register selected.

Definition at line 117 of file em_rtc.c.

References RTC.

void RTC_CompareSet ( unsigned int  comp,
uint32_t  value 
)

Set RTC compare register value.

Note
The setting of a compare register requires synchronization into the low frequency domain. If the same register is modified before a previous update has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the regSync() internal function call.
Parameters
[in]compCompare register to set, either 0 or 1
[in]valueInitialization value (<= 0x00ffffff)

Definition at line 162 of file em_rtc.c.

References _RTC_COMP0_COMP0_MASK, _RTC_COMP0_COMP0_SHIFT, RTC, RTC_SYNCBUSY_COMP0, and RTC_SYNCBUSY_COMP1.

__STATIC_INLINE uint32_t RTC_CounterGet ( void  )

Get RTC counter value.

Returns
Current RTC counter value.

Definition at line 88 of file em_rtc.h.

References RTC.

void RTC_Enable ( bool  enable)

Enable/disable RTC.

Note
The enabling/disabling of the RTC modifies the RTC CTRL register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the regSync() internal function call.
Parameters
[in]enabletrue to enable counting, false to disable.

Definition at line 225 of file em_rtc.c.

References _RTC_CTRL_EN_SHIFT, BUS_RegBitWrite(), RTC, and RTC_SYNCBUSY_CTRL.

Referenced by RTC_CounterReset(), RTCDRV_DeInit(), and UDELAY_Calibrate().

void RTC_FreezeEnable ( bool  enable)

RTC register synchronization freeze control.

Some RTC registers require synchronization into the low frequency (LF) domain. The freeze feature allows for several such registers to be modified before passing them to the LF domain simultaneously (which takes place when the freeze mode is disabled).

Note
When enabling freeze mode, this function will wait for all current ongoing RTC synchronization to LF domain to complete (Normally synchronization will not be in progress.) However for this reason, when using freeze mode, modifications of registers requiring LF synchronization should be done within one freeze enable/disable block to avoid unecessary stalling. This only applies to the Gecko Family, see the reference manual chapter about Access to Low Energy Peripherals (Asynchronos Registers) for details.
Parameters
[in]enable
  • true - enable freeze, modified registers are not propagated to the LF domain
  • false - disables freeze, modified registers are propagated to LF domain

Definition at line 269 of file em_rtc.c.

References RTC, and RTC_FREEZE_REGFREEZE.

Referenced by UDELAY_Calibrate().

void RTC_Init ( const RTC_Init_TypeDef init)

Initialize RTC.

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

Note
The initialization of the RTC modifies the RTC CTRL register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the regSync() internal function call.
Parameters
[in]initPointer to RTC initialization structure.

Definition at line 310 of file em_rtc.c.

References RTC_Init_TypeDef::comp0Top, RTC_Init_TypeDef::debugRun, RTC_Init_TypeDef::enable, RTC, RTC_CTRL_COMP0TOP, RTC_CTRL_DEBUGRUN, RTC_CTRL_EN, and RTC_SYNCBUSY_CTRL.

Referenced by RTCDRV_Init(), and UDELAY_Calibrate().

__STATIC_INLINE void RTC_IntClear ( uint32_t  flags)

Clear one or more pending RTC interrupts.

Parameters
[in]flagsRTC interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources for the RTC module (RTC_IFS_nnn).

Definition at line 123 of file em_rtc.h.

References RTC.

__STATIC_INLINE void RTC_IntDisable ( uint32_t  flags)

Disable one or more RTC interrupts.

Parameters
[in]flagsRTC interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt sources for the RTC module (RTC_IFS_nnn).

Definition at line 137 of file em_rtc.h.

References RTC.

__STATIC_INLINE void RTC_IntEnable ( uint32_t  flags)

Enable one or more RTC interrupts.

Note
Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. Consider using RTC_IntClear() prior to enabling if such a pending interrupt should be ignored.
Parameters
[in]flagsRTC interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the RTC module (RTC_IFS_nnn).

Definition at line 156 of file em_rtc.h.

References RTC.

__STATIC_INLINE uint32_t RTC_IntGet ( void  )

Get pending RTC interrupt flags.

Note
The event bits are not cleared by the use of this function.
Returns
Pending RTC interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the RTC module (RTC_IFS_nnn).

Definition at line 172 of file em_rtc.h.

References RTC.

__STATIC_INLINE uint32_t RTC_IntGetEnabled ( void  )

Get enabled and pending RTC interrupt flags. Useful for handling more interrupt sources in the same interrupt handler.

Note
Interrupt flags are not cleared by the use of this function.
Returns
Pending and enabled RTC interrupt sources The return value is the bitwise AND of
  • the enabled interrupt sources in RTC_IEN and
  • the pending interrupt flags RTC_IF

Definition at line 191 of file em_rtc.h.

References RTC.

__STATIC_INLINE void RTC_IntSet ( uint32_t  flags)

Set one or more pending RTC interrupts from SW.

Parameters
[in]flagsRTC interrupt sources to set to pending. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the RTC module (RTC_IFS_nnn).

Definition at line 208 of file em_rtc.h.

References RTC.