Datasheet

Table Of Contents
Assembly Code Example C Example Comments
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.
7
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.
ldi r16, (1<<TWINT)|(1<<TWEN)|
(1<<TWSTO)
out TWCR, r16
TWCR = (1<<TWINT)|
(1<<TWEN)|(1<<TWSTO);
Transmit STOP condition.
24.6.1. Transmission Modes
The TWI can operate in one of four major modes:
Master Transmitter (MT)
Master Receiver (MR)
Slave Transmitter (ST)
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 use the following abbreviations:
S START condition
Rs REPEATED START condition
R Read bit (high level at SDA)
W Write bit (low level at SDA)
A Acknowledge bit (low level at SDA)
A Not acknowledge bit (high level at SDA)
Data 8-bit data byte
P STOP condition
SLA Slave Address
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 details of the following serial transfer are
given below in the Status Code table for each mode. Note that the prescaler bits are masked to zero in
these tables.
Atmel ATmega32A [DATASHEET]
Atmel-8155I-ATmega32A_Datasheet_Complete-08/2016
231