Die oben beschriebenen Register beziehen sich auf den ATtiny2313.

Beim ATmega644P sieht das wieder etwas anders aus:
>siehe Datenblatt des ATmega644P ab Seite 209 (19. 2-wire Serial Interface).<
http://www.atmel.com/dyn/resources/p...nt/doc8011.pdf
Dort sind die Register TWSR (TWI Status Register) und TWCR (TWI Control Register) getrennt vom USI.

TWSR (TWI Status Register):
• Bits 7:3 – TWS: TWI Status
• Bit 2 – Res: Reserved Bit
• Bits 1:0 – TWPS: TWI Prescaler Bits

TWCR (TWI Control Register):
• Bit 7 – TWINT: TWI Interrupt Flag
• Bit 6 – TWEA: TWI Enable Acknowledge Bit
• Bit 5 – TWSTA: TWI START Condition Bit
• Bit 4 – TWSTO: TWI STOP Condition Bit
• Bit 3 – TWWC: TWI Write Collision Flag
• Bit 2 – TWEN: TWI Enable Bit
• Bit 1 – Res: Reserved Bit
• Bit 0 – TWIE: TWI Interrupt Enable


Beim ATmega128 sieht das wieder etwas anders aus:
>siehe Datenblatt des ATmega128A ab Seite 201 (21. Two-wire Serial Interface)<
http://www.atmel.com/dyn/resources/p...nt/doc8151.pdf
Dort sind die Register TWSR (TWI Status Register) und TWCR (TWI Control Register) wie beim ATmega644P aufgebaut.

In den Datenblättern findest du natürlich auch alle Befehle für die Programmierung in C.

Gruß
SpiekerChris