klasa RTC – zegar czasu rzeczywistego¶
Klasa RTC steruje wbudowanym w MCU urządzeniem peryferyjnym zegara czasu rzeczywistego, które utrzymuje czas zegarowy pomimo resetów.
Na kamerach OpenMV Cam ze STM32 machine.RTC oraz pyb.RTC odnoszą się do tego samego obiektu bazowego.
Przykładowe użycie:
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)¶
Zwraca singleton
RTC.idjest akceptowane dla zgodności między portami, ale na portach obsługiwanych przez OpenMV prawidłowa jest tylko wartość0(każda kamera ma jeden RTC).Poniższe metody są pogrupowane według tego, które porty OpenMV je udostępniają.
Metody dostępne na wszystkich portach OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
Pobiera lub ustawia bieżącą datę i godzinę.
Bez argumentu zwraca bieżącą wartość jako 8-elementową krotkę
(year, month, day, weekday, hour, minute, second, subseconds).Z pojedynczym argumentem w postaci 8-elementowej krotki ustawia RTC na tę wartość.
weekdayprzyjmuje wartości 1 = poniedziałek do 7 = niedziela na STM32 oraz 0 = poniedziałek do 6 = niedziela na mimxrt.subsecondsto ułamkowa część sekundy w jednostkach 1/256 sekundy na STM32; na mimxrt i alif zawsze wynosi0.
tylko STM32 + mimxrt¶
- init(datetime: tuple) None¶
Inicjalizuje RTC.
Na porcie mimxrt (OpenMV Cam RT1062)
datetimejest wymagane i używa 8-elementowej krotki(year, month, day, weekday, hour, minute, second, subseconds).Na kamerach OpenMV ze STM32
init()nie przyjmuje argumentu: (ponownie) uruchamia urządzenie peryferyjne RTC, pozostawiając bieżącą datę / godzinę bez zmian.
- calibration(value: int | None = None, /) int | None¶
Pobiera lub ustawia przesunięcie kalibracyjne RTC (używane do kompensacji błędu częstotliwości kryształu).
Akceptowany zakres oraz jednostki
valuesą specyficzne dla sprzętu – wartość jest zapisywana bezpośrednio do rejestru korekcji RTC w MCU. Dokładne kodowanie znajdziesz w odpowiednim podręczniku referencyjnym STM32 / i.MX RT.
tylko STM32¶
- info() int¶
Zwraca spakowany status uruchomienia RTC jako 32-bitową liczbę całkowitą.
Niskie 16 bitów podaje liczbę milisekund, jakich RTC potrzebował na uruchomienie podczas ostatniego rozruchu. Bit 0x10000 jest ustawiony, gdy oscylator LSE (low-speed external) zawiódł i RTC powrócił do LSI (wewnętrzny RC). Bit 0x20000 jest ustawiony, gdy RTC został na nowo zainicjalizowany podczas rozruchu (zamiast kontynuować pracę z poprzedniego włączenia zasilania).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Planuje okresowe przerwanie wybudzające.
timeout_msto okres w milisekundach. RTC wyzwala się cotimeout_msi może wybudzić MCU zmachine.lightsleep()/machine.deepsleep(). PrzekażNone, aby wyłączyć licznik wybudzania.callbackjest wywoływane z przerwania IRQ wybudzania; przekażNone, aby nie instalować żadnego wywołania zwrotnego (wybudzenie i tak nastąpi oraz wybudzi MCU).
tylko mimxrt + alif¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
Uzbraja alarm RTC.
idwybiera kanał alarmu (użyjALARM0).timeto liczba całkowita milisekund w przyszłości albo krotka datetime. Przekażrepeat=True, aby automatycznie uzbroić alarm ponownie po każdym wyzwoleniu (prawidłowe tylko wtedy, gdytimejest liczbą milisekund).Na alif obsługiwana jest tylko postać z liczbą milisekund.
tylko mimxrt¶
- alarm_left(alarm_id: int = 0, /) int¶
Zwraca liczbę milisekund pozostałych do wyzwolenia alarmu zidentyfikowanego przez
alarm_id.
- cancel(alarm_id: int = 0, /) None¶
Przestarzały alias
alarm_cancel(), zachowany dla zgodności wstecznej. Zaplanowany do usunięcia w MicroPython 2.0.
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
Rejestruje wywołanie zwrotne dla alarmu RTC.
triggermusi byćALARM0– jedyne obsługiwane źródło IRQ.handlerjest wywoływane z instancjąRTC, gdy alarm się wyzwoli.hard=Truerejestruje sprzętową procedurę obsługi przerwania (brak alokacji na stercie w wywołaniu zwrotnym).wakejest akceptowane dla zgodności między portami, ale nie ma żadnego efektu.
Stałe¶
- ALARM0: int¶
Identyfikator jedynego kanału alarmu RTC. Przekaż do
alarm(),alarm_left(),alarm_cancel()oraz do argumentutriggermetodyirq(). Tylko port mimxrt.