7 transmission modes, Atmega128rfa1 – Rainbow Electronics ATmega128RFA1 User Manual

Page 387

Advertising
background image

387


8266A-MCU Wireless-12/09

ATmega128RFA1

Assembly Code Example

C Example

Comments

4 wait2:

in r16,TWCR

sbrs r16,TWINT

rjmp wait2

while (!(TWCR & (1<<TWINT)));

Wait for TWINT Flag set. This
indicates that the SLA+W has been
transmitted, and ACK/NACK has
been received.

in r16,TWSR

andi r16, 0xF8

cpi r16, MT_SLA_ACK

brne ERROR

if ((TWSR & 0xF8) != MT_SLA_ACK)

ERROR();

Check value of TWI Status Register.
Mask prescaler bits. If status different
from MT_SLA_ACK go to ERROR

5

ldi r16, DATA

out TWDR, r16

ldi r16, (1<<TWINT)|(1<<TWEN)

out TWCR, r16

TWDR = DATA;

TWCR = (1<<TWINT) | (1<<TWEN);

Load DATA into TWDR Register.
Clear TWINT bit in TWCR to start
transmission of data

6 wait3:

in r16,TWCR

sbrs r16,TWINT

rjmp wait3

while (!(TWCR & (1<<TWINT)));

Wait for TWINT Flag set. This
indicates that the DATA has been
transmitted, and ACK/NACK has
been received.

in r16,TWSR

andi r16, 0xF8

cpi r16, MT_DATA_ACK

brne ERROR

if ((TWSR & 0xF8) != MT_DATA_ACK)

ERROR();

Check value of TWI Status Register.
Mask prescaler bits. If status different
from MT_DATA_ACK go to ERROR

7

ldi r16,(1<<TWINT)|(1<<TWEN)|

(1<<TWSTO)

out TWCR, r16

TWCR = (1<<TWINT)|(1<<TWEN)|
(1<<TWSTO);

Transmit STOP condition

25.7 Transmission Modes

The TWI can operate in one of four major modes. These are named Master Transmitter
(MT), Master Receiver (MR), Slave Transmitter (ST) and Slave Receiver (SR). Several
of these modes can be used in the same application. As an example, the TWI can use
MT mode to write data into a TWI EEPROM, MR mode to read the data back from the
EEPROM. If other masters are present in the system, some of these might transmit
data to the TWI, and then SR mode would be used. It is the application software that
decides which modes are legal.

The following sections describe each of these modes. Possible status codes are
described along with figures detailing data transmission in each of the modes. These
figures contain the following abbreviations:

S:

START condition

Rs:

REPEATED START condition

R:

Read bit (high level at SDA)

W:

Write bit (low level at SDA)

Data: 8-bit data byte

P:

STOP condition

SLA: Slave Address

A:

Acknowledge bit (low level at SDA)

A

_

:

Not acknowledge bit (high level at SDA)

In

Figure 25-12 on

page 389 to

Figure 25-18 on

page 399 circles are used to indicate

that the TWINT Flag is set. The numbers in the circles show the status code held in
TWSR, with the prescaler bits masked to zero. At these points, actions must be taken
by the application to continue or complete the TWI transfer. The TWI transfer is
suspended until the TWINT Flag is cleared by software.

When the TWINT Flag is set, the status code in TWSR is used to determine the
appropriate software action. For each status code, the required software action and

Advertising