Схожие проблемы, только часы внешние fm31xx. Если часы ушли (по причине не точности), без дублирование это не определить. Вот если сдохла батарейка или по каким то причинам прерывалось питания часов или чего то с кварцем часов, это надо отлавливать. Запускаю часы только при операции "установить время", что бы можно было отловить когда часы показывают ерунду. При работе прибора, периодически сравниваю временя измеренное RTC и таймером. Например, запускаю таймер на 60 сек, за это время показания RTC должно увеличиться тоже на 59..61 сек (дискретность часов в 1сек точнее не дает померить). Кроме проверки корректности значений в регистрах часов еще полезно проверять что считанное значение из RTC больше или равно предыдущему, плюс проверять напряжение на батарейке (у fm31xx есть битик "Low Backup Flag") Вообщем, если достоверность показания часов критична я думаю лучше ставить внешние часы: - дублирование часы + программное время - есть флаги достоверности времени, состояния батарии (например у MAX6916, MAX6917) - дополнительные функции такие как сторожевой таймер, энергонезависимая/батарейная память и т.п
Хотелось бы еще такой вопрос поднять, как правильнее считать время в случае использования внешних часов: опрашивать RTC или считать программно?
|