Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
88
Добавлен:
15.06.2014
Размер:
7.54 Mб
Скачать

ATmega640/1280/1281/2560/2561

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. See “About Code Examples” on page 11.

23.5.1Transmitter 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.

23.5.2Disabling 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.

23.6USART MSPIM Register Description

The following section describes the registers used for SPI operation using the USART.

23.6.1UDRn – USART MSPIM I/O Data Register

The function and bit description of the USART data register (UDRn) in MSPI mode is identical to normal USART operation. See “UDRn – USART I/O Data Register n” on page 222.

237

2549P–AVR–10/2012

ATmega640/1280/1281/2560/2561

23.6.2UCSRnA – USART MSPIM Control and Status Register n A

Bit

7

6

5

4

3

2

1

0

 

 

RXCn

TXCn

UDREn

-

-

-

-

-

UCSRnA

 

 

 

 

 

 

 

 

 

 

Read/Write

R/W

R/W

R/W

R

R

R

R

R

 

Initial Value

0

0

0

0

0

1

1

0

 

• Bit 7 - RXCn: USART Receive Complete

This flag bit is set when there are unread data in the receive buffer and cleared when the receive buffer is empty (that is, does not contain any unread data). If the Receiver is disabled, the receive buffer will be flushed and consequently the RXCn bit will become zero. The RXCn Flag can be used to generate a Receive Complete interrupt (see description of the RXCIEn bit).

• Bit 6 - TXCn: USART Transmit Complete

This flag bit is set 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 (UDRn). 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 can generate a Transmit Complete interrupt (see description of the TXCIEn bit).

• Bit 5 - UDREn: USART Data Register Empty

The UDREn Flag indicates if the transmit buffer (UDRn) is ready to receive new data. If UDREn is one, the buffer is empty, and therefore ready to be written. The UDREn Flag can generate a Data Register Empty interrupt (see description of the UDRIE bit). UDREn is set after a reset to indicate that the Transmitter is ready.

• Bit 4:0 - Reserved Bits in MSPI mode

When in MSPI mode, these bits are reserved for future use. For compatibility with future devices, these bits must be written to zero when UCSRnA is written.

23.6.3UCSRnB – USART MSPIM Control and Status Register n B

Bit

7

6

5

4

3

2

1

0

 

 

RXCIEn

TXCIEn

UDRIE

RXENn

TXENn

-

-

-

UCSRnB

 

 

 

 

 

 

 

 

 

 

Read/Write

R/W

R/W

R/W

R/W

R/W

R

R

R

 

Initial Value

0

0

0

0

0

1

1

0

 

• Bit 7 - RXCIEn: RX Complete Interrupt Enable

Writing this bit to one enables interrupt on the RXCn Flag. A USART Receive Complete interrupt will be generated only if the RXCIEn bit is written to one, the Global Interrupt Flag in SREG is written to one and the RXCn bit in UCSRnA is set.

• Bit 6 - TXCIEn: TX Complete Interrupt Enable

Writing this bit to one enables interrupt on the TXCn Flag. A USART Transmit Complete interrupt will be generated only if the TXCIEn bit is written to one, the Global Interrupt Flag in SREG is written to one and the TXCn bit in UCSRnA is set.

238

2549P–AVR–10/2012

ATmega640/1280/1281/2560/2561

• Bit 5 - UDRIE: USART Data Register Empty Interrupt Enable

Writing this bit to one enables interrupt on the UDREn Flag. A Data Register Empty interrupt will be generated only if the UDRIE bit is written to one, the Global Interrupt Flag in SREG is written to one and the UDREn bit in UCSRnA is set.

• Bit 4 - RXENn: Receiver Enable

Writing this bit to one enables the USART Receiver in MSPIM mode. The Receiver will override normal port operation for the RxDn pin when enabled. Disabling the Receiver will flush the receive buffer. Only enabling the receiver in MSPI mode (that is, setting RXENn=1 and TXENn=0) has no meaning since it is the transmitter that controls the transfer clock and since only master mode is supported.

• Bit 3 - TXENn: Transmitter Enable

Writing this bit to one enables the USART Transmitter. The Transmitter will override normal port operation for the TxDn pin when enabled. The disabling of the Transmitter (writing TXENn to zero) will not become effective until ongoing and pending transmissions are completed, that is, 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 port.

• Bit 2:0 - Reserved Bits in MSPI mode

When in MSPI mode, these bits are reserved for future use. For compatibility with future devices, these bits must be written to zero when UCSRnB is written.

23.6.4UCSRnC – USART MSPIM Control and Status Register n C

Bit

7

6

5

4

3

2

1

0

 

 

UMSELn1

UMSELn0

-

-

-

UDORDn

UCPHAn

UCPOLn

UCSRnC

 

 

 

 

 

 

 

 

 

 

Read/Write

R/W

R/W

R

R

R

R/W

R/W

R/W

 

Initial Value

0

0

0

0

0

1

1

0

 

• Bit 7:6 - UMSELn1:0: USART Mode Select

These bits select the mode of operation of the USART as shown in Table 23-3. See “UCSRnC – USART Control and Status Register n C” on page 225 for full description of the normal USART operation. The MSPIM is enabled when both UMSELn bits are set to one. The UDORDn, UCPHAn, and UCPOLn can be set in the same write operation where the MSPIM is enabled.

Table 23-3. UMSELn Bits Settings

UMSELn1

UMSELn0

Mode

 

 

 

0

0

Asynchronous USART

 

 

 

0

1

Synchronous USART

 

 

 

1

0

(Reserved)

 

 

 

1

1

Master SPI (MSPIM)

 

 

 

• Bit 5:3 - Reserved Bits in MSPI mode

When in MSPI mode, these bits are reserved for future use. For compatibility with future devices, these bits must be written to zero when UCSRnC is written.

239

2549P–AVR–10/2012

ATmega640/1280/1281/2560/2561

• Bit 2 - UDORDn: Data Order

When set to one the LSB of the data word is transmitted first. When set to zero the MSB of the data word is transmitted first. Refer to “SPI Data Modes and Timing” on page 233 for details.

• Bit 1 - UCPHAn: Clock Phase

The UCPHAn bit setting determine if data is sampled on the leasing edge (first) or tailing (last) edge of XCKn. Refer to “SPI Data Modes and Timing” on page 233 for details.

• Bit 0 - UCPOLn: Clock Polarity

The UCPOLn bit sets the polarity of the XCKn clock. The combination of the UCPOLn and UCPHAn bit settings determine the timing of the data transfer. Refer to “SPI Data Modes and Timing” on page 233 for details.

23.6.5UBRRnL and UBRRnH – USART MSPIM Baud Rate Registers

The function and bit description of the baud rate registers in MSPI mode is identical to normal

USART operation. See “UBRRnL and UBRRnH – USART Baud Rate Registers” on page 227.

Table 23-4. Comparison of USART in MSPIM mode and SPI pins.

USART_MSPIM

SPI

Comment

 

 

 

TxDn

MOSI

Master Out only

 

 

 

RxDn

MISO

Master In only

 

 

 

XCKn

SCK

(Functionally identical)

 

 

 

 

 

(N/A)

 

 

 

Not supported by USART in MSPIM

 

SS

 

 

 

 

 

240

2549P–AVR–10/2012

Соседние файлы в папке Datasheets