Files
2021-01-18 16:31:09 +01:00

99 lines
2.4 KiB
Markdown

---
title: "RTC"
aliases:
- firmwareapi/pycom/machine/rtc.html
- firmwareapi/pycom/machine/rtc.md
- chapter/firmwareapi/pycom/machine/rtc
---
The RTC is used to keep track of the date and time.
## Quick Usage Example
```python
from machine import RTC
rtc = RTC()
rtc.init((2014, 5, 1, 4, 13, 0, 0, 0))
print(rtc.now())
```
## Constructors
### class machine.RTC([id=0, ...])
Create an RTC object. See init for parameters of initialisation.
```python
# id of the RTC may be set if multiple are connected. Defaults to id = 0.
rtc = RTC(id=0)
```
## Methods
### rtc.init([datetime=None, source=RTC.INTERNAL_RC])
Initialise the RTC. The arguments are:
* `datetime` when passed it sets the current time. It is a tuple of the form: `(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])`. Without argument, it will not reset the previously set time.
* `source` selects the oscillator that drives the RTC. The options are
* `RTC.INTERNAL_RC`: Internal RC resonator
* `RTC.XTAL_32KHZ`: External 32KHz crystal
For example:
```python
# for 2nd of February 2017 at 10:30am (TZ 0)
rtc.init((2017, 2, 28, 10, 30, 0, 0, 0))
```
> `tzinfo` is ignored by this method. Use `time.timezone` to achieve similar results.
### rtc.ntp_sync(server, [update_period=3600, backup_server])
Inits the RTC and sets up up automatic fetch and update the time using NTP (SNTP).
* `server` is the URL of the NTP server. Can be set to `None` to disable the periodic updates.
* `update_period` is the number of seconds between updates. Shortest period is 15 seconds.
* `backup_server` is the URL of the backup NTP server. Can be set to `None` to disable the periodic updates.
Can be used like:
```python
rtc.ntp_sync("pool.ntp.org") # this is an example. You can select a more specific server according to your geographical location
```
### rtc.now()
Get get the current `datetime` tuple as `(year, month, day, hour, minute, second, usecond, None)`
### rtc.synced()
Returns `True` if the last `ntp_sync` has been completed, `False` otherwise.
### rtc.memory([data])
Reads RTC memory contents or write data in passed Buffer in to RTC memory. The buffer has space to store 2048 bytes.
Example:
```python
rtc = RTC()
rtc.memory(b'10101010') # writes data in RTC memory
rtc.memory()
```
Output:
```python
b'10101010'
```
## Constants
* Clock source: `RTC.INTERNAL_RC`, `RTC.XTAL_32KHZ`