rtt_rtc: fix rtc_get_time_ms()

This commit is contained in:
Benjamin Valentin 2021-07-26 16:41:46 +02:00 committed by Benjamin Valentin
parent a53e8e3138
commit 6178325b5b

View File

@ -138,17 +138,18 @@ int rtc_set_time(struct tm *time)
int rtc_get_time_ms(struct tm *time, uint16_t *ms) int rtc_get_time_ms(struct tm *time, uint16_t *ms)
{ {
uint32_t prev = rtc_now; uint32_t tmp, prev = rtc_now;
/* repeat calculation if an alarm triggered in between */ /* repeat calculation if an alarm triggered in between */
do { do {
uint32_t now = rtt_get_counter(); uint32_t now = rtt_get_counter();
uint32_t tmp = _rtc_now(now); tmp = _rtc_now(now);
rtc_localtime(tmp, time); *ms = (SUBSECONDS(now - last_alarm) * MS_PER_SEC) / RTT_SECOND;
*ms = (SUBSECONDS(now) * MS_PER_SEC) / RTT_SECOND;
} while (prev != rtc_now); } while (prev != rtc_now);
rtc_localtime(tmp, time);
return 0; return 0;
} }