class RTC – real-time clock

De RTC-klasse stuurt het on-chip real-time-clock-randapparaat van de MCU aan, dat de kloktijd behoudt over resets heen.

Op STM32 OpenMV Cams verwijzen machine.RTC en pyb.RTC naar hetzelfde onderliggende object.

Voorbeeldgebruik:

import machine

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

Constructors

class machine.RTC(id: int = 0)

Retourneert de RTC-singleton. id wordt geaccepteerd voor compatibiliteit tussen poorten, maar alleen 0 is geldig op de door OpenMV ondersteunde poorten (elke cam heeft één RTC).

De onderstaande methoden zijn gegroepeerd op welke OpenMV-poorten ze beschikbaar stellen.

Methoden die op alle OpenMV-poorten beschikbaar zijn

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

Verkrijg of stel de huidige datum en tijd in.

Zonder argument wordt de huidige waarde geretourneerd als een 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Met een enkel 8-tuple-argument wordt de RTC op die waarde ingesteld.

weekday is 1 = maandag tot en met 7 = zondag op STM32, en 0 = maandag tot en met 6 = zondag op mimxrt. subseconds is het fractionele deel van de seconde in eenheden van 1/256 seconde op STM32; op mimxrt en alif is het altijd 0.

alleen STM32 + mimxrt

init(datetime: tuple) None

Initialiseer de RTC.

Op de mimxrt-poort (OpenMV Cam RT1062) is datetime vereist en gebruikt het de 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Op STM32 OpenMV-cams neemt init() geen argument: het (her)start het RTC-randapparaat en laat de huidige datum/tijd ongemoeid.

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

Verkrijg of stel de kalibratie-offset van de RTC in (gebruikt om de frequentiefout van het kristal te compenseren).

Het geaccepteerde bereik en de eenheden van value zijn hardwarespecifiek – de waarde wordt rechtstreeks in het RTC-trimregister van de MCU geschreven. Zie de relevante STM32-/i.MX RT-referentiehandleiding voor de exacte codering.

alleen STM32

info() int

Retourneert de ingepakte RTC-opstartstatus als een 32-bits integer.

De lage 16 bits geven het aantal milliseconden aan dat de RTC nodig had om op te starten bij de meest recente boot. Bit 0x10000 is gezet wanneer de LSE-oscillator (low-speed external) faalde en de RTC terugviel op de LSI (interne RC). Bit 0x20000 is gezet wanneer de RTC bij het opstarten nieuw werd geïnitialiseerd (in plaats van door te gaan vanaf de vorige inschakeling).

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

Plan een periodieke wekinterrupt in.

timeout_ms is de periode in milliseconden. De RTC vuurt elke timeout_ms en kan de MCU wekken uit machine.lightsleep() / machine.deepsleep(). Geef None door om de wektimer uit te schakelen.

callback wordt aangeroepen vanuit de wek-IRQ; geef None door om geen callback te installeren (de wekgebeurtenis vuurt nog steeds en wekt de MCU).

alleen mimxrt + alif

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

Activeer het RTC-alarm. id selecteert het alarmkanaal (gebruik ALARM0). time is ofwel een integer aantal milliseconden in de toekomst, ofwel een datetime-tuple. Geef repeat=True door om automatisch opnieuw te activeren na elke keer vuren (alleen geldig wanneer time een millisecondentelling is).

Op alif wordt alleen de vorm met millisecondentelling ondersteund.

alleen mimxrt

alarm_left(alarm_id: int = 0, /) int

Retourneert het aantal milliseconden dat resteert voordat het alarm geïdentificeerd door alarm_id vuurt.

alarm_cancel(alarm_id: int = 0, /) None

Annuleer een eerder geactiveerd alarm.

cancel(alarm_id: int = 0, /) None

Verouderde alias voor alarm_cancel(), behouden voor achterwaartse compatibiliteit. Gepland voor verwijdering in MicroPython 2.0.

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

Registreer een callback voor het RTC-alarm.

trigger moet ALARM0 zijn – de enige ondersteunde IRQ-bron. handler wordt aangeroepen met de RTC-instantie wanneer het alarm vuurt. hard=True registreert een hard-interrupt-handler (geen heap-toewijzing in de callback). wake wordt geaccepteerd voor compatibiliteit tussen poorten, maar heeft geen effect.

Constanten

ALARM0: int

Identifier voor het enkele alarmkanaal van de RTC. Geef door aan alarm(), alarm_left(), alarm_cancel() en het trigger-argument van irq(). Alleen de mimxrt-poort.