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, ומשאיר את התאריך / השעה הנוכחיים ללא שינוי.
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מופעלת.
- 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 בלבד.