This is a basic driver for the Real Time Counter (RTC).
The RTC is used to generate interrupts periodically for both the CPU frequency and the interrupt self-diagnostic routines. Depending on the specific device, an RTC or an RTC32 will be used. In both cases the RTC is clocked independently from the CPU with a 32.768 kHz oscillator scaled down to 1024 Hz.
The interrupt period can be configured in the driver through CLASSB_RTC_INT_PERIOD. Further, the RTC module is setup with classb_rtc_setup(). Note that interrupts should be enabled in the main application with sei().
Note that it is possible to use a different RTC driver. The only requirement is that it defines the constants for the interrupt period CLASSB_RTC_INT_PERIOD and the RTC frequency CLASSB_RTC_FREQ.
Functions | |
| ISR (RTC_TEST_COMP_vect) | |
| This is the RTC compare interrupt. | |
RTC Settings and Class B Interface. | |
|
These two constants give information about the RTC to the Class B tests. Therefore, they need to be defined with correct values. As long as these are defined, any RTC driver can be used. | |
| #define | CLASSB_RTC_INT_PERIOD 2048UL |
| RTC interrupt period. | |
| #define | CLASSB_RTC_FREQ 1024UL |
| RTC frequency. | |
Test declarations. | |
Set which Class B tests are included in the RTC interrupt. These symbols can be defined at the compiler level or in this file. | |
| #define | CLASSB_FREQ_TEST |
| Test for the CPU frequency. | |
| #define | CLASSB_INT_MON |
| Interrupt monitor. | |
Functions | |
| void | vbat_init (void) |
| bool | rtc_is_busy (void) |
| void | classb_rtc_setup () |
| This function sets up the RTC to be used in Class B tests. | |
| #define CLASSB_RTC_INT_PERIOD 2048UL |
RTC interrupt period.
This constant is used to configure the period of the RTC compare interrupt. In addition, it is used in the Class B tests. An example value is 2048UL.
Definition at line 95 of file classb_rtc_common.h.
Referenced by classb_rtc_setup().
| #define CLASSB_RTC_FREQ 1024UL |
RTC frequency.
This gives information to the Class B tests. However, the RTC frequency is hard coded in this driver to 1024 Hz. More details in classb_rtc_setup().
Definition at line 103 of file classb_rtc_common.h.
| void classb_rtc_setup | ( | ) |
This function sets up the RTC to be used in Class B tests.
The RTC oscillator is enabled, compare interrupts are configured and RTC is enabled.
Definition at line 100 of file classb_rtc_common.c.
References CLASSB_RTC_INT_PERIOD.
| ISR | ( | RTC_TEST_COMP_vect | ) |
This is the RTC compare interrupt.
Actions required in Class B tests are implemented as callbacks. Note that this requires a number of symbols to be defined, either in a header file or at the compiler level.
It is possible to add user-defined code to the RTC interrupt through CLASSB_ACTIONS_RTC().
Definition at line 133 of file classb_rtc_common.c.
References CLASSB_ACTIONS_RTC, classb_freq_callback(), and classb_intmon_callback().
Here is the call graph for this function: