cpu: efm32: fix RTC for Series 0 MCUs.

Without fix:
  Setting alarm to   12627-11-30 15:00:05
   Alarm is set to   12722-01-25 07:13:03

With fix:
  Setting alarm to   2011-12-13 14:15:17
   Alarm is set to   2011-12-13 14:15:17
This commit is contained in:
Bas Stottelaar 2018-02-15 21:12:40 +01:00
parent 95254990d0
commit 2af38d749c

View File

@ -34,7 +34,7 @@
typedef struct {
rtc_alarm_cb_t alarm_cb; /**< callback called from RTC interrupt */
void *alarm_arg; /**< argument passed to the callback */
uint32_t alarm; /**< scheduled alarm (may be defered) */
time_t alarm; /**< scheduled alarm (may be deferred) */
uint8_t overflows; /**< number of overflows */
} rtc_state_t;
@ -95,7 +95,7 @@ void rtc_init(void)
int rtc_set_time(struct tm *time)
{
uint32_t timestamp = mktime(time);
time_t timestamp = mktime(time);
rtc_state.overflows = (timestamp >> RTC_SHIFT_VALUE);
RTC->CNT = timestamp & RTC_MAX_VALUE;
@ -105,7 +105,7 @@ int rtc_set_time(struct tm *time)
int rtc_get_time(struct tm *time)
{
uint32_t timestamp = RTC_CounterGet();
time_t timestamp = RTC_CounterGet();
timestamp = timestamp + (rtc_state.overflows << RTC_SHIFT_VALUE);