Atmega128(l) – Rainbow Electronics ATmega128L User Manual

Page 201

Advertising
background image

201

ATmega128(L)

2467B–09/01

Figure 94. Interfacing the Application to the TWI in a Typical Transmission

1.

The first step in a TWI transmission is to transmit a START condition. This is
done by writing a specific value into TWCR, instructing the TWI hardware to
transmit a START condition. Which value to write is described later on. However,
it is important that the TWINT bit is set in the value written. Writing a one to
TWINT clears the flag. The TWI will not start any operation as long as the
TWINT bit in TWCR is set. Immediately after the application has cleared TWINT,
the TWI will initiate transmission of the START condition.

2.

When the START condition has been transmitted, the TWINT flag in TWCR is
set, and TWSR is updated with a status code indicating that the START condition
has successfully been sent.

3.

The application software should now examine the value of TWSR, to make sure
that the START condition was successfully transmitted. If TWSR indicates other-
wise, the application software might take some special action, like calling an
error routine. Assuming that the status code is as expected, the application must
load SLA+W into TWDR. Remember that TWDR is used both for address and
data. After TWDR has been loaded with the desired SLA+W, a specific value
must be written to TWCR, instructing the TWI hardware to transmit the SLA+W
present in TWDR. Which value to write is described later on. However, it is
important that the TWINT bit is set in the value written. Writing a one to TWINT
clears the flag. The TWI will not start any operation as long as the TWINT bit in
TWCR is set. Immediately after the application has cleared TWINT, the TWI will
initiate transmission of the address packet.

4.

When the address packet has been transmitted, the TWINT flag in TWCR is set,
and TWSR is updated with a status code indicating that the address packet has
successfully been sent. The status code will also reflect whether a slave
acknowledged the packet or not.

5.

The application software should now examine the value of TWSR, to make sure
that the address packet was successfully transmitted, and that the value of the
ACK bit was as expected. If TWSR indicates otherwise, the application software
might take some special action, like calling an error routine. Assuming that the
status code is as expected, the application must load a data packet into TWDR.

START

SLA+W

A

Data

A

STOP

1. Application
writes to TWCR
to initiate
transmission of
START

2. TWINT set.
Status code indicates
START condition sent

4. TWINT set.
Status code indicates
SLA+W sendt, ACK
received

6. TWINT set.
Status code indicates
data sent, ACK received

3. Check TWSR to see if
START was sent. Application
loads SLA+W into TWDR, and
loads appropriate control signals
into TWCR, making sure that
TWINT is written to one.

5. Check TWSR to see if SLA+W
was sent and ACK received.
Application loads data into TWDR,
and loads appropriate control signals
into TWCR, making sure that TWINT
is written to one.

7. Check TWSR to see if data
was sent and ACK received.
Application loads appropriate
control signals to send STOP
into TWCR, making sure that
TWINT is written to one

TWI bus

Indicates

TWINT set

Application

Action

TWI

Hardware

Action

Advertising