beautypg.com

Atmega128rfa1 – Rainbow Electronics ATmega128RFA1 User Manual

Page 391

background image

391


8266A-MCU Wireless-12/09

ATmega128RFA1

Figure 25-13. Data Transfer in Master Receiver Mode

Device 1

MASTER

RECEIVER

Device 2

SLAVE

TRANSMITTER

Device 3

Device n

SDA

SCL

........

R1

R2

DEVDD

A START condition is sent by writing the following value to TWCR:

TWCR

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Value

1

X

1

0

X

1

0

X

TWEN must be written to one to enable the 2-wire Serial Interface, TWSTA must be
written to one to transmit a START condition and TWINT must be set to clear the
TWINT Flag. The TWI will then test the 2-wire Serial Bus and generate a START
condition as soon as the bus becomes free. After a START condition has been
transmitted, the TWINT Flag is set by hardware, and the status code in TWSR will be
0x08 (see

Table 25-4 on

page 392). In order to enter MR mode, SLA+R must be

transmitted. This is done by writing SLA+R to TWDR. Thereafter the TWINT bit should
be cleared (by writing it to one) to continue the transfer. This is accomplished by writing
the following value to TWCR:

TWCR

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Value

1

X

0

0

X

1

0

X

When SLA+R have been transmitted and an acknowledgement bit has been received,
TWINT is set again and a number of status codes in TWSR are possible. Possible
status codes in Master mode are 0x38, 0x40, or 0x48. The appropriate action to be
taken for each of these status codes is detailed in

Table 25-4 on

page 392. Received

data can be read from the TWDR Register when the TWINT Flag is set high by
hardware. This scheme is repeated until the last byte has been received. After the last
byte has been received, the MR should inform the ST by sending a NACK after the last
received data byte. The transfer is ended by generating a STOP condition or a repeated
START condition. A STOP condition is generated by writing the following value to
TWCR:

TWCR

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

value

1

X

0

1

X

1

0

X

A REPEATED START condition is generated by writing the following value to TWCR:

TWCR

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

TWIE

Value

1

X

1

0

X

1

0

X

After a repeated START condition (state 0x10) the 2-wire Serial Interface can access
the same Slave again, or a new Slave without transmitting a STOP condition. Repeated