65
ATmega103(L)
0945G–09/01
Figure 43.
Sampling Received Data
When the stop bit enters the receiver, the majority of the three samples must be one to
accept the stop bit. If two or more samples are logical “0”s, the Framing Error (FE) flag in
the UART Status Register (USR) is set when the received byte is transferred to UDR.
Before reading the UDR register, the user should always check the FE bit to detect
Framing Errors. FE is cleared when UDR is read.
Whether or not a valid stop bit is detected at the end of a character reception cycle, the
data is transferred to UDR and the RXC flag in USR is set. UDR is in fact two physically
separate registers, one for transmitted data and one for received data. When UDR is
read, the Receive Data register is accessed, and when UDR is written, the Transmit
Data register is accessed. If 9-bit data word is selected (the CHR9 bit in the UART Con-
trol Register, UCR is set), the RXB8 bit in UCR is loaded with bit 9 in the Transmit Shift
register when data is transferred to UDR.
If, after having received a character, the UDR register has not been accessed since the
last receive, the OverRun (OR) flag in USR is set. This means that the new data trans-
ferred to the shift register could not be transferred to UDR and is lost. The OR bit is
buffered, and is available when the valid data byte in UDR has been read. The user
should always check the OR after reading from the UDR register in order to detect any
overruns if the baud rate is high or CPU load is high.
When the RXEN bit in the UCR register is cleared (zero), the receiver is disabled. This
means that the PE0 pin can be used as a general I/O pin. When RXEN is set, the UART
Receiver will be connected to PE0, which is forced to be an input pin regardless of the
setting of the DDE0 bit in DDRE. When PE0 is forced to input by the UART, the
PORTE0 bit can still be used to control the pull-up resistor on the pin.
When the CHR9 bit in the UCR register is set, transmitted and received characters are 9
bits long plus start and stop bits. The 9th data bit to be transmitted is the TXB8 bit in
UCR register. This bit must be set to the wanted value before a transmission is initated
by writing to the UDR register.
START BIT
D0
D1
D2
D3
D4
D5
D6
D7
STOP BIT
RXD
RECEIVER
SAMPLING