beautypg.com

The 2-wire serial interface status register - twsr, The 2-wire serial interface data register - twdr, Atmega163(l) – Rainbow Electronics ATmega163L User Manual

Page 71

background image

ATmega163(L)

71

The TWCR is used to control the operation of the 2-wire Serial Interface. It is used to enable the 2-wire Serial Interface, to
initiate a master access by applying a START condition to the bus, to generate a receiver acknowledge, to generate a stop
condition, and to control halting of the bus while the data to be written to the bus are written to the TWDR. It also indicates
a write collision if data is attempted written to TWDR while the register is inaccessible.

The 2-wire Serial Interface Status Register - TWSR

Bits 7..3 - TWS: 2-wire Serial Interface Status

These 5 bits reflect the status of the 2-Wire Serial Interface logic and the 2-wire Serial Bus.

Bits 2..0 - Res: Reserved bits

These bits are reserved in ATmega163 and will always read as zero

The TWSR is read only. It contains a status code which reflects the status of the 2-wire Serial Interface logic and the 2-wire
Serial Bus. There are 26 possible status codes. When TWSR contains $F8, no relevant state information is available and
no 2-wire Serial Interface interrupt is requested. A valid status code is available in TWSR one CPU clock cycle after the 2-
wire Serial Interface interrupt flag (TWINT) is set by hardware and is valid until one CPU clock cycle after TWINT is cleared
by software. Table 32 to Table 36 give the status information for the various modes.

The 2-wire Serial Interface Data Register - TWDR

Bits 7..0 - TWD: 2-Wire Serial Interface Data Register

These eight bits constitute the next data byte to be transmitted, or the latest data byte received on the 2-wire Serial Bus.

In transmit mode, TWDR contains the next byte to be transmitted. In receive mode, the TWDR contains the last byte
received. It is writeable while the 2-wire Serial Interface is not in the process of shifting a byte. This occurs when the 2-wire
Serial Interface interrupt flag (TWINT) is set by hardware. Note that the data register cannot be initialized by the user before
the first interrupt occurs. The data in TWDR remain stable as long as TWINT is set. While data is shifted out, data on the
bus is simultaneously shifted in. TWDR always contains the last byte present on the bus, except after a wake up from ADC
Noise Reduction Mode, Power Down Mode, or Power Save Mode by the 2-wire Serial Interface interrupt. For example, in
the case of a lost bus arbitration, no data is lost in the transition from Master to Slave. Handling of the ACK flag is controlled
automatically by the 2-wire Serial Interface logic, the CPU cannot access the ACK bit directly.

The 2-wire Serial Interface (Slave) Address Register - TWAR

Bits 7..1 - TWA: 2-wire Serial Interface (Slave) Address Register

These seven bits constitute the slave address of the 2-wire Serial Bus unit.

Bit 0 - TWGCE: 2-wire Serial Interface General Call Recognition Enable bit

This bit enables, if set, the recognition of the General Call given over the 2-wire Serial Bus.

The TWAR should be loaded with the 7-bit slave address (in the seven most significant bits of TWAR) to which the 2-wire
Serial Interface will respond when programmed as a slave transmitter or receiver, and not needed in the master modes.
The LSB of TWAR is used to enable recognition of the general call address ($00). There is an associated address compar-

Bit

7

6

5

4

3

2

1

0

$01 ($21)

TWS7

TWS6

TWS5

TWS4

TWS3

-

-

-

TWSR

Read/Write

R

R

R

R

R

R

R

R

Initial value

1

1

1

1

1

0

0

0

Bit

7

6

5

4

3

2

1

0

$03 ($23)

TWD7

TWD6

TWD5

TWD4

TWD3

TWD2

TWD1

TWD0

TWDR

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial value

1

1

1

1

1

1

1

1

Bit

7

6

5

4

3

2

1

0

$02 ($22)

TWA6

TWA5

TWA4

TWA3

TWA2

TWA1

TWA0

TWGCE

TWAR

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial value

1

1

1

1

1

1

1

0