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، تاركةً التاريخ / الوقت الحالي دون مساس.

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

الحصول على إزاحة معايرة RTC أو ضبطها (تُستخدم للتعويض عن خطأ تردد البلورة).

النطاق المقبول ووحدات value خاصة بالعتاد -- تُكتب القيمة مباشرة في سجل ضبط RTC في وحدة المعالجة الدقيقة. راجع دليل مرجع STM32 / i.MX RT ذي الصلة لمعرفة الترميز الدقيق.

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.

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#

تسجيل دالة رد نداء لمنبه RTC.

يجب أن يكون trigger هو ALARM0 -- مصدر المقاطعة الوحيد المدعوم. يُستدعى handler مع نسخة RTC عند انطلاق المنبه. hard=True يسجّل معالج مقاطعة عتادية (دون تخصيص ذاكرة في الكومة داخل دالة رد النداء). يُقبل wake للتوافق بين المنافذ لكن ليس له تأثير.

الثوابت#

ALARM0: int#

معرّف قناة المنبه الوحيدة لـ RTC. مرّره إلى alarm() وalarm_left() وalarm_cancel() ووسيطة trigger في irq(). منفذ mimxrt فقط.