kelas RTC -- real-time clock

Kelas RTC mengontrol periferal real-time clock on-chip MCU, yang menjaga waktu kalender selama reset.

Pada STM32 OpenMV Cams, machine.RTC dan pyb.RTC merujuk ke objek yang sama.

Contoh penggunaan:

import machine

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

Konstruktor

class machine.RTC(id: int = 0)

Kembalikan singleton RTC. id diterima untuk kompatibilitas lintas port tetapi hanya 0 yang valid pada port yang didukung OpenMV (setiap kamera memiliki satu RTC).

Metode-metode di bawah ini dikelompokkan berdasarkan port OpenMV mana yang mengeksposnya.

Metode yang tersedia di semua port OpenMV

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

Dapatkan atau atur tanggal dan waktu saat ini.

Tanpa argumen, kembalikan nilai saat ini sebagai 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Dengan satu argumen 8-tuple, atur RTC ke nilai tersebut.

weekday adalah 1 = Senin hingga 7 = Minggu pada STM32, dan 0 = Senin hingga 6 = Minggu pada mimxrt. subseconds adalah bagian fraksional detik dalam satuan 1/256 detik pada STM32; pada mimxrt dan alif selalu bernilai 0.

STM32 + mimxrt saja

init(datetime: tuple) None

Inisialisasi RTC.

Pada port mimxrt (OpenMV Cam RT1062), datetime diperlukan dan menggunakan 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Pada STM32 OpenMV cams, init() tidak mengambil argumen: metode ini (me-)mulai ulang periferal RTC, membiarkan tanggal / waktu saat ini tidak tersentuh.

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

Dapatkan atau atur offset kalibrasi RTC (digunakan untuk mengkompensasi kesalahan frekuensi kristal).

Rentang yang diterima dan satuan value bersifat hardware-specific -- nilai ditulis langsung ke register trim RTC MCU. Lihat referensi manual STM32 / i.MX RT yang relevan untuk encoding yang tepat.

STM32 saja

info() int

Kembalikan status startup RTC yang dikemas sebagai integer 32-bit.

16 bit rendah memberikan jumlah milidetik yang diperlukan RTC untuk memulai pada boot terbaru. Bit 0x10000 diset ketika osilator LSE (low-speed external) gagal dan RTC beralih ke LSI (internal RC). Bit 0x20000 diset ketika RTC baru diinisialisasi saat boot (bukan melanjutkan dari power-on sebelumnya).

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

Jadwalkan interupsi wakeup periodik.

timeout_ms adalah periode dalam milidetik. RTC aktif setiap timeout_ms dan dapat membangunkan MCU dari machine.lightsleep() / machine.deepsleep(). Teruskan None untuk menonaktifkan timer wakeup.

callback dipanggil dari wakeup IRQ; teruskan None untuk tidak memasang callback (wakeup tetap akan aktif dan membangunkan MCU).

mimxrt + alif saja

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

Aktifkan alarm RTC. id memilih saluran alarm (gunakan ALARM0). time adalah integer jumlah milidetik di masa depan, atau tuple datetime. Teruskan repeat=True untuk mengaktifkan ulang secara otomatis setelah setiap aktivasi (hanya valid ketika time adalah jumlah milidetik).

Pada alif, hanya bentuk jumlah milidetik yang didukung.

mimxrt saja

alarm_left(alarm_id: int = 0, /) int

Kembalikan jumlah milidetik yang tersisa sebelum alarm yang diidentifikasi oleh alarm_id aktif.

alarm_cancel(alarm_id: int = 0, /) None

Batalkan alarm yang sebelumnya telah diaktifkan.

cancel(alarm_id: int = 0, /) None

Alias yang sudah usang untuk alarm_cancel(), dipertahankan untuk kompatibilitas mundur. Dijadwalkan untuk dihapus pada MicroPython 2.0.

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

Daftarkan callback untuk alarm RTC.

trigger harus berupa ALARM0 -- satu-satunya sumber IRQ yang didukung. handler dipanggil dengan instansi RTC ketika alarm aktif. hard=True mendaftarkan handler hard-interrupt (tidak ada alokasi heap dalam callback). wake diterima untuk kompatibilitas lintas port tetapi tidak berpengaruh.

Konstanta

ALARM0: int

Identifier untuk saluran alarm tunggal RTC. Teruskan ke alarm(), alarm_left(), alarm_cancel() dan argumen trigger irq(). Hanya port mimxrt.