Zitat Zitat von Sauerbruch Beitrag anzeigen
... allerdings frage ich mich gerade woher der Slave weiß, wann er diesen Befehl ausführen soll.
Immer dann, wenn er adressiert wurde. Das entscheidet entweder die Hardware-Mimik des Slave-Controllers, sofern man ihn als (ideal: interruptgetriebenen) Slave konfiguriert hat - oder die Firmware.
Zitat Zitat von Sauerbruch Beitrag anzeigen
... Schließlich kann der Code im Slave ja nicht wissen, wann der Master seine Daten schickt...
Naja, Interrupt oder eben Polling. Mehr Auswahl gibt es meines Wissens nicht.
Zitat Zitat von Sauerbruch Beitrag anzeigen
... Und was ich ebenfalls nicht verstehe: Was ist, wenn das ACK-Bit des Slaves ausbleibt, weil er z.B. gerade anderweitig beschäftigt ist? ...
Dann bleibt die Kommunikation stecken - ohne wenn und aber - so ist I2C spezifiziert. Abhilfe kann ein Timeout-Zähler und Warteschleifenabbruch schaffen.