The Start-of-Frame Detection feature enables the USART to
wake up from Standby sleep mode upon data reception. The Start-of-Frame Detector can
unintentionally be triggered when the Start-of-Frame Detection Enable (SFDEN) bit in the USART
Control B (USARTn.CTRLB) register is set, and the device is in Active mode. If the Receive
Data (RXDATA) registers are read while receiving new data, the Receive Complete Interrupt Flag
(RXCIF) in the USARTn.STATUS register is cleared. This triggers the Start-of-Frame Detector
and falsely detects the next falling edge as a start bit. When the Start-of-Frame Detector
detects a start condition, the frame reception is restarted, resulting in corrupt received
data. Note that the USART Receive Start Interrupt Flag (RXSIF) always is ‘0
’
when in Active mode. No interrupt will be triggered.
Work Around
Disable Start-of-Frame Detection by writing ‘0
’ to the Start-of-Frame
Detection Enable (SFDEN) bit in the USART Control B (USARTn.CTRLB) register when the device
is in Active mode. Re-enable it by writing the bit to ‘1
’ before
transitioning to Standby sleep mode. This work around depends on a protocol preventing a new
incoming frame when re-enabling Start-of-Frame Detection. Re-enabling Start-of-Frame
Detection, while a new frame is already incoming, will result in corrupted received
data.
Affected Silicon Revisions