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 apenas0é 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.
weekdayvai 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 é sempre0.
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
valuesã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 cadatimeout_mse pode acordar o MCU demachine.lightsleep()/machine.deepsleep(). PasseNonepara desabilitar o timer de despertar.callbacké invocado a partir da IRQ de despertar; passeNonepara 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.
idseleciona o canal de alarme (useALARM0).timeé um número inteiro de milissegundos no futuro ou uma tupla de datetime. Passerepeat=Truepara rearmar automaticamente após cada disparo (válido apenas quandotimeé 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_iddisparar.
- 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.
triggerdeve serALARM0– a única fonte de IRQ suportada.handleré invocado com a instância deRTCquando o alarme dispara.hard=Trueregistra 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 argumentotriggerdeirq(). Apenas na porta mimxrt.