Datasheet
161
ATmega48PA/88PA/168PA [DATASHEET]
9223F–AVR–04/14
20.6.3 Transmitter Flags and Interrupts
The USART transmitter has two flags that indicate its state: USART data register empty (UDREn) and transmit complete
(TXCn). Both flags can be used for generating interrupts.
The data register empty (UDREn) Flag indicates whether the transmit buffer is ready to receive new data. This bit is set
when the transmit buffer is empty, and cleared when the transmit buffer contains data to be transmitted that has not yet been
moved into the shift register. For compatibility with future devices, always write this bit to zero when writing the UCSRnA
register.
When the data register empty interrupt enable (UDRIEn) bit in UCSRnB is written to one, the USART data register empty
interrupt will be executed as long as UDREn is set (provided that global interrupts are enabled). UDREn is cleared by writing
UDRn. When interrupt-driven data transmission is used, the data register empty interrupt routine must either write new data
to UDRn in order to clear UDREn or disable the data register empty interrupt, otherwise a new interrupt will occur once the
interrupt routine terminates.
The transmit complete (TXCn) flag bit is set one when the entire frame in the transmit shift register has been shifted out and
there are no new data currently present in the transmit buffer. The TXCn flag bit is automatically cleared when a transmit
complete interrupt is executed, or it can be cleared by writing a one to its bit location. The TXCn flag is useful in half-duplex
communication interfaces (like the RS-485 standard), where a transmitting application must enter receive mode and free the
communication bus immediately after completing the transmission.
When the transmit compete interrupt enable (TXCIEn) bit in UCSRnB is set, the USART transmit complete interrupt will be
executed when the TXCn Flag becomes set (provided that global interrupts are enabled). When the transmit complete
interrupt is used, the interrupt handling routine does not have to clear the TXCn Flag, this is done automatically when the
interrupt is executed.
20.6.4 Parity Generator
The parity generator calculates the parity bit for the serial frame data. When parity bit is enabled (UPMn1 = 1), the
transmitter control logic inserts the parity bit between the last data bit and the first stop bit of the frame that is sent.
20.6.5 Disabling the Transmitter
The disabling of the transmitter (setting the TXEN to zero) will not become effective until ongoing and pending transmissions
are completed, i.e., when the transmit shift register and transmit buffer register do not contain data to be transmitted. When
disabled, the transmitter will no longer override the TxDn pin.
20.7 Data Reception – The USART Receiver
The USART receiver is enabled by writing the receive enable (RXENn) bit in the UCSRnB register to one. When the receiver
is enabled, the normal pin operation of the RxDn pin is overridden by the USART and given the function as the receiver’s
serial input. The baud rate, mode of operation and frame format must be set up once before any serial reception can be
done. If synchronous operation is used, the clock on the XCKn pin will be used as transfer clock.
20.7.1 Receiving Frames with 5 to 8 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 register 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.