คลาส RTC -- นาฬิกาเวลาจริง¶
คลาส RTC ควบคุมอุปกรณ์ต่อพ่วงนาฬิกาเวลาจริงบนชิป MCU ซึ่งรักษาเวลานาฬิกาผนังข้ามการรีเซ็ต
บน STM32 OpenMV Cams machine.RTC และ pyb.RTC อ้างอิงถึงออบเจ็กต์พื้นฐานเดียวกัน
ตัวอย่างการใช้งาน:
import machine
rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())
ตัวสร้าง¶
- class machine.RTC(id: int = 0)¶
คืนค่า singleton
RTCidถูกยอมรับเพื่อความเข้ากันได้ข้ามพอร์ต แต่เฉพาะ0เท่านั้นที่ใช้ได้บนพอร์ตที่ OpenMV รองรับ (กล้องแต่ละตัวมี RTC หนึ่งตัว)เมธอดด้านล่างถูกจัดกลุ่มตามพอร์ต OpenMV ที่เปิดเผย
เมธอดที่ใช้ได้บนพอร์ต OpenMV ทั้งหมด¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
รับหรือตั้งค่าวันที่และเวลาปัจจุบัน
หากไม่มีอาร์กิวเมนต์ คืนค่าปัจจุบันเป็น 8-tuple
(year, month, day, weekday, hour, minute, second, subseconds)หากมีอาร์กิวเมนต์ 8-tuple หนึ่งตัว ตั้งค่า RTC เป็นค่านั้น
weekdayคือ 1 = วันจันทร์ ถึง 7 = วันอาทิตย์บน STM32 และ 0 = วันจันทร์ ถึง 6 = วันอาทิตย์บน mimxrtsubsecondsคือส่วนเศษของวินาทีในหน่วย 1/256 วินาทีบน STM32; บน mimxrt และ alif เป็น0เสมอ
STM32 + mimxrt เท่านั้น¶
- init(datetime: tuple) None¶
เริ่มต้น RTC
บนพอร์ต mimxrt (OpenMV Cam RT1062)
datetimeจำเป็นและใช้ 8-tuple(year, month, day, weekday, hour, minute, second, subseconds)บน STM32 OpenMV cams
init()ไม่รับอาร์กิวเมนต์: มันจะ (เริ่มต้นใหม่) อุปกรณ์ต่อพ่วง RTC โดยไม่เปลี่ยนแปลงวันที่/เวลาปัจจุบัน
- calibration(value: int | None = None, /) int | None¶
รับหรือตั้งค่า offset การปรับเทียบของ RTC (ใช้เพื่อชดเชยข้อผิดพลาดความถี่คริสตัล)
ช่วงที่ยอมรับและหน่วยของ
valueขึ้นอยู่กับฮาร์ดแวร์ -- ค่าถูกเขียนโดยตรงลงใน RTC trim register ของ MCU ดูคู่มืออ้างอิง STM32 / i.MX RT ที่เกี่ยวข้องสำหรับการเข้ารหัสที่แน่นอน
STM32 เท่านั้น¶
- info() int¶
คืนค่าสถานะการเริ่มต้น RTC ที่แพ็คเป็นจำนวนเต็ม 32 บิต
16 บิตต่ำให้จำนวนมิลลิวินาทีที่ RTC ใช้ในการเริ่มต้นเมื่อบูตล่าสุด บิต 0x10000 ถูกตั้งค่าเมื่อออสซิลเลเตอร์ LSE (low-speed external) ล้มเหลวและ RTC ถอยกลับไปใช้ LSI (internal RC) บิต 0x20000 ถูกตั้งค่าเมื่อ RTC ถูกเริ่มต้นใหม่เมื่อบูต (แทนที่จะต่อเนื่องจากการเปิดเครื่องก่อนหน้า)
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
กำหนดการอินเทอร์รัปต์ wakeup แบบเป็นรอบ
timeout_msคือช่วงเวลาในมิลลิวินาที RTC จะทำงานทุกๆtimeout_msและสามารถปลุก MCU จากmachine.lightsleep()/machine.deepsleep()ได้ ส่งNoneเพื่อปิดใช้งานตัวจับเวลา wakeupcallbackจะถูกเรียกจาก wakeup IRQ; ส่งNoneเพื่อไม่ติดตั้งคอลแบ็ก (wakeup จะยังคงทำงานและปลุก MCU)
mimxrt + alif เท่านั้น¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
ตั้งค่า RTC alarm
idเลือกช่อง alarm (ใช้ALARM0)timeเป็นจำนวนเต็มมิลลิวินาทีในอนาคต หรือ datetime tuple ส่งrepeat=Trueเพื่อตั้งค่าใหม่โดยอัตโนมัติหลังจากแต่ละครั้งที่ทำงาน (ใช้ได้เฉพาะเมื่อtimeเป็นจำนวนมิลลิวินาที)บน alif รองรับเฉพาะรูปแบบจำนวนมิลลิวินาทีเท่านั้น
mimxrt เท่านั้น¶
- alarm_left(alarm_id: int = 0, /) int¶
คืนค่าจำนวนมิลลิวินาทีที่เหลือก่อนที่ alarm ที่ระบุโดย
alarm_idจะทำงาน
- cancel(alarm_id: int = 0, /) None¶
นามแฝงที่เลิกใช้แล้วสำหรับ
alarm_cancel()เก็บไว้เพื่อความเข้ากันได้ย้อนหลัง กำหนดให้ลบใน MicroPython 2.0
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
ลงทะเบียนคอลแบ็กสำหรับ RTC alarm
triggerต้องเป็นALARM0-- แหล่ง IRQ เดียวที่รองรับhandlerจะถูกเรียกด้วยอินสแตนซ์RTCเมื่อ alarm ทำงานhard=Trueลงทะเบียนตัวจัดการอินเทอร์รัปต์แบบ hard (ไม่จัดสรร heap ในคอลแบ็ก)wakeถูกยอมรับเพื่อความเข้ากันได้ข้ามพอร์ตแต่ไม่มีผล
ค่าคงที่¶
- ALARM0: int¶
ตัวระบุสำหรับช่อง alarm เดียวของ RTC ส่งไปยัง
alarm(),alarm_left(),alarm_cancel()และอาร์กิวเมนต์triggerของirq()ใช้ได้เฉพาะพอร์ต mimxrt เท่านั้น