ATmega640/1280/1281/2560/2561
USART MSPIM Initialization
The USART in MSPIM mode has to be initialized before any communication can take
place. The initialization process normally consists of setting the baud rate, setting mas-
ter mode of operation (by setting DDR_XCKn to one), setting frame format and enabling
the Transmitter and the Receiver. Only the transmitter can operate independently. For
interrupt driven USART operation, the Global Interrupt Flag should be cleared (and thus
interrupts globally disabled) when doing the initialization.
Note:
To ensure immediate initialization of the XCKn output the baud-rate register (UBRRn)
must be zero at the time the transmitter is enabled. Contrary to the normal mode USART
operation the UBRRn must then be written to the desired value after the transmitter is
enabled, but before the first transmission is started. Setting UBRRn to zero before
enabling the transmitter is not necessary if the initialization is done immediately after a
reset since UBRRn is reset to zero.
Before doing a re-initialization with changed baud rate, data mode, or frame format, be
sure that there is no ongoing transmissions during the period the registers are changed.
The TXCn Flag can be used to check that the Transmitter has completed all transfers,
and the RXCn Flag can be used to check that there are no unread data in the receive
buffer. Note that the TXCn Flag must be cleared before each transmission (before
UDRn is written) if it is used for this purpose.
The following simple USART initialization code examples show one assembly and one
C function that are equal in functionality. The examples assume polling (no interrupts
enabled). The baud rate is given as a function parameter. For the assembly code, the
baud rate parameter is assumed to be stored in the r17:r16 registers.
233
2549A–AVR–03/05