třída RTC – hodiny reálného času¶
Třída RTC ovládá vestavěnou periferii hodin reálného času MCU, která udržuje skutečný čas i přes resety.
Na OpenMV Cam s STM32 odkazují machine.RTC a pyb.RTC na stejný podkladový objekt.
Příklad použití:
import machine
rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())
Konstruktory¶
- class machine.RTC(id: int = 0)¶
Vrátí singleton
RTC.idje akceptováno z důvodu kompatibility mezi porty, ale na portech podporovaných OpenMV je platná pouze hodnota0(každá kamera má jeden RTC).Níže uvedené metody jsou seskupeny podle toho, které porty OpenMV je zpřístupňují.
Metody dostupné na všech portech OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
Získá nebo nastaví aktuální datum a čas.
Bez argumentu vrátí aktuální hodnotu jako 8-tici
(year, month, day, weekday, hour, minute, second, subseconds).S jediným argumentem v podobě 8-tice nastaví RTC na tuto hodnotu.
weekdayje 1 = pondělí až 7 = neděle na STM32 a 0 = pondělí až 6 = neděle na mimxrt.subsecondsje zlomková část sekundy v jednotkách 1/256 sekundy na STM32; na mimxrt a alif je vždy0.
pouze STM32 + mimxrt¶
- init(datetime: tuple) None¶
Inicializuje RTC.
Na portu mimxrt (OpenMV Cam RT1062) je
datetimepovinné a používá 8-tici(year, month, day, weekday, hour, minute, second, subseconds).Na OpenMV kamerách s STM32 nepřijímá
init()žádný argument: (znovu) spustí periferii RTC a ponechá aktuální datum / čas beze změny.
- calibration(value: int | None = None, /) int | None¶
Získá nebo nastaví kalibrační odchylku RTC (používá se ke kompenzaci chyby frekvence krystalu).
Akceptovaný rozsah a jednotky hodnoty
valuezávisí na hardwaru – hodnota se zapisuje přímo do trimovacího registru RTC MCU. Přesné kódování najdete v příslušném referenčním manuálu STM32 / i.MX RT.
pouze STM32¶
- info() int¶
Vrátí zabalený stav spuštění RTC jako 32bitové celé číslo.
Spodních 16 bitů udává počet milisekund, které RTC potřebovalo ke spuštění při posledním bootu. Bit 0x10000 je nastaven, když selhal oscilátor LSE (low-speed external) a RTC se vrátilo k LSI (interní RC). Bit 0x20000 je nastaven, když bylo RTC při bootu nově inicializováno (namísto pokračování z předchozího zapnutí).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Naplánuje periodické přerušení pro probuzení.
timeout_msje perioda v milisekundách. RTC se spouští každýchtimeout_msa může probudit MCU zmachine.lightsleep()/machine.deepsleep(). PředánímNonečasovač probuzení zakážete.callbackje volán z IRQ probuzení; předánímNoneneinstalujete žádný callback (probuzení se přesto spustí a probudí MCU).
pouze mimxrt + alif¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
Nastaví alarm RTC.
idvybírá kanál alarmu (použijteALARM0).timeje buď celočíselný počet milisekund v budoucnosti, nebo n-tice s datem a časem. Předánímrepeat=Truese alarm automaticky znovu nastaví po každém spuštění (platné pouze, když jetimepočet milisekund).Na alif je podporována pouze forma s počtem milisekund.
pouze mimxrt¶
- alarm_left(alarm_id: int = 0, /) int¶
Vrátí počet milisekund zbývajících do spuštění alarmu identifikovaného pomocí
alarm_id.
- cancel(alarm_id: int = 0, /) None¶
Zastaralý alias pro
alarm_cancel(), zachovaný kvůli zpětné kompatibilitě. Naplánováno k odstranění v MicroPython 2.0.
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
Zaregistruje callback pro alarm RTC.
triggermusí býtALARM0– jediný podporovaný zdroj IRQ.handlerje volán s instancíRTC, když se alarm spustí.hard=Trueregistruje obslužnou rutinu hardwarového přerušení (žádná alokace haldy v callbacku).wakeje akceptováno z důvodu kompatibility mezi porty, ale nemá žádný účinek.
Konstanty¶
- ALARM0: int¶
Identifikátor jediného kanálu alarmu RTC. Předejte metodám
alarm(),alarm_left(),alarm_cancel()a argumentutriggermetodyirq(). Pouze port mimxrt.