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.idwird aus Gründen der Port-übergreifenden Kompatibilität akzeptiert, aber auf den von OpenMV unterstützten Ports ist nur0gü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.
weekdayist auf STM32 1 = Montag bis 7 = Sonntag und auf mimxrt 0 = Montag bis 6 = Sonntag.subsecondsist auf STM32 der Bruchteil der Sekunde in Einheiten von 1/256 einer Sekunde; auf mimxrt und alif ist er immer0.
nur STM32 + mimxrt¶
- init(datetime: tuple) None¶
Initialisiert den RTC.
Auf dem mimxrt-Port (OpenMV Cam RT1062) ist
datetimeerforderlich 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
valuesind 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_msist die Periode in Millisekunden. Der RTC löst alletimeout_msaus und kann den MCU ausmachine.lightsleep()/machine.deepsleep()aufwecken. Übergeben SieNone, um den Aufweck-Timer zu deaktivieren.callbackwird aus dem Aufweck-IRQ aufgerufen; übergeben SieNone, 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.
idwählt den Alarmkanal aus (verwenden SieALARM0).timeist entweder eine ganzzahlige Anzahl von Millisekunden in der Zukunft oder ein datetime-Tupel. Übergeben Sierepeat=True, um nach jedem Auslösen automatisch neu zu aktivieren (nur gültig, wenntimeeine 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_ididentifizierte Alarm auslöst.
- 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.
triggermussALARM0sein – die einzige unterstützte IRQ-Quelle.handlerwird mit derRTC-Instanz aufgerufen, wenn der Alarm auslöst.hard=Trueregistriert einen Hard-Interrupt-Handler (keine Heap-Allokation im Callback).wakewird 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 Argumenttriggervonirq()übergeben. Nur mimxrt-Port.