Back to Micropython

class RTC -- real time clock

docs/library/machine.RTC.rst

1.28.03.0 KB
Original Source

.. currentmodule:: machine .. _machine.RTC:

class RTC -- real time clock

The RTC is an independent clock that keeps track of the date and time.

Example usage::

rtc = machine.RTC()
rtc.datetime((2020, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())

Constructors

.. class:: RTC(id=0, ...)

Create an RTC object. See init for parameters of initialization.

Methods

.. method:: RTC.datetime([datetimetuple])

Get or set the date and time of the RTC.

With no arguments, this method returns an 8-tuple with the current date and time. With 1 argument (being an 8-tuple) it sets the date and time.

The 8-tuple has the following format:

   (year, month, day, weekday, hours, minutes, seconds, subseconds)

The meaning of the subseconds field is hardware dependent.

.. method:: RTC.init(datetime)

Initialise the RTC. Datetime is a tuple of the form:

  ``(year, month, day, hour, minute, second, microsecond, tzinfo)``

All eight arguments must be present. The microsecond and tzinfo values are currently ignored but might be used in the future.

Availability: CC3200, ESP32, MIMXRT, SAMD. The rtc.init() method on the stm32 and renesas-ra ports just (re-)starts the RTC and does not accept arguments.

.. method:: RTC.now()

Get get the current datetime tuple.

Availability: WiPy.

.. method:: RTC.deinit()

Resets the RTC to the time of January 1, 2015 and starts running it again.

.. method:: RTC.alarm(id, time, *, repeat=False)

Set the RTC alarm. Time might be either a millisecond value to program the alarm to current time + time_in_ms in the future, or a datetimetuple. If the time passed is in milliseconds, repeat can be set to True to make the alarm periodic.

.. method:: RTC.alarm_left(alarm_id=0)

Get the number of milliseconds left before the alarm expires.

.. method:: RTC.alarm_cancel(alarm_id=0)

Cancel a running alarm.

The mimxrt port also exposes this function as RTC.cancel(alarm_id=0), but this is scheduled to be removed in MicroPython 2.0.

.. method:: RTC.irq(*, trigger, handler=None, wake=machine.IDLE)

Create an irq object triggered by a real time clock alarm.

  - ``trigger`` must be ``RTC.ALARM0``
  - ``handler`` is the function to be called when the callback is triggered.
  - ``wake`` specifies the sleep mode from where this interrupt can wake
    up the system.

.. method:: RTC.memory([data])

RTC.memory(data) will write data to the RTC memory, where data is any object which supports the buffer protocol (including bytes, bytearray, memoryview and array.array). RTC.memory() reads RTC memory and returns a bytes object.

Data written to RTC user memory is persistent across restarts, including :ref:soft_reset and machine.deepsleep().

The maximum length of RTC user memory is 2048 bytes by default on esp32, and 492 bytes on esp8266.

Availability: esp32, esp8266 ports.

Constants

.. data:: RTC.ALARM0

irq trigger source