Cualquier aficionado a la electrónica o la informática sabe que los PC que utilizamos a diario están equipados con un reloj a tiempo real, y que gracias a la pila que integran las placas base ese reloj está siempre en hora incluso aunque el PC esté desconectado de la corriente. Pero, ¿alguna vez te has preguntado cómo funciona y, especialmente, para qué sirve que el PC tenga este reloj interno?
El reloj a tiempo real interno del PC tiene una utilidad que va muchísimo más allá de mostrarte la hora en la barra de tareas, y es que como te vamos a explicar a continuación de manera literal el PC no podría funcionar sin éste. ¿Por qué? En seguida te lo explicamos en profundidad, pero como adelanto te diremos que sin este reloj el procesador del PC no sabría cuándo tiene que hacer los cálculos.
¿Qué es un reloj a tiempo real o RTC y para qué sirve?
Un reloj a tiempo real, también conocido como RTC por sus siglas en inglés «real time clock«, es un reloj de computadora, generalmente en forma de circuito integrado (en las placas base no es sino uno de sus muchos chips) que se construye con el objetivo único de mantener la hora. Naturalmente, cuenta horas, minutos, segundos, meses, días e incluso años.
Los RTC se pueden encontrar tanto en ordenadores (de sobremesa y portátiles) como en sistemas integrados, servidores y cualquier componente electrónico que tenga un procesador, ya que estos elementos requieren un cronómetro preciso para su funcionamiento tal y como te vamos a explicar en breve. Ser capaz de seguir funcionando incluso cuando el PC está apagado o si batería es algo fundamental, motivo por el que en general suelen llevar una pila en formato CR1220 o CR2032 que garantiza un funcionamiento independiente durante años.
El reloj en tiempo real de tu PC debe ser capaz de mantener la hora con precisión incluso cuando el dispositivo está apagado, ya que a menudo se utiliza como un disparador para encender el dispositivo o para activar eventos como los relojes de alarma. Los circuitos integrados de los sistemas más antiguos utilizan baterías de litio, mientras que algunos dispositivos modernos hacen uso de baterías auxiliares (como la pila que hemos mencionado) o incluso supercondensadores para ello. Los circuitos integrados de RTC que usan supercondensadores son recargables y se pueden soldar si se quiere, pero como hemos mencionado a día de hoy la mayoría utiliza una pila que, cuando se retira, restablece el RTC a su punto de partida (y hay que volver a poner en hora el sistema).
Los circuitos integrados RTC regulan el tiempo con el uso de un oscilador de cristal, así que no dependen de señales de reloj como la mayoría de los relojes de hardware (como la CPU, que depende de este reloj en tiempo real). Además de ser responsables de la función de temporización del sistema y su reloj, el reloj en tiempo real garantiza que todos los procesos del sistema estén sincronizados adecuadamente, algo primordial para el funcionamiento de la CPU. Aunque algunos pueden argumentar que este es un trabajo del reloj interno del sistema, en realidad éste depende del RTC.
Los beneficios de utilizar RTC en un PC incluyen:
- Los circuitos integrados RTC han demostrado ser más necesarios que otros métodos, como programar el temporizador del controlador.
- Libera al sistema principal de tareas críticas de cálculo de tiempos.
- Tiene un bajo consumo de energía y una estabilidad de frecuencia prácticamente perfecta, incluso con la batería baja.
¿Cómo funciona un RTC en el PC?
La información del reloj en tiempo real puede ser leída por un microprocesador, generalmente a través de una interfaz en serie para facilitar que el software o firmware realice funciones que dependen del tiempo. El procesador sincroniza el tiempo del sistema con el RTC en una referencia de tiempo absoluta y que, sin llegar a ser como un reloj atómico, prácticamente no tiene desviación alguna, lo que permite que la CPU pueda realizar cálculos exactos. En la imagen de arriba podéis ver el diagrama de funcionamiento de un módulo RTC simple.
Por lo general, el RTC se conecta a la CPU mediante un bus serie SPI o I2C, y pueden contener una serie de otras funciones como memoria de respaldo, un temporizador de vigilancia para supervisar el funcionamiento del procesador, o temporizadores de cuenta regresiva para generar eventos en tiempo real. Algunos RTC incluyen salidas de interrupción de segundos o minutos y son lo suficientemente inteligentes y autónomos como para dar cuenta de años bisiestos.
Un reloj en tiempo real mantiene su la hora contando los ciclos de un oscilador, generalmente de cristal de cuarzo y que funciona a 32,768 KHz. Esto permite que un RTC detecte la ondulación de 50/60 Hz de una fuente de alimentación, o que detecte y acumule transiciones provenientes de un tic de una unidad GPS. Un RTC que hace esto funciona como un bucle de bloqueo de fase (PLL), cambiando su referencia de reloj interno para «bloquearlo» en la señal externa. Si el RTC pierde su referencia externa, puede detectar este evento de nuevo (ya que el PLL sale del bloqueo) y funcionar de manera autónoma con su oscilador interno.
Un RTC que se ejecuta desde su propia referencia interna, integrará un margen de error relacionado con la precisión absoluta de la referencia del cristal y se verá afectado por una serie de condiciones, incluyendo la temperatura. Los cristales están diseñados para operar dentro de un rango de temperatura de -10º C a 60º C, y su precisión se reduce si la temperatura se desvía de este margen.
Algunos RTC tienen integrada una compensación de temperatura que puede extender y aumentar la precisión del oscilador de cuarzo. Los cristales también envejecen, y esto cambia su naturaleza física por lo que con el paso del tiempo pierden precisión. Los cristales típicos de bajo coste que se utilizan en el hardware de PC tienen una tolerancia de frecuencia de +/- 20 ppm (partes por millón). Esto significa que un cristal con este margen de error podría desplazarse hasta 72 ms por hora, o 1,7 segundos por día, así que ocasionalmente requerirán calibración.
El procesador conectado al RTC obtiene un tiempo de sistema actualizado y escribe este nuevo valor constantemente en el RTC para evitar estas desviaciones, es decir, que la CPU está recalibrando constantemente el RTC para mantenerlo siempre exacto.