Voy a suponer que el RTC es un chip separado con su propio cristal o un módulo integrado con su microcontrolador que, de nuevo, tiene una fuente de tiempo separada (como un cristal de 32 kHz) que el reloj principal. Y la fuente de tiempo para el RTC es más precisa que la del microcontrolador.
Para determinar la frecuencia con la que necesita leer el RTC, debe averiguar cuál es el error máximo que puede tener su reloj principal. Por ejemplo, si el cristal principal se especifica a 20 ppm, es igual al 0.002%. Por lo tanto, un reloj basado únicamente en la fuente del reloj principal podría derivar 0.00002 * 3600 * 24 = 1.728 segundos por día.
Por lo tanto, si lee el RTC solo dos veces al día, e incrementa el tiempo una vez por segundo con una interrupción del temporizador, nunca estaría apagado más de un segundo, nunca más de un segundo en comparación con el RTC es decir.
Si, como asumí anteriormente, su RTC es un chip separado con su propio cristal o un módulo integrado con su microcontrolador, eso no significa que sea correcto. Un RTC también puede tener un error. Por ejemplo, si utiliza un cristal de 32 kHz con una tolerancia de 5 ppm (que son un poco más caros que los de 10 ppm), podría apagarse en 0,43 segundos por día, o 13 segundos por mes.
Para solucionar esto, deberá ajustar el RTC, donde escribirá un factor de corrección en un registro. Si lo hace, le permitirá obtener el error prácticamente a cero. Pero, por supuesto, tendrá que tener una tercera fuente de reloj externa para usar como referencia al realizar la sintonización. Una referencia extremadamente precisa en los EE. UU. Es la línea de CA de 60 Hz, que está garantizado para ser < em> exactamente 60 * 60 * 60 * 24 (5,184,000) ciclos en un período de 24 horas entre media noche sucesivas. Para que esto sea útil, debes calcular el tiempo durante las 24 horas completas, ya que los 60 Hz pueden desviarse entre medianoche.
Otra referencia de tiempo excelente sería el uso de GPS (10 ns de precisión), si uno ya tuviera hardware de GPS en su proyecto.
Si, en cambio, sus tiempos RTC provienen de una fuente externa, como la hora de la red celular (llamada AT + CCLK?), o un servidor de tiempo de red que usa NTP, entonces puede usar el valor RTC tal como está, ya que no habrá nada para "sintonizar".