ATmega88PA Automotive Atmel Corporation, ATmega88PA Automotive Datasheet - Page 186

no-image

ATmega88PA Automotive

Manufacturer Part Number
ATmega88PA Automotive
Description
Manufacturer
Atmel Corporation
20.7.1
20.7.2
186
Atmel ATmega48PA/88PA/168PA [Preliminary]
Receiving Frames with 5 to 8 Data Bits
Receiving Frames with 9 Data Bits
The Receiver starts data reception when it detects a valid start bit. Each bit that follows the
start bit will be sampled at the baud rate or XCKn clock, and shifted into the Receive Shift Reg-
ister until the first stop bit of a frame is received. A second stop bit will be ignored by the
Receiver. When the first stop bit is received, i.e., a complete serial frame is present in the
Receive Shift Register, the contents of the Shift Register will be moved into the receive buffer.
The receive buffer can then be read by reading the UDRn I/O location.
The following code example shows a simple USART receive function based on polling of the
Receive Complete (RXCn) Flag. When using frames with less than eight bits the most signifi-
cant bits of the data read from the UDRn will be masked to zero. The USART has to be
initialized before the function can be used.
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.
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
C Code Example
Note:
USART_Receive:
unsigned char USART_Receive( void )
{
}
; Wait for data to be received
in r16, UCSRnA
sbrs r16, UDREn
rjmp USART_Receive
; Get and return received data from buffer
in
ret
/* Wait for data to be received */
while ( !(UCSRnA & (1<<RXCn)) )
/* Get and return received data from buffer */
return UDRn;
1.
See ”About Code Examples” on page 7.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and
“SBI” instructions must be replaced with instructions that allow access to extended I/O.
Typically “LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
r16, UDRn
;
(1)
(1)
9223B–AVR–09/11

Related parts for ATmega88PA Automotive