classe RTC – relógio de tempo real

A classe RTC controla o periférico de relógio de tempo real on-chip do MCU, que mantém a hora de relógio de parede entre reinicializações.

Nas OpenMV Cams STM32, machine.RTC e pyb.RTC referem-se ao mesmo objeto subjacente.

Exemplo de uso:

import machine

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

Construtores

class machine.RTC(id: int = 0)

Retorna o singleton RTC. id é aceito para compatibilidade entre portas, mas apenas 0 é válido nas portas suportadas pela OpenMV (cada câmera tem um RTC).

Os métodos abaixo estão agrupados de acordo com quais portas OpenMV os expõem.

Métodos disponíveis em todas as portas OpenMV

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

Obtém ou define a data e a hora atuais.

Sem argumento, retorna o valor atual como uma tupla de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

Com um único argumento de tupla de 8 elementos, define o RTC para esse valor.

weekday vai de 1 = segunda-feira até 7 = domingo no STM32, e de 0 = segunda-feira até 6 = domingo no mimxrt. subseconds é a parte fracionária do segundo em unidades de 1/256 de segundo no STM32; no mimxrt e no alif é sempre 0.

apenas STM32 + mimxrt

init(datetime: tuple) None

Inicializa o RTC.

Na porta mimxrt (OpenMV Cam RT1062), datetime é obrigatório e usa a tupla de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

Nas OpenMV cams STM32, init() não recebe argumento: ele (re)inicia o periférico RTC, deixando a data / hora atual intacta.

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

Obtém ou define o offset de calibração do RTC (usado para compensar o erro de frequência do cristal).

A faixa aceita e as unidades de value são específicas do hardware – o valor é escrito diretamente no registrador de trim do RTC do MCU. Consulte o manual de referência relevante do STM32 / i.MX RT para a codificação exata.

apenas STM32

info() int

Retorna o status compactado de inicialização do RTC como um inteiro de 32 bits.

Os 16 bits inferiores indicam o número de milissegundos que o RTC levou para inicializar no boot mais recente. O bit 0x10000 é definido quando o oscilador LSE (externo de baixa velocidade) falhou e o RTC recorreu ao LSI (RC interno). O bit 0x20000 é definido quando o RTC foi recém-inicializado no boot (em vez de continuar a partir da ligação anterior).

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

Agenda uma interrupção periódica de despertar.

timeout_ms é o período em milissegundos. O RTC dispara a cada timeout_ms e pode acordar o MCU de machine.lightsleep() / machine.deepsleep(). Passe None para desabilitar o timer de despertar.

callback é invocado a partir da IRQ de despertar; passe None para não instalar nenhum callback (o despertar ainda será disparado e acordará o MCU).

apenas mimxrt + alif

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

Arma o alarme do RTC. id seleciona o canal de alarme (use ALARM0). time é um número inteiro de milissegundos no futuro ou uma tupla de datetime. Passe repeat=True para rearmar automaticamente após cada disparo (válido apenas quando time é uma contagem de milissegundos).

No alif, apenas a forma de contagem de milissegundos é suportada.

apenas mimxrt

alarm_left(alarm_id: int = 0, /) int

Retorna o número de milissegundos restantes antes de o alarme identificado por alarm_id disparar.

alarm_cancel(alarm_id: int = 0, /) None

Cancela um alarme previamente armado.

cancel(alarm_id: int = 0, /) None

Alias obsoleto para alarm_cancel(), mantido para compatibilidade retroativa. Programado para remoção no MicroPython 2.0.

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

Registra um callback para o alarme do RTC.

trigger deve ser ALARM0 – a única fonte de IRQ suportada. handler é invocado com a instância de RTC quando o alarme dispara. hard=True registra um manipulador de interrupção de hardware (sem alocação de heap no callback). wake é aceito para compatibilidade entre portas, mas não tem efeito.

Constantes

ALARM0: int

Identificador para o único canal de alarme do RTC. Passe para alarm(), alarm_left(), alarm_cancel() e o argumento trigger de irq(). Apenas na porta mimxrt.