class RTC – 실시간 클록

RTC 클래스는 MCU의 온칩 실시간 클록 주변장치를 제어하며, 이는 리셋 전반에 걸쳐 실제 시각(wall-clock time)을 유지합니다.

STM32 OpenMV Cam에서 machine.RTCpyb.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는 포트 간 호환성을 위해 허용되지만 OpenMV가 지원하는 포트에서는 0만 유효합니다(각 캠에는 하나의 RTC가 있습니다).

아래 메서드들은 어떤 OpenMV 포트가 이를 노출하는지에 따라 그룹화되어 있습니다.

모든 OpenMV 포트에서 사용 가능한 메서드

datetime(datetimetuple: tuple | None = None, /) tuple | None

현재 날짜와 시간을 가져오거나 설정합니다.

인자가 없으면 현재 값을 8-튜플 (year, month, day, weekday, hour, minute, second, subseconds)로 반환합니다.

단일 8-튜플 인자가 주어지면 RTC를 해당 값으로 설정합니다.

weekday는 STM32에서 1 = 월요일부터 7 = 일요일까지이고, mimxrt에서 0 = 월요일부터 6 = 일요일까지입니다. subseconds는 STM32에서 초의 소수 부분으로 1/256초 단위입니다. 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 캠에서 init()은 인자를 받지 않습니다: RTC 주변장치를 (재)시작하며, 현재 날짜/시간은 그대로 유지합니다.

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

RTC의 보정 오프셋(크리스털 주파수 오차를 보상하는 데 사용)을 가져오거나 설정합니다.

허용 범위와 value의 단위는 하드웨어별로 다릅니다 – 값은 MCU의 RTC 트림 레지스터에 직접 기록됩니다. 정확한 인코딩은 해당 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마다 발생하며 machine.lightsleep() / machine.deepsleep()에서 MCU를 깨울 수 있습니다. 웨이크업 타이머를 비활성화하려면 None을 전달하세요.

callback은 웨이크업 IRQ에서 호출됩니다. 콜백을 설치하지 않으려면 None을 전달하세요(웨이크업은 여전히 발생하여 MCU를 깨웁니다).

mimxrt + alif 전용

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

RTC 알람을 설정(arm)합니다. 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 알람에 대한 콜백을 등록합니다.

triggerALARM0이어야 합니다 – 지원되는 유일한 IRQ 소스입니다. handler는 알람이 발생할 때 RTC 인스턴스와 함께 호출됩니다. hard=True는 하드 인터럽트 핸들러를 등록합니다(콜백에서 힙 할당 없음). wake는 포트 간 호환성을 위해 허용되지만 효과가 없습니다.

상수

ALARM0: int

RTC의 단일 알람 채널에 대한 식별자입니다. alarm(), alarm_left(), alarm_cancel()irq()trigger 인자에 전달합니다. mimxrt 포트 전용입니다.