classe RTC – relógio de tempo real#

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

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

Exemplo de utilização:

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)#

Devolve o singleton RTC. id é aceite para compatibilidade entre portos, mas apenas 0 é válido nos portos suportados pelo OpenMV (cada câmara tem um RTC).

Os métodos abaixo estão agrupados consoante os portos OpenMV que os expõem.

Métodos disponíveis em todos os portos OpenMV#

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

Obtém ou define a data e hora atuais.

Sem argumento, devolve o valor atual como um tuplo de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

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

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

STM32 + mimxrt apenas#

init(datetime: tuple) None#

Inicializa o RTC.

No porto mimxrt (OpenMV Cam RT1062), datetime é obrigatório e utiliza o tuplo de 8 elementos (year, month, day, weekday, hour, minute, second, subseconds).

Nos OpenMV Cams STM32, init() não aceita argumento: (re)inicia o periférico RTC, deixando a data/hora atual intacta.

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

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

O intervalo aceite e as unidades de value são específicos do hardware – o valor é escrito diretamente no registo de ajuste RTC do MCU. Consulte o manual de referência do STM32 / i.MX RT relevante para a codificação exata.

STM32 apenas#

info() int#

Devolve o estado de arranque do RTC compactado como um inteiro de 32 bits.

Os 16 bits inferiores indicam o número de milissegundos que o RTC demorou a arrancar no arranque 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 recentemente inicializado no arranque (em vez de continuar desde o arranque anterior).

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

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

timeout_ms é o período em milissegundos. O RTC dispara a cada timeout_ms e pode acordar o MCU a partir de machine.lightsleep() / machine.deepsleep(). Passar None para desativar o temporizador de wakeup.

callback é invocado a partir do IRQ de wakeup; passar None para não instalar callback (o wakeup continuará a disparar e a acordar o MCU).

mimxrt + alif apenas#

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

Arma o alarme do RTC. id seleciona o canal de alarme (utilizar ALARM0). time é um número inteiro de milissegundos no futuro ou um tuplo de data/hora. Passar repeat=True para rearmar automaticamente após cada disparo (válido apenas quando time é uma contagem em milissegundos).

Apenas no alif é suportada a forma de contagem em milissegundos.

mimxrt apenas#

alarm_left(alarm_id: int = 0, /) int#

Devolve o número de milissegundos restantes antes do disparo do alarme identificado por alarm_id.

alarm_cancel(alarm_id: int = 0, /) None#

Cancela um alarme previamente armado.

cancel(alarm_id: int = 0, /) None#

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

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

Regista um callback para o alarme do RTC.

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

Constantes#

ALARM0: int#

Identificador para o canal de alarme único do RTC. Passar para alarm(), alarm_left(), alarm_cancel() e o argumento trigger de irq(). Apenas no porto mimxrt.