Klasse RTC – Echtzeituhr

Die Klasse RTC steuert das On-Chip-Echtzeituhr-Peripheriegerät des MCU, das die Uhrzeit über Resets hinweg behält.

Auf STM32-OpenMV-Cams verweisen machine.RTC und pyb.RTC auf dasselbe zugrunde liegende Objekt.

Anwendungsbeispiel:

import machine

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

Konstruktoren

class machine.RTC(id: int = 0)

Gibt das RTC-Singleton zurück. id wird aus Gründen der Port-übergreifenden Kompatibilität akzeptiert, aber auf den von OpenMV unterstützten Ports ist nur 0 gültig (jede Cam hat einen RTC).

Die folgenden Methoden sind danach gruppiert, welche OpenMV-Ports sie bereitstellen.

Auf allen OpenMV-Ports verfügbare Methoden

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

Fragt das aktuelle Datum und die aktuelle Uhrzeit ab oder setzt sie.

Ohne Argument wird der aktuelle Wert als 8-Tupel (year, month, day, weekday, hour, minute, second, subseconds) zurückgegeben.

Mit einem einzelnen 8-Tupel-Argument wird der RTC auf diesen Wert gesetzt.

weekday ist auf STM32 1 = Montag bis 7 = Sonntag und auf mimxrt 0 = Montag bis 6 = Sonntag. subseconds ist auf STM32 der Bruchteil der Sekunde in Einheiten von 1/256 einer Sekunde; auf mimxrt und alif ist er immer 0.

nur STM32 + mimxrt

init(datetime: tuple) None

Initialisiert den RTC.

Auf dem mimxrt-Port (OpenMV Cam RT1062) ist datetime erforderlich und verwendet das 8-Tupel (year, month, day, weekday, hour, minute, second, subseconds).

Auf STM32-OpenMV-Cams nimmt init() kein Argument entgegen: Es startet das RTC-Peripheriegerät (neu) und lässt das aktuelle Datum / die aktuelle Uhrzeit unverändert.

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

Fragt den Kalibrierungs-Offset des RTC ab oder setzt ihn (wird zum Ausgleich von Quarzfrequenzfehlern verwendet).

Der zulässige Bereich und die Einheiten von value sind hardwarespezifisch – der Wert wird direkt in das RTC-Trim-Register des MCU geschrieben. Die genaue Codierung finden Sie im entsprechenden STM32- / i.MX-RT-Referenzhandbuch.

nur STM32

info() int

Gibt den gepackten RTC-Startstatus als 32-Bit-Integer zurück.

Die unteren 16 Bit geben die Anzahl der Millisekunden an, die der RTC beim letzten Boot zum Hochfahren benötigt hat. Bit 0x10000 ist gesetzt, wenn der LSE-Oszillator (Low-Speed External) ausgefallen ist und der RTC auf den LSI (internen RC) zurückgegriffen hat. Bit 0x20000 ist gesetzt, wenn der RTC beim Boot neu initialisiert wurde (anstatt vom vorherigen Einschalten fortzufahren).

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

Plant einen periodischen Aufweck-Interrupt.

timeout_ms ist die Periode in Millisekunden. Der RTC löst alle timeout_ms aus und kann den MCU aus machine.lightsleep() / machine.deepsleep() aufwecken. Übergeben Sie None, um den Aufweck-Timer zu deaktivieren.

callback wird aus dem Aufweck-IRQ aufgerufen; übergeben Sie None, um keinen Callback zu installieren (das Aufwecken erfolgt trotzdem und weckt den MCU).

nur mimxrt + alif

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

Aktiviert den RTC-Alarm. id wählt den Alarmkanal aus (verwenden Sie ALARM0). time ist entweder eine ganzzahlige Anzahl von Millisekunden in der Zukunft oder ein datetime-Tupel. Übergeben Sie repeat=True, um nach jedem Auslösen automatisch neu zu aktivieren (nur gültig, wenn time eine Millisekundenanzahl ist).

Auf alif wird nur die Millisekundenanzahl-Form unterstützt.

nur mimxrt

alarm_left(alarm_id: int = 0, /) int

Gibt die Anzahl der Millisekunden zurück, die verbleiben, bis der durch alarm_id identifizierte Alarm auslöst.

alarm_cancel(alarm_id: int = 0, /) None

Bricht einen zuvor aktivierten Alarm ab.

cancel(alarm_id: int = 0, /) None

Veralteter Alias für alarm_cancel(), aus Gründen der Abwärtskompatibilität beibehalten. Die Entfernung ist für MicroPython 2.0 vorgesehen.

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

Registriert einen Callback für den RTC-Alarm.

trigger muss ALARM0 sein – die einzige unterstützte IRQ-Quelle. handler wird mit der RTC-Instanz aufgerufen, wenn der Alarm auslöst. hard=True registriert einen Hard-Interrupt-Handler (keine Heap-Allokation im Callback). wake wird aus Gründen der Port-übergreifenden Kompatibilität akzeptiert, hat aber keine Wirkung.

Konstanten

ALARM0: int

Bezeichner für den einzigen Alarmkanal des RTC. An alarm(), alarm_left(), alarm_cancel() und das Argument trigger von irq() übergeben. Nur mimxrt-Port.