Assembly Code Example(1)
USART_MSPIM_Transfer:
; Wait for empty transmit buffer
sbis UCSRnA, UDREn
rjmp USART_MSPIM_Transfer
; Put data (r16) into buffer, sends the data
out UDRn,r16
; Wait for data to be received
USART_MSPIM_Wait_RXCn:
sbis UCSRnA, RXCn
rjmp USART_MSPIM_Wait_RXCn
; Get and return received data from buffer
in r16, UDRn
ret
C Code Example(1)
unsigned char USART_Receive( void )
{
/* Wait for empty transmit buffer */
while ( !( UCSRnA & (1<<UDREn)) );
/* Put data into buffer, sends the data */
UDRn = data;
/* Wait for data to be received */
while ( !(UCSRnA & (1<<RXCn)) );
/* Get and return received data from buffer */
return UDRn;
}
Note:
1. The example code assumes that the part specific header file is included. For I/O Reg-
isters 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. Typ-
ically "LDS" and "STS" combined with "SBRS", "SBRC", "SBR", and "CBR".
Transmitter and Receiver
Flags and Interrupts
The RXCn, TXCn, and UDREn flags and corresponding interrupts in USART in MSPIM
mode are identical in function to the normal USART operation. However, the receiver
error status flags (FE, DOR, and PE) are not in use and is always read as zero.
Disabling the Transmitter or
Receiver
The disabling of the transmitter or receiver in USART in MSPIM mode is identical in
function to the normal USART operation.
USART MSPIM Register
Description
The following section describes the registers used for SPI operation using the USART.
USART MSPIM I/O Data
Register - UDRn
The function and bit description of the USART data register (UDRn) in MSPI mode is
identical to normal USART operation. See “USART I/O Data Register n– UDRn” on
page 180.
194
ATmega48/88/168
2545D–AVR–07/04