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.