# Reloj en tiempo real

Un reloj en tiempo real (en inglés, real-time clock, RTC) es un reloj de un ordenador, incluido en un circuito integrado, que mantiene la hora actual. Aunque el término normalmente se refiere a dispositivos en ordenadores personales, servidores y sistemas embebidos, los RTC están presentes en la mayoría de los aparatos electrónicos que necesitan guardar el tiempo exacto.

## Terminología

El término se usa para evitar la confusión con los relojes hardware ordinarios que sólo son señales que dirigen circuitos digitales, y no cuentan el tiempo en unidades humanas. Los RTC no deben ser confundidos con la computación en tiempo real (en inglés, real-time computing), que comparte su acrónimo de tres letras, pero que no se refiere directamente a la hora del día.

## Propósito

Aunque controlar el tiempo puede hacerse sin un RTC, usar uno tiene beneficios:
* Bajo consumo de energía (importante cuando está funcionando con una pila)
* Libera de trabajo al sistema principal para que pueda dedicarse a tareas más críticas.
* Algunas veces más preciso que otros métodos
Un receptor GPS puede acortar su tiempo de inicio comparando la hora actual, de acuerdo con su RTC, con la hora en la que tuvo una señal válida por última vez. Si han pasado menos de unas pocas horas, las efemérides anteriores aún se pueden utilizar.

## Fuente de alimentación

Los RTC a menudo tienen una fuente de alimentación alternativa, por lo que pueden seguir midiendo el tiempo mientras la fuente de alimentación principal está apagada o no está disponible. Esta fuente de alimentación alternativa es normalmente una batería de litio en los sistemas antiguos, pero algunos sistemas nuevos usan un supercapacitor, porque son recargables y pueden ser soldados. La fuente de alimentación alternativa también puede suministrar energía a una RAM-CMOS dentro del mismo RTC, que generalmente almacena la configuración de la BIOS de la placa base.

## Medición del tiempo

La mayoría de los RTC usan un oscilador de cristal, pero algunos usan la frecuencia de la fuente de alimentación. En muchos casos la frecuencia del oscilador es 32.768 kHz. Ésta es la misma frecuencia usada en los relojes de cuarzo, y por las mismas razones, que la frecuencia es exactamente 2$^{15}$ ciclos por segundo, que es un ratio muy práctico para usar con circuitos de contadores binarios simples. La baja frecuencia ahorra energía, mientras permanece por encima del rango de audición humana. El diapasón de cuarzo de estos cristales no cambia mucho de tamaño debido a la temperatura, por lo que la temperatura no cambia mucho su frecuencia
Algunos RTC utilizan un resonador micromecánico en el chip de silicio del RTC. Esto reduce el tamaño y el costo de un RTC al reducir el número de piezas. Los resonadores micromecánicos son mucho más sensibles a la temperatura que los resonadores de cuarzo. Entonces, estos compensan los cambios de temperatura usando un termómetro electrónico y lógica electrónica.
Las especificaciones típicas de precisión de cristal RTC son de ±100 a ±20 partes por millón (8,6 a 1,7 segundos por día), pero los circuitos integrados de RTC con compensación de temperatura están disponibles con una precisión de menos de 5 partes por millón.
En términos prácticos, esto es lo suficientemente bueno para realizar la navegación celeste, la tarea clásica de un Cronómetro marino. En 2011, los relojes atómicos a escala de chip estuvieron disponibles. Aunque son mucho más caras y consumen mucha energía (120 mW frente a <1 μW), mantienen el tiempo dentro de las 50 partes por billón (5 × 10 elevado a −11 ).

## Ejemplos

Muchos fabricantes de circuitos integrados fabrican RTC. Por ejemplo, Epson, Intersil, IDT, Maxim, Philips, NXP Semiconductors, Texas Instruments, STMicroelectronics y Ricoh. Un RTC común que se utiliza en las placas computadorasplaca única es el Maxim Integrated DS1307.
El RTC fue introducido en los PC compatibles por IBM PC/AT en 1984, cuando usó un RTC Motorola MC146818. Posteriormente Dallas Semiconductor fabricó RTC compatibles que fueron muy usados en los compatibles IBM PC viejos, y que se pueden encontrar fácilmente en sus placas base por su distintiva batería negra y por su logo serigrafiado. En los sistemas nuevos el RTC está integrado en el puente sur del chipset.
Algunos microcontroladores tienen reloj en tiempo real incorporado, generalmente sólo una más de otras características y periféricos.

### RTC basados en radio

Algunas computadoras modernas reciben información de reloj por radio digital y la utilizan para promover estándares de tiempo. Hay dos métodos comunes: La mayoría de los protocolos de teléfonos móviles (por ejemplo, LTE) proporcionan directamente la hora local actual. Si hay una radio por Internet disponible, una computadora puede usar el Network Time Protocol o protocolo de tiempo de red. Los ordenadores utilizados como servidores de hora local utilizan ocasionalmente GPS o transmisiones de radio de frecuencia ultrabaja emitidas por una organización nacional de normalización (es decir, un reloj controlado por radio).

### RTC basados en software

El siguiente sistema es bien conocido por los programadores de sistemas embebidos, quienes a veces deben construir RTC en sistemas que carecen de ellos. La mayoría de las computadoras tienen uno o más temporizadores de hardware que utilizan señales de temporización de cristales de cuarzo o resonadores cerámicos. Estos tienen una sincronización absoluta inexacta (más de 100 partes por millón) que aún es muy repetible (a menudo menos de 1 ppm). El software puede hacer los cálculos para convertirlos en RTC precisos. El temporizador de hardware puede producir una interrupción periódica, por ejemplo, 50 Hz, para imitar un RTC histórico (ver más abajo). Sin embargo, usa matemáticas para ajustar la cadena de tiempo para mayor precisión:
tiempo = tiempo + tasa.
Cuando la variable "tiempo" excede una constante, generalmente una potencia de dos, el tiempo nominal calculado del reloj (digamos, para 1/50 de segundo) se resta de "tiempo", y el software de la cadena de tiempo del reloj se invoca para contar fracciones de segundos, segundos, etc. Con variables de 32 bits para tiempo y velocidad, la resolución matemática de "velocidad" puede exceder una parte por mil millones. El reloj sigue siendo preciso porque ocasionalmente se saltará una fracción de segundo o se incrementará en dos fracciones. El pequeño salto ("jitter") es imperceptible para casi todos los usos reales de un RTC.
La complejidad de este sistema es determinar el valor instantáneo corregido para la variable "tasa". El sistema más simple rastrea los segundos de RTC y los segundos de referencia entre dos configuraciones del reloj, y divide los segundos de referencia entre los segundos de RTC para encontrar la "tasa". El tiempo de Internet a menudo tiene una precisión de menos de 20 milisegundos, por lo que 8000 segundos o más (2.2 horas o más) de separación entre configuraciones generalmente pueden dividir los cuarenta milisegundos (o menos) de error en menos de 5 partes por millón para obtener la precisión de un cronómetro. La principal complejidad de este sistema es convertir fechas y horas en segundos, pero los métodos son bien conocidos.
Si el RTC funciona cuando una unidad está apagada, normalmente el RTC funcionará a dos velocidades, una cuando la unidad está encendida y otra cuando está apagada. Esto se debe a que la temperatura y el voltaje de la fuente de alimentación en cada estado son consistentes. Para ajustar estos estados, el software calcula dos tasas. Primero, el software registra el tiempo RTC, el tiempo de referencia, los segundos de encendido y los segundos de apagado para los dos intervalos entre las últimas tres horas en las que se configura el reloj. Con esto, puede medir la precisión de los dos intervalos, y cada intervalo tiene una distribución diferente de segundos de encendido y apagado. La matemática de tasas resuelve dos ecuaciones lineales para calcular dos tasas, una para encendido y otra para apagado.
Otro enfoque mide la temperatura del cristal con un termómetro electrónico (por ejemplo, un termistor y un convertidor analógico a digital) y utiliza un polinomio para calcular la "tasa" aproximadamente una vez por minuto. Los cristales de cuarzo más comunes en un sistema son los cristales de corte SC, y sus velocidades sobre la temperatura se pueden caracterizar con un polinomio de tercer grado. Entonces, para estos, la tasa se mide a cuatro temperaturas. Los cristales comunes de estilo diapasón que se utilizan en los relojes y muchos componentes del RTC tienen ecuaciones de temperatura parabólicas (de segundo grado) y se pueden caracterizar con solo tres medidas. Luego una regresión lineal puede encontrar la ecuación de temperatura. Algo como este enfoque podría usarse en circuitos integrados de RTC comerciales, pero los métodos reales de fabricación eficiente de alta velocidad son propietarios.

### RTC históricos

Algunos diseños de computadoras más antiguos, como el Data General Nova y el PDP-8, usaban un reloj en tiempo real que se destacaba por su alta precisión, simplicidad, flexibilidad y bajo costo. La fuente de alimentación de la computadora produce un pulso a voltajes lógicos para cada media onda o cada cruce por cero de la red de corriente alterna. Un cable lleva el pulso a una interrupción. El software del controlador de interrupciones cuenta ciclos, segundos, etc. De esta manera, puede proporcionar un reloj y un calendario completos.
El reloj también suele constituir la base de las cadenas de tiempo del software de las computadoras; por ejemplo, normalmente era el temporizador que se utilizaba para cambiar de tarea en un sistema operativo. Los temporizadores de conteo utilizados en las computadoras modernas brindan características similares con menor precisión y pueden rastrear sus requisitos hasta este tipo de reloj. (Por ejemplo, en el PDP-8, el reloj basado en la red, modelo DK8EA, fue lo primero, y luego fue seguido por un reloj basado en cristal, DK8EC).
Se debe configurar un reloj basado en software cada vez que se enciende la computadora. Originalmente esto fue hecho por operadores de computadoras. Cuando Internet se convirtió en algo común, se utilizaron protocolos de tiempo de red para configurar automáticamente relojes de este tipo.
En Europa, América del Norte y algunas otras redes, este RTC funciona porque la frecuencia de la red de CA se ajusta para tener una precisión de frecuencia a largo plazo tan buena como los relojes estándar nacionales. Es decir, en esas rejillas este RTC es superior a los relojes de cuarzo y menos costoso.
Este diseño de RTC no es práctico en computadoras portátiles o redes (por ejemplo, en el sur de Asia) que no regulan la frecuencia de la red de CA. También podría considerarse inconveniente sin acceso a Internet para configurar el reloj.

## CPU sin reloj

Algunas placas base se fabrican sin relojes en tiempo real. El reloj de tiempo real se omite por el deseo de ahorrar dinero (como en la arquitectura del sistema Raspberry Pi ) o porque los relojes en tiempo real pueden no ser necesarios en absoluto (como en la arquitectura del sistema Arduino).