clase RTC – reloj de tiempo real

La clase RTC controla el periférico de reloj de tiempo real integrado en el MCU, que mantiene la hora del reloj de pared a través de los reinicios.

En las OpenMV Cam STM32, machine.RTC y pyb.RTC se refieren al mismo objeto subyacente.

Ejemplo de uso:

import machine

rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())

Constructores

class machine.RTC(id: int = 0)

Devuelve el singleton RTC. id se acepta por compatibilidad entre puertos, pero solo 0 es válido en los puertos compatibles con OpenMV (cada cámara tiene un RTC).

Los métodos siguientes están agrupados según qué puertos de OpenMV los exponen.

Métodos disponibles en todos los puertos de OpenMV

datetime(datetimetuple: tuple | None = None, /) tuple | None

Obtiene o establece la fecha y hora actuales.

Sin argumento, devuelve el valor actual como una tupla de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

Con un único argumento de tupla de 8 elementos, establece el RTC a ese valor.

weekday es 1 = Lunes a 7 = Domingo en STM32, y 0 = Lunes a 6 = Domingo en mimxrt. subseconds es la parte fraccionaria del segundo en unidades de 1/256 de segundo en STM32; en mimxrt y alif siempre es 0.

solo STM32 + mimxrt

init(datetime: tuple) None

Inicializa el RTC.

En el puerto mimxrt (OpenMV Cam RT1062), datetime es obligatorio y usa la tupla de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

En las OpenMV cams STM32, init() no toma ningún argumento: (re)inicia el periférico RTC, dejando la fecha / hora actual sin cambios.

calibration(value: int | None = None, /) int | None

Obtiene o establece el desplazamiento de calibración del RTC (usado para compensar el error de frecuencia del cristal).

El rango aceptado y las unidades de value son específicos del hardware – el valor se escribe directamente en el registro de ajuste del RTC del MCU. Consulte el manual de referencia correspondiente de STM32 / i.MX RT para conocer la codificación exacta.

solo STM32

info() int

Devuelve el estado de arranque empaquetado del RTC como un entero de 32 bits.

Los 16 bits bajos dan el número de milisegundos que el RTC tardó en arrancar en el arranque más reciente. El bit 0x10000 se establece cuando el oscilador LSE (externo de baja velocidad) falló y el RTC recurrió al LSI (RC interno). El bit 0x20000 se establece cuando el RTC se inicializó de nuevo en el arranque (en lugar de continuar desde el encendido anterior).

wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None

Programa una interrupción de despertar periódica.

timeout_ms es el período en milisegundos. El RTC se dispara cada timeout_ms y puede despertar el MCU desde machine.lightsleep() / machine.deepsleep(). Pase None para deshabilitar el temporizador de despertar.

callback se invoca desde la IRQ de despertar; pase None para no instalar ningún callback (el despertar seguirá disparándose y despertará el MCU).

solo mimxrt + alif

alarm(id: int, time: int | tuple, *, repeat: bool = False) None

Arma la alarma del RTC. id selecciona el canal de alarma (use ALARM0). time es un número entero de milisegundos en el futuro, o una tupla de fecha y hora. Pase repeat=True para rearmarla automáticamente después de cada disparo (solo válido cuando time es un recuento de milisegundos).

En alif solo se admite la forma de recuento de milisegundos.

solo mimxrt

alarm_left(alarm_id: int = 0, /) int

Devuelve el número de milisegundos restantes antes de que se dispare la alarma identificada por alarm_id.

alarm_cancel(alarm_id: int = 0, /) None

Cancela una alarma previamente armada.

cancel(alarm_id: int = 0, /) None

Alias obsoleto de alarm_cancel(), conservado por compatibilidad con versiones anteriores. Programado para su eliminación en MicroPython 2.0.

irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None

Registra un callback para la alarma del RTC.

trigger debe ser ALARM0 – la única fuente de IRQ admitida. handler se invoca con la instancia RTC cuando se dispara la alarma. hard=True registra un manejador de interrupción de hardware (sin asignación de memoria en el callback). wake se acepta por compatibilidad entre puertos, pero no tiene efecto.

Constantes

ALARM0: int

Identificador del único canal de alarma del RTC. Pase a alarm(), alarm_left(), alarm_cancel() y al argumento trigger de irq(). Solo puerto mimxrt.