Datasheet

Table Of Contents
210
ATmega640/V-1280/V-1281/V-2560/V-2561/V [DATASHEET]
2549Q–AVR–02/2014
Note: 1. See “About Code Examples” on page 10.
The function simply waits for data to be present in the receive buffer by checking the RXCn Flag, before reading
the buffer and returning the value.
22.7.2 Receiving Frames with 9 Data Bits
If 9-bit characters are used (UCSZn=7) the ninth bit must be read from the RXB8n bit in UCSRnB before reading
the low bits from the UDRn. This rule applies to the FEn, DORn and UPEn Status Flags as well. Read status from
UCSRnA, then data from UDRn. Reading the UDRn I/O location will change the state of the receive buffer FIFO
and consequently the TXB8n, FEn, DORn and UPEn bits, which all are stored in the FIFO, will change.
The following code example shows a simple USART receive function that handles both nine bit characters and the
status bits.
Assembly Code Example
(1)
USART_Receive:
; Wait for data to be received
lds r17, UCSRnA
sbrs r17, RXCn
rjmp USART_Receive
; Get and return received data from buffer
lds r16, UDRn
ret
C Code Example
(1)
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRnA & (1<<RXCn)) )
;
/* Get and return received data from buffer */
return UDRn;
}