Zakładam, że RTC jest albo oddzielnym układem z własnym kryształem, albo modułem zintegrowanym z twoim mikrokontrolerem, który znowu ma oddzielne źródło czasu (takie jak kryształ 32 kHz) niż główny zegar. A źródło czasu dla RTC jest dokładniejsze niż źródło dla mikrokontrolera.
Aby określić, jak często trzeba czytać RTC, musisz dowiedzieć się, jaki maksymalny błąd może mieć Twój główny zegar. Na przykład, jeśli główny kryształ jest określony na 20 ppm, to tyle samo, co 0,002%. Tak więc zegar oparty tylko na głównym źródle zegara może dryfować 0,00002 * 3600 * 24 = 1,728 sekundy dziennie.
Więc jeśli czytasz RTC tylko dwa razy dziennie i pomiędzy zwiększaniem czasu raz na sekundę za pomocą przerwania timera, nigdy nie będziesz wyłączony dłużej niż sekundę - nigdy nie będziesz wyłączony dłużej niż sekundę w porównaniu do RTC.
Jeśli, jak wcześniej zakładałem, twój RTC jest albo oddzielnym układem z własnym kryształem, albo modułem zintegrowanym z twoim mikrokontrolerem, nie oznacza to, że jest poprawny. RTC może również mieć błąd. Na przykład, jeśli używa kryształu 32 kHz z tolerancją 5 ppm (które są nieco nieco droższe niż 10 ppm), może być wyłączony o 0,43 sekundy dziennie - lub 13 sekund miesięcznie.
Aby obejść ten problem, musisz nastroić RTC, w którym zapisujesz współczynnik korekty z powrotem do rejestru. W ten sposób można praktycznie zerować błąd. Ale oczywiście musisz mieć trzecie źródło zewnętrznego zegara, które będzie służyć jako odniesienie podczas strojenia. Bardzo dokładne odniesienie w USA jest linia 60 Hz AC, który gwarantuje się dokładnie 60 * 60 * 60 * 24 (5,184,000) cykli w ciągu 24 godzin między kolejnymi midnights. Aby było to przydatne, musisz mieć czas na całe 24 godziny, ponieważ 60 Hz może dryfować między północą.
Innym doskonałym odniesieniem czasowym byłoby użycie GPS (dokładność 10 ns), gdyby ktoś miał już sprzęt GPS w swoim projekcie.
Jeśli zamiast tego czasy RTC pochodzą z zewnętrznego źródła, takiego jak czas sieci komórkowej (połączenie AT + CCLK?) Lub z sieciowego serwera czasu korzystającego z NTP, możesz użyć wartości RTC w takiej postaci, w jakiej jest, ponieważ nie będzie można niczego dostroić .