клас RTC – годинник реального часу

Клас RTC керує вбудованим периферійним пристроєм годинника реального часу мікроконтролера, який зберігає астрономічний час між перезавантаженнями.

На 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)

Повернути одиночний екземпляр 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).

На STM32 OpenMV cams 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 викликається з IRQ пробудження; передайте 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 – єдине підтримуване джерело IRQ. handler викликається з екземпляром RTC, коли спрацьовує будильник. hard=True реєструє обробник апаратного переривання (без виділення пам’яті в зворотному виклику). wake приймається для сумісності між портами, але не має ефекту.

Константи

ALARM0: int

Ідентифікатор єдиного каналу будильника RTC. Передається до alarm(), alarm_left(), alarm_cancel() та аргументу trigger irq(). Лише для порту mimxrt.