Hallo Michael,
ich habe die Pull-Up-Widerstände nicht eingebaut, dafür habe ich aber die internen Pull-Up-Wid. vom Mikrocontroller aktiviert. Also meine SDA und SCL Leitungen sind im Ruhezustand immer auf High.
Also das ist mein Code:
int start_i2c(unsigned char address) //* Senden der I²C Startbedingung + Addresse des anzusprechenden Geäts
{
/*
* Returnwerte:
* 0 -> Startbedinung erfolgreich gesendet
* 1 -> Probleme beim sender der Start-Bedinung
* 2 -> Probleme beim senden der Addresse
* bzw. kein Device mit der angegebenen Addresse
*/

//Senden der START Bedingung
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);

//Warten bis TWI Bedingung gesendet wurde
while(!(TWCR & (1<<TWINT)));

//TWI Status berprfen
if((TWSR & 0xF != TW_START) return 1;

//Adresse des anzusprechenden Devices senden
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);

//Warten bis TWI Bedingung gesendet wurde
while(!(TWCR & (1<<TWINT)));

//TWI Status überprüfen
if((TWSR & 0xF != TW_MT_SLA_ACK) return 2;

return 0;
}

void stop_i2c(void) /*Senden der I2C Stopbedingung*/
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
}

void write_i2c(unsigned char data) /* Daten an das addressierte Gerät schicken */
{
//Daten an das addressierte Devices senden
TWDR = data;
TWCR = (1<<TWINT) | (1<<TWEN);

//Warten bis TWI Bedingung gesendet wurde
while(!(TWCR & (1<<TWINT)));
}

unsigned char read_i2c_ack(void) /* Daten vom addressierten Gerät lesen und mit ACK best„tigen
Für alle Bytes bis auf das letzte zu übertragende Byte*/
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);

//Warten bis TWI Bedingung gesendet wurde
while(!(TWCR & (1<<TWINT)));

//TWI Status berprfen
if((TWSR & 0xF == TW_MR_DATA_ACK) return TWDR;
return 1;
}

unsigned char read_i2c_nack(void) /* Für das letzte zu übertragende Byte */
{

TWCR = (1<<TWINT) | (1<<TWEN);

//Warten bis TWI Bedingung gesendet wurde
while(!(TWCR & (1<<TWINT)));

//TWI Status berprfen
if((TWSR & 0xF == TW_MR_DATA_NACK) return TWDR;
return 2;
}

und ich gehe davon aus, dass die Ack-Bits nach dem senden der Adresse und des Befehlsbytes ankommen da auch meine Stoppbedingung ausgeführt wird und keine Fehler gemeldet werden.
Gruss, Miro