class RTC -- ساعة الوقت الحقيقي¶
تتحكم الفئة RTC في طرفية ساعة الوقت الحقيقي المدمجة في وحدة المعالجة الدقيقة، والتي تحفظ وقت الساعة الجدارية عبر عمليات إعادة الضبط.
على كاميرات 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())
البانيات (Constructors)¶
- class machine.RTC(id: int = 0)¶
تُرجع نسخة
RTCالمفردة. يُقبلidللتوافق بين المنافذ لكن0فقط صالح على المنافذ التي يدعمها OpenMV (كل كاميرا لها RTC واحد).الدوال أدناه مجمّعة حسب منافذ OpenMV التي تكشف عنها.
الدوال المتوفرة في جميع منافذ OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
الحصول على التاريخ والوقت الحاليين أو ضبطهما.
بدون وسيطة، تُرجع القيمة الحالية كصف من 8 عناصر
(year, month, day, weekday, hour, minute, second, subseconds).مع وسيطة واحدة من صف ذي 8 عناصر، تضبط 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 عناصر(year, month, day, weekday, hour, minute, second, subseconds).على كاميرات OpenMV Cam المعتمدة على STM32 لا تأخذ
init()أي وسيطة: فهي تعيد تشغيل طرفية RTC، تاركةً التاريخ / الوقت الحالي دون مساس.
STM32 فقط¶
- info() int¶
تُرجع حالة بدء تشغيل RTC المعبّأة كعدد صحيح من 32 بت.
تعطي الـ 16 بت المنخفضة عدد المللي ثانية التي استغرقتها RTC للبدء عند آخر إقلاع. تُضبط البتة 0x10000 عندما يفشل مذبذب LSE (الخارجي منخفض السرعة) وترتد RTC إلى LSI (الـ RC الداخلي). تُضبط البتة 0x20000 عندما تُهيأ RTC حديثاً عند الإقلاع (بدلاً من الاستمرار من التشغيل السابق).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
جدولة مقاطعة إيقاظ دورية.
timeout_msهو الفترة بالمللي ثانية. تنطلق RTC كلtimeout_msويمكنها إيقاظ وحدة المعالجة الدقيقة منmachine.lightsleep()/machine.deepsleep(). مرّرNoneلتعطيل مؤقت الإيقاظ.يُستدعى
callbackمن مقاطعة الإيقاظ؛ مرّرNoneلعدم تثبيت أي دالة رد نداء (سينطلق الإيقاظ ويوقظ وحدة المعالجة الدقيقة مع ذلك).
mimxrt + alif فقط¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
تسليح منبه RTC. يختار
idقناة المنبه (استخدمALARM0).timeهو إما عدد صحيح من المللي ثانية في المستقبل، أو صف 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¶
تسجيل دالة رد نداء لمنبه RTC.
يجب أن يكون
triggerهوALARM0-- مصدر المقاطعة الوحيد المدعوم. يُستدعىhandlerمع نسخةRTCعند انطلاق المنبه.hard=Trueيسجّل معالج مقاطعة عتادية (دون تخصيص ذاكرة في الكومة داخل دالة رد النداء). يُقبلwakeللتوافق بين المنافذ لكن ليس له تأثير.
الثوابت¶
- ALARM0: int¶
معرّف قناة المنبه الوحيدة لـ RTC. مرّره إلى
alarm()وalarm_left()وalarm_cancel()ووسيطةtriggerفيirq(). منفذ mimxrt فقط.