Ich bin mir nicht sicher ob die Register bzw der Ablauf zum Atmega passt. Müsste im Datenblatt nachschauen. Aber grundsätzlich steht im Datenblatt ein kleines Beispiel (im jeweiligen Kapitel).

Aber bei while wird nicht auf Fehler geprüft sondern ob das TWINT gesetzt ist, das wird gesetzt wenn die letzte Übertragung abgeschlossen ist. Das ist nötig damit man nicht versehentlich Daten die noch nicht gesendet wurden überschreibt.

Bin mir nicht sicher aber ich glaube das du zuerst das twcr Register beschreiben musst (aber ohne sta), danach while(...), twda register beschreiben und dann erst sta im twcr register. Die letzte while ist nicht nötig weil du nichts mehr sendest.

An deiner stelle würde ich aber wie im Datenblatt beschrieben (bzw in fertigen musterprogrammen im Internet) schauen wie der Ablauf ist.


Und das nächste mal ein Programm mit den Code Tags im Post integrieren, ist übersichtlicher.

MfG Hannes