RTC osztály – valós idejű óra

Az RTC osztály az MCU beépített valós idejű óra perifériáját vezérli, amely az újraindításokon át megőrzi a pontos időt.

STM32 OpenMV Cam eszközökön a machine.RTC és a pyb.RTC ugyanarra az alapul fekvő objektumra hivatkozik.

Példa használat:

import machine

rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())

Konstruktorok

class machine.RTC(id: int = 0)

Visszaadja az RTC singleton példányt. Az id a portok közötti kompatibilitás érdekében elfogadott, de az OpenMV által támogatott portokon csak a 0 érvényes (minden kamerában egy RTC van).

Az alábbi metódusok aszerint vannak csoportosítva, hogy mely OpenMV portok teszik őket elérhetővé.

Az összes OpenMV porton elérhető metódusok

datetime(datetimetuple: tuple | None = None, /) tuple | None

Az aktuális dátum és idő lekérdezése vagy beállítása.

Argumentum nélkül az aktuális értéket egy 8-elemű kettősként (tuple) adja vissza: (year, month, day, weekday, hour, minute, second, subseconds).

Egyetlen 8-elemű kettős (tuple) argumentummal az RTC-t az adott értékre állítja.

A weekday STM32-n 1 = hétfő-től 7 = vasárnap-ig, mimxrt-n pedig 0 = hétfő-től 6 = vasárnap-ig terjed. A subseconds a másodperc tört része STM32-n 1/256 másodperc egységekben; mimxrt-n és alif-on mindig 0.

csak STM32 + mimxrt

init(datetime: tuple) None

Az RTC inicializálása.

A mimxrt porton (OpenMV Cam RT1062) a datetime kötelező, és a 8-elemű (year, month, day, weekday, hour, minute, second, subseconds) kettőst használja.

STM32 OpenMV kamerákon az init() nem fogad argumentumot: (újra)indítja az RTC perifériát, az aktuális dátumot / időt érintetlenül hagyva.

calibration(value: int | None = None, /) int | None

Az RTC kalibrációs eltolásának lekérdezése vagy beállítása (a kristályfrekvencia-hiba kompenzálására használatos).

A value elfogadott tartománya és mértékegysége hardver-specifikus – az érték közvetlenül az MCU RTC trim regiszterébe íródik. A pontos kódolásért lásd a vonatkozó STM32 / i.MX RT referenciakézikönyvet.

csak STM32

info() int

Visszaadja a tömörített RTC indítási állapotot 32 bites egész számként.

Az alsó 16 bit megadja, hogy az RTC hány ezredmásodperc alatt indult el a legutóbbi rendszerindításkor. A 0x10000 bit akkor van beállítva, ha az LSE (alacsony sebességű külső) oszcillátor meghibásodott, és az RTC az LSI (belső RC) oszcillátorra váltott. A 0x20000 bit akkor van beállítva, ha az RTC újonnan lett inicializálva a rendszerindításkor (nem pedig az előző bekapcsolásból folytatódott).

wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None

Periodikus felébresztő megszakítás ütemezése.

A timeout_ms a periódus ezredmásodpercben. Az RTC minden timeout_ms után kioldódik, és felébresztheti az MCU-t a machine.lightsleep() / machine.deepsleep() állapotból. Adja át a None értéket a felébresztő időzítő letiltásához.

A callback a felébresztő IRQ-ból hívódik meg; adja át a None értéket, ha nem szeretne visszahívást beállítani (a felébresztés ekkor is kioldódik és felébreszti az MCU-t).

csak mimxrt + alif

alarm(id: int, time: int | tuple, *, repeat: bool = False) None

Az RTC riasztó élesítése. Az id választja ki a riasztási csatornát (használja az ALARM0 értéket). A time vagy egy egész szám, amely a jövőbeni ezredmásodpercek száma, vagy egy datetime kettős (tuple). Adja át a repeat=True értéket, hogy minden kioldás után automatikusan újraélesítse (csak akkor érvényes, ha a time egy ezredmásodperc-szám).

alif-on csak az ezredmásodperc-szám forma támogatott.

csak mimxrt

alarm_left(alarm_id: int = 0, /) int

Visszaadja az alarm_id által azonosított riasztó kioldásáig hátralévő ezredmásodpercek számát.

alarm_cancel(alarm_id: int = 0, /) None

Egy korábban élesített riasztó megszüntetése.

cancel(alarm_id: int = 0, /) None

Az alarm_cancel() elavult aliasa, amely a visszafelé kompatibilitás érdekében maradt meg. Eltávolítása a MicroPython 2.0 verzióra van ütemezve.

irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None

Visszahívás regisztrálása az RTC riasztóhoz.

A trigger értékének ALARM0 -nak kell lennie – ez az egyetlen támogatott IRQ forrás. A handler az RTC példánnyal hívódik meg, amikor a riasztó kioldódik. A hard=True egy hardveres megszakításkezelőt regisztrál (nincs kupacfoglalás a visszahívásban). A wake a portok közötti kompatibilitás érdekében elfogadott, de nincs hatása.

Konstansok

ALARM0: int

Az RTC egyetlen riasztási csatornájának azonosítója. Adja át az alarm(), alarm_left(), alarm_cancel() metódusoknak és az irq() trigger argumentumának. Csak mimxrt port.