Datasheet

Writing a generic clock peripheral core register
Reading a read-synchronized peripheral core register
Reading the register that is being written (and thus triggered the synchronization)
Peripheral core registers without read-synchronization will remain static once they have been written and
synchronized, and can be read while the synchronization is ongoing without causing the peripheral bus to
stall. APB registers can also be read while the synchronization is ongoing without causing the peripheral
bus to stall.
14.3.1.3 Read-Synchronization
Reading a read-synchronized peripheral core register will cause the peripheral bus to stall immediately
until the read-synchronization is complete. STATUS.SYNCBUSY will not be set. Refer to 14.3.1.8
Synchronization Delay for details on the synchronization delay. Note that reading a read-synchronized
peripheral core register while STATUS.SYNCBUSY is one will cause the peripheral bus to stall twice; first
because of the ongoing synchronization, and then again because reading a read-synchronized core
register will cause the peripheral bus to stall immediately.
14.3.1.4 Completion of synchronization
The user can either poll STATUS.SYNCBUSY or use the Synchronisation Ready interrupt (if available) to
check when the synchronization is complete. It is also possible to perform the next read/write operation
and wait, as this next operation will be started once the previous write/read operation is synchronized
and/or complete.
14.3.1.5 Read Request
The read request functionality is only available to peripherals that have the Read Request register
(READREQ) implemented. Refer to the register description of individual peripheral chapters for details.
To avoid forcing the peripheral bus to stall when reading read-synchronized peripheral core registers, the
read request mechanism can be used.
Basic Read Request
Writing a '1' to the Read Request bit in the Read Request register (READREQ.RREQ) will request read-
synchronization of the register specified in the Address bits in READREQ (READREQ.ADDR) and set
STATUS.SYNCBUSY. When read-synchronization is complete, STATUS.SYNCBUSY is cleared. The
read-synchronized value is then available for reading without delay until READREQ.RREQ is written to '1'
again.
The address to use is the offset to the peripheral's base address of the register that should be
synchronized.
Continuous Read Request
Writing a '1' to the Read Continuously bit in READREQ (READREQ.RCONT) will force continuous read-
synchronization of the register specified in READREQ.ADDR. The latest value is always available for
reading without stalling the bus, as the synchronization mechanism is continuously synchronizing the
given value.
SYNCBUSY is set for the first synchronization, but not for the subsequent synchronizations. If another
synchronization is attempted, i.e. by executing a write-operation of a write-synchronized register, the read
request will be stopped, and will have to be manually restarted.
Note: 
The continuous read-synchronization is paused in sleep modes where the generic clock is not running.
This means that a new read request is required if the value is needed immediately after exiting sleep.
SAM D21 Family
Clock System
© 2018 Microchip Technology Inc.
Datasheet Complete
DS40001882D-page 112