Und zwar muss ich trotz der Überprüfung des Statusregisters nach dem Start und nach dem Senden warten, damit alles funktioniert (_delay_ms (1)
Ich habe die Startfunktion ein wenig umgeschrieben, aber das bringt auch nichts
Mit welcher Geschwindigkeit betreibst du denn nun den Bus? (SCL-Frequenz)?
Evtl musst du auch mal das Datenblatt von deinem Sensor durchschauen, ob in dieser Hinsicht etwas von Verzögerungen drinsteht. Auch die maximale Taktfrequenz vom Bus für den Sensor müsste da drinstehen.
Von I2C-EEPROMs weiß ich z.B., dass sie ungefähr 1ms zum Schreiben von einem Byte benötigen.
Also nach dem Senden muss ich erst auf TWINT warten und dann auf das ACK ?
In dem Moment, wo TWINT entsprechend gesetzt wurde, ist die komplette Datenübertragung abgeschlossen. Ob das ACK dabei empfangen wurde, kannst du dann ja auslesen. Auf das ACK musst du in diesem Sinne nicht "warten".
Ich würde den Controller auch nicht in eine Endlosschleife schicken zwecks ACK. Falls kein ACK kommt, würde ich die Übertragung abbrechen. Sonst wartet der Prozessor ewig wenn der Sensor mal nicht angeschlossen ist. Besser ist dann eine Art Fehlerbehandlung.

Grüße, Bernhard