class RTC – orologio in tempo reale¶
La classe RTC controlla la periferica orologio in tempo reale integrata nell’MCU, che mantiene l’ora di sistema attraverso i reset.
Sulle OpenMV Cam STM32, machine.RTC e pyb.RTC fanno riferimento allo stesso oggetto sottostante.
Esempio di utilizzo:
import machine
rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())
Costruttori¶
- class machine.RTC(id: int = 0)¶
Restituisce il singleton
RTC.idè accettato per compatibilità tra le porte, ma solo0è valido sulle porte supportate da OpenMV (ogni cam ha un solo RTC).I metodi seguenti sono raggruppati in base alle porte OpenMV che li espongono.
Metodi disponibili su tutte le porte OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
Ottiene o imposta la data e l’ora correnti.
Senza argomenti, restituisce il valore corrente come una tupla a 8 elementi
(year, month, day, weekday, hour, minute, second, subseconds).Con un singolo argomento tupla a 8 elementi, imposta l’RTC a quel valore.
weekdayè 1 = lunedì fino a 7 = domenica su STM32, e 0 = lunedì fino a 6 = domenica su mimxrt.subsecondsè la parte frazionaria del secondo in unità di 1/256 di secondo su STM32; su mimxrt e alif è sempre0.
solo STM32 + mimxrt¶
- init(datetime: tuple) None¶
Inizializza l’RTC.
Sulla porta mimxrt (OpenMV Cam RT1062)
datetimeè obbligatorio e utilizza la tupla a 8 elementi(year, month, day, weekday, hour, minute, second, subseconds).Sulle OpenMV cam STM32,
init()non accetta argomenti: (ri)avvia la periferica RTC, lasciando invariata la data / ora corrente.
- calibration(value: int | None = None, /) int | None¶
Ottiene o imposta l’offset di calibrazione dell’RTC (usato per compensare l’errore di frequenza del cristallo).
L’intervallo accettato e le unità di
valuesono specifici dell’hardware – il valore viene scritto direttamente nel registro di trim RTC dell’MCU. Vedere il relativo manuale di riferimento STM32 / i.MX RT per la codifica esatta.
solo STM32¶
- info() int¶
Restituisce lo stato di avvio dell’RTC impacchettato come intero a 32 bit.
I 16 bit bassi indicano il numero di millisecondi che l’RTC ha impiegato per avviarsi all’ultimo boot. Il bit 0x10000 è impostato quando l’oscillatore LSE (low-speed external) si è guastato e l’RTC è ricaduto sull’LSI (RC interno). Il bit 0x20000 è impostato quando l’RTC è stato inizializzato ex novo all’avvio (anziché continuare dal precedente accensione).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Pianifica un interrupt di risveglio periodico.
timeout_msè il periodo in millisecondi. L’RTC si attiva ognitimeout_mse può risvegliare l’MCU damachine.lightsleep()/machine.deepsleep(). PassareNoneper disabilitare il timer di risveglio.callbackviene invocato dall’IRQ di risveglio; passareNoneper non installare alcun callback (il risveglio si attiverà comunque e risveglierà l’MCU).
solo mimxrt + alif¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
Arma l’allarme dell’RTC.
idseleziona il canale dell’allarme (usareALARM0).timeè un numero intero di millisecondi nel futuro, oppure una tupla datetime. Passarerepeat=Trueper ri-armarlo automaticamente dopo ogni attivazione (valido solo quandotimeè un conteggio in millisecondi).Su alif è supportata solo la forma con conteggio in millisecondi.
solo mimxrt¶
- alarm_left(alarm_id: int = 0, /) int¶
Restituisce il numero di millisecondi rimanenti prima che l’allarme identificato da
alarm_idsi attivi.
- cancel(alarm_id: int = 0, /) None¶
Alias deprecato di
alarm_cancel(), mantenuto per retrocompatibilità. Previsto per la rimozione in MicroPython 2.0.
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
Registra un callback per l’allarme dell’RTC.
triggerdeve essereALARM0– l’unica sorgente IRQ supportata.handlerviene invocato con l’istanzaRTCquando l’allarme si attiva.hard=Trueregistra un gestore di interrupt hardware (nessuna allocazione di heap nel callback).wakeè accettato per compatibilità tra le porte ma non ha effetto.
Costanti¶
- ALARM0: int¶
Identificatore per l’unico canale di allarme dell’RTC. Passare a
alarm(),alarm_left(),alarm_cancel()e all’argomentotriggerdiirq(). Solo porta mimxrt.