The PPI peripheral is supported via a specific API which lets you control the EVENT
and TASKs to trigger, both for individual and grouped channels.
When using channels, you should consider that some peripherals may use PPI internally
and some may be unavailable for further use. As a helper, if debug assertions are
enabled, calls to PPI API will check for a channel to actually be disabled when being
enabled and viceversa. This may help catch collisions in PPI use.
PWM
---
PWM is supported via standard driver. This means that more advanced features such as
complex sequences or waveform modes are not yet supported.
RNG
---
The RNG peripheral will be used to register a random/urandom device automatically, when
enabled.
TIMER
-----
The TIMER peripheral is exposed as standard timer.
RTC
---
The RTC peripheral is exposed as a standard timer, since it is really a low-power
timer, without any date handling capabilities.
WDT
---
The watchdog is supported via low-level API interface and also via standard watchdog
driver. The driver is written so as to handle an already running watchdog, which may
have been set by a bootloader.
BLE Support
===========
BLE is supported in nRF52 using Nordic's `SoftDevice Controller <https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfxlib/softdevice_controller/README.html>`_, using HCI interface. To enable BLE support
you need to call :c:func:`nrf52_sdc_initialize` on boot, which will initialize the BLE controller.
SDC support involves registering various high-priority zero-latency interrupts and thus requires
enabling BASEPRI and high-priority interrupt support. On supported boards, a sample ``sdc`` configuration