circuitpython/ports/nrf/modules
Martin Fischer 15574cd665 nrf: Add support for time.ticks_xxx functions using RTC1.
This commit adds time.ticks_ms/us support using RTC1 as the timebase.  It
also adds the time.ticks_add/diff helper functions.  This feature can be
enabled using MICROPY_PY_TIME_TICKS.  If disabled the system uses the
legacy sleep methods and does not have any ticks functions.

In addition support for MICROPY_EVENT_POLL_HOOK was added to the
time.sleep_ms(x) function, making this function more power efficient and
allows support for select.poll/asyncio.  To support this, the RTC's CCR0
was used to schedule a ~1msec event to wakeup the CPU.

Some important notes about the RTC timebase:

- Since the granularity of RTC1's ticks are approx 30usec, time.ticks_us is
not perfect, does not have 1us resolution, but is otherwise quite usable.
For tighter measurments the ticker's 1MHz counter should be used.

- time.ticks_ms(x) should *not* be called in an IRQ with higher prio than
the RTC overflow irq (3).  If so it introduces a race condition and
possibly leads to wrong tick calculations.

See #6171 and #6202.
2020-07-08 23:47:02 +10:00
..
ble nrf: Clean up source by removing tabs, trailing spaces, non-ASCII chars. 2019-08-28 13:34:45 +10:00
board all: Use MP_ERROR_TEXT for all error messages. 2020-04-05 15:02:06 +10:00
machine nrf: Add support for time.ticks_xxx functions using RTC1. 2020-07-08 23:47:02 +10:00
music all: Use MP_ERROR_TEXT for all error messages. 2020-04-05 15:02:06 +10:00
ubluepy all: Use MP_ERROR_TEXT for all error messages. 2020-04-05 15:02:06 +10:00
uos all: Remove commented-out include statements. 2020-04-23 11:24:15 +10:00
utime nrf: Add support for time.ticks_xxx functions using RTC1. 2020-07-08 23:47:02 +10:00