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.idditerima untuk kompatibilitas lintas port tetapi hanya0yang 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.
weekdayadalah 1 = Senin hingga 7 = Minggu pada STM32, dan 0 = Senin hingga 6 = Minggu pada mimxrt.subsecondsadalah bagian fraksional detik dalam satuan 1/256 detik pada STM32; pada mimxrt dan alif selalu bernilai0.
STM32 + mimxrt saja¶
- init(datetime: tuple) None¶
Inisialisasi RTC.
Pada port mimxrt (OpenMV Cam RT1062),
datetimediperlukan 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
valuebersifat 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_msadalah periode dalam milidetik. RTC aktif setiaptimeout_msdan dapat membangunkan MCU darimachine.lightsleep()/machine.deepsleep(). TeruskanNoneuntuk menonaktifkan timer wakeup.callbackdipanggil dari wakeup IRQ; teruskanNoneuntuk 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.
idmemilih saluran alarm (gunakanALARM0).timeadalah integer jumlah milidetik di masa depan, atau tuple datetime. Teruskanrepeat=Trueuntuk mengaktifkan ulang secara otomatis setelah setiap aktivasi (hanya valid ketikatimeadalah 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_idaktif.
- 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.
triggerharus berupaALARM0-- satu-satunya sumber IRQ yang didukung.handlerdipanggil dengan instansiRTCketika alarm aktif.hard=Truemendaftarkan handler hard-interrupt (tidak ada alokasi heap dalam callback).wakediterima untuk kompatibilitas lintas port tetapi tidak berpengaruh.
Konstanta¶
- ALARM0: int¶
Identifier untuk saluran alarm tunggal RTC. Teruskan ke
alarm(),alarm_left(),alarm_cancel()dan argumentriggerirq(). Hanya port mimxrt.