Dear all,

ich arbeite mich gerade in die Materie ein, mehrere Controller per I2C kommunizieren zu lassen. Die Rollenverteilung ist einfach: Ein Master der nur sendet und 2-3 Slaves, die nur empfangen.

Der Befehl I2cwbyte funktioniert schon mal super, im Oszillogramm sehe ich, dass der Master perfekte Clock- und Data-Signale einschließlich Taktzyklus für das ACK-Bit generiert.

Auf der Slave-Seite muss dann ja der Befehl I2crbyte dazugehören, allerdings frage ich mich gerade woher der Slave weiß, wann er diesen Befehl ausführen soll. Schließlich kann der Code im Slave ja nicht wissen, wann der Master seine Daten schickt... Und was ich ebenfalls nicht verstehe: Was ist, wenn das ACK-Bit des Slaves ausbleibt, weil er z.B. gerade anderweitig beschäftigt ist? Ich habe verstanden dass dieses ACK-Bit dem Master signalisiert, dass der Slave korrekt durch seine Adresse angesprochen wurde - aber was wenn nicht? Dann würde es ja keinen Sinn machen, gleich mit I2cwbyte weitere Daten auf den Bus zu schicken...

Viellecht kann mir ja jemand mal vom Schlauch runterhelfen, auf dem ich gerade zu stehen scheine...