class RTC – שעון זמן-אמת

המחלקה RTC שולטת בהתקן ההיקפי של שעון זמן-האמת המובנה ב-MCU, ששומר על זמן שעון-הקיר לאורך איפוסים.

במצלמות OpenMV Cam מסוג STM32 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 של RTC. id מתקבל לצורך תאימות בין-פורטית אך רק 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 = יום ראשון ב-mimxrt. subseconds הוא החלק השברי של השנייה ביחידות של 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).

במצלמות OpenMV מסוג STM32 init() אינו מקבל ארגומנט: הוא מפעיל (מחדש) את ההתקן ההיקפי של ה-RTC, ומשאיר את התאריך / השעה הנוכחיים ללא שינוי.

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

קבלה או הגדרה של היסט הכיול של ה-RTC (משמש לפיצוי על שגיאת תדר הגביש).

הטווח המתקבל והיחידות של value תלויים בחומרה – הערך נכתב ישירות לאוגר ה-trim של ה-RTC ב-MCU. ראו את מדריך ההתייחסות הרלוונטי של STM32 / i.MX RT לקידוד המדויק.

STM32 בלבד

info() int

מחזיר את סטטוס האתחול הארוז של ה-RTC כמספר שלם של 32 ביט.

16 הביטים הנמוכים נותנים את מספר אלפיות השנייה שלקח ל-RTC להתחיל באתחול האחרון. הביט 0x10000 מוגדר כאשר מתנד ה-LSE (low-speed external) נכשל וה-RTC חזר ל-LSI (RC פנימי). הביט 0x20000 מוגדר כאשר ה-RTC אותחל מחדש באתחול (במקום להמשיך מההפעלה הקודמת).

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

תזמון פסיקת התעוררות מחזורית.

timeout_ms הוא המחזור באלפיות שנייה. ה-RTC מופעל בכל timeout_ms ויכול להעיר את ה-MCU מ-machine.lightsleep() / machine.deepsleep(). העבירו None כדי לנטרל את טיימר ההתעוררות.

callback מופעל מ-IRQ ההתעוררות; העבירו None כדי לא להתקין שום callback (ההתעוררות עדיין תופעל ותעיר את ה-MCU).

mimxrt + alif בלבד

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

דריכת התראת ה-RTC. id בוחר את ערוץ ההתראה (השתמשו ב-ALARM0). time הוא מספר שלם של אלפיות שנייה בעתיד, או tuple של datetime. העבירו repeat=True כדי לדרוך מחדש אוטומטית אחרי כל הפעלה (תקף רק כאשר time הוא ספירת אלפיות שנייה).

ב-alif נתמכת רק הצורה של ספירת אלפיות השנייה.

mimxrt בלבד

alarm_left(alarm_id: int = 0, /) int

מחזיר את מספר אלפיות השנייה הנותרות לפני שההתראה המזוהה על ידי alarm_id מופעלת.

alarm_cancel(alarm_id: int = 0, /) None

ביטול התראה שנדרכה קודם לכן.

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

רישום callback עבור התראת ה-RTC.

trigger חייב להיות ALARM0 – מקור ה-IRQ היחיד הנתמך. handler מופעל עם מופע ה-RTC כאשר ההתראה מופעלת. hard=True רושם מטפל פסיקת-חומרה (ללא הקצאת heap ב-callback). wake מתקבל לצורך תאימות בין-פורטית אך אין לו השפעה.

קבועים

ALARM0: int

מזהה עבור ערוץ ההתראה היחיד של ה-RTC. העבירו ל-alarm(), alarm_left(), alarm_cancel() ולארגומנט trigger של irq(). פורט mimxrt בלבד.