diff --git a/epicardium/modules/rtc.c b/epicardium/modules/rtc.c index f50355e146f626ee44bff17c880259c4c8a8a010..edfb0441ebc572aa157cc270666abda6e2cf3f64 100644 --- a/epicardium/modules/rtc.c +++ b/epicardium/modules/rtc.c @@ -2,13 +2,27 @@ #include "modules/log.h" #include "api/interrupt-sender.h" +#include "FreeRTOS.h" +#include "task.h" + #include "rtc.h" #include <stdint.h> uint32_t epic_rtc_get_seconds(void) { - return RTC_GetSecond(); + uint32_t sec, subsec; + + /* + * TODO: Find out what causes the weird behavior of this function. The + * time needed for this call seems to depend on the frequency at + * which it is called. + */ + while (RTC_GetTime(&sec, &subsec) == E_BUSY) { + vTaskDelay(pdMS_TO_TICKS(4)); + } + + return sec; } void RTC_IRQHandler(void)