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 apenas0é 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 é sempre0.
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
valuesã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 cadatimeout_mse pode acordar o MCU a partir demachine.lightsleep()/machine.deepsleep(). PassarNonepara desativar o temporizador de wakeup.callbacké invocado a partir do IRQ de wakeup; passarNonepara 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.
idseleciona o canal de alarme (utilizarALARM0).timeé um número inteiro de milissegundos no futuro ou um tuplo de data/hora. Passarrepeat=Truepara rearmar automaticamente após cada disparo (válido apenas quandotimeé 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.
- 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.
triggerdeve serALARM0– a única fonte de IRQ suportada.handleré invocado com a instânciaRTCquando o alarme dispara.hard=Trueregista 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 argumentotriggerdeirq(). Apenas no porto mimxrt.