clasa RTC – ceas în timp real¶
Clasa RTC controlează periferiul de ceas în timp real integrat pe cip al MCU-ului, care păstrează ora reală peste reseturi.
Pe camerele OpenMV Cam cu STM32, machine.RTC și pyb.RTC se referă la același obiect de bază.
Exemplu de utilizare:
import machine
rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())
Constructori¶
- class machine.RTC(id: int = 0)¶
Returnează singletonul
RTC.ideste acceptat pentru compatibilitate între porturi, dar numai0este valid pe porturile acceptate de OpenMV (fiecare cameră are un singur RTC).Metodele de mai jos sunt grupate în funcție de porturile OpenMV care le expun.
Metode disponibile pe toate porturile OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
Obține sau setează data și ora curentă.
Fără argument, returnează valoarea curentă sub forma unui tuplu cu 8 elemente
(year, month, day, weekday, hour, minute, second, subseconds).Cu un singur argument de tip tuplu cu 8 elemente, setează RTC-ul la acea valoare.
weekdayeste 1 = luni până la 7 = duminică pe STM32 și 0 = luni până la 6 = duminică pe mimxrt.subsecondseste partea fracționară a secundei, în unități de 1/256 de secundă pe STM32; pe mimxrt și alif este întotdeauna0.
doar STM32 + mimxrt¶
- init(datetime: tuple) None¶
Inițializează RTC-ul.
Pe portul mimxrt (OpenMV Cam RT1062),
datetimeeste obligatoriu și folosește tuplul cu 8 elemente(year, month, day, weekday, hour, minute, second, subseconds).Pe camerele OpenMV cu STM32,
init()nu acceptă niciun argument: (re)pornește periferiul RTC, lăsând neschimbată data / ora curentă.
- calibration(value: int | None = None, /) int | None¶
Obține sau setează offsetul de calibrare al RTC-ului (folosit pentru a compensa eroarea de frecvență a cristalului).
Intervalul acceptat și unitățile lui
valuesunt specifice hardware-ului – valoarea este scrisă direct în registrul de trim al RTC-ului din MCU. Consultați manualul de referință STM32 / i.MX RT relevant pentru codificarea exactă.
doar STM32¶
- info() int¶
Returnează starea de pornire a RTC-ului împachetată ca un întreg pe 32 de biți.
Cei 16 biți inferiori indică numărul de milisecunde de care a avut nevoie RTC-ul pentru a porni la cea mai recentă inițializare. Bitul 0x10000 este setat atunci când oscilatorul LSE (low-speed external) a eșuat și RTC-ul a recurs la LSI (RC intern). Bitul 0x20000 este setat atunci când RTC-ul a fost inițializat din nou la pornire (în loc să continue de la pornirea anterioară).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Programează o întrerupere periodică de trezire.
timeout_mseste perioada în milisecunde. RTC-ul se declanșează la fiecaretimeout_msși poate trezi MCU-ul dinmachine.lightsleep()/machine.deepsleep(). TransmitețiNonepentru a dezactiva temporizatorul de trezire.callbackeste invocat din IRQ-ul de trezire; transmitețiNonepentru a nu instala niciun callback (trezirea se va declanșa totuși și va trezi MCU-ul).
doar mimxrt + alif¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
Armează alarma RTC.
idselectează canalul de alarmă (folosițiALARM0).timeeste fie un număr întreg de milisecunde în viitor, fie un tuplu datetime. Transmitețirepeat=Truepentru a o re-arma automat după fiecare declanșare (valid doar atunci cândtimeeste un număr de milisecunde).Pe alif este acceptată doar forma cu număr de milisecunde.
doar mimxrt¶
- alarm_left(alarm_id: int = 0, /) int¶
Returnează numărul de milisecunde rămase până când se declanșează alarma identificată prin
alarm_id.
- cancel(alarm_id: int = 0, /) None¶
Alias depreciat pentru
alarm_cancel(), păstrat pentru compatibilitate retroactivă. Programat pentru eliminare în MicroPython 2.0.
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
Înregistrează un callback pentru alarma RTC.
triggertrebuie să fieALARM0– singura sursă de IRQ acceptată.handlereste invocat cu instanțaRTCatunci când se declanșează alarma.hard=Trueînregistrează un gestionar de întrerupere hardware (fără alocare pe heap în callback).wakeeste acceptat pentru compatibilitate între porturi, dar nu are niciun efect.
Constante¶
- ALARM0: int¶
Identificator pentru singurul canal de alarmă al RTC-ului. Se transmite către
alarm(),alarm_left(),alarm_cancel()și argumentultriggeralirq(). Doar portul mimxrt.