В системе нет RTC.
Я подумал сделать так. В начале логирования я ввожу стартовое реальное время и включаю счетчик миллисекунд.
Во время логирования, помимо данных, я сохраняю временную метку - пройденные миллисекунды.
И в конце логирования я могу вычислить реальное время по пройденным милисекундам.
uint32_t MillisecsToSeconds (uint32_t millisecs)
{
return ( millisecs / 1000);
}
uint32_t MillisecsToMinutes (uint32_t millisecs)
{
return ( millisecs / 60000);
}
uint32_t MillisecsToHours (uint32_t millisecs)
{
return ( millisecs / 3600000);
}
uint32_t MillisecsToDays (uint32_t millisecs)
{
return ( millisecs / 86400000);
}
void ElapsedDate(sRTC start_date, uint32_t millisecs, sRTC *elapsed_date)
{
elapsed_date->rtcSec = start_date.rtcSec + MillisecsToSeconds(millisecs)
elapsed_date->rtcMin = start_date.rtcMin + MillisecsToMinutes(millisecs);
elapsed_date->rtcHour = start_date.rtcHour + MillisecsToHours(millisecs);
elapsed_date->rtcDay = start_date.rtcDay + MillisecsToDays(millisecs);
}
Но потом я заметил что функция не учитывает переполнение секунд, минут, дней. И вот тут я туплю - как оптимальней это сделать?