Ein Slave muß ständig auf dem Bus mitlauschen. Wenn da eine Startcondition zu sehen ist, weiß er daß die nächsten 7 Bit die Slaveadresse sind. Er hat dann 1 Bit Zeit um festzustellen, ob er angesprochen wird. Daß RW braucht er sich nur für später zu merken. Beim nächsten Takt vom Master zieht er SDA auf low und der Master liest das als ACK. Tut der Slave. das nicht, aus welchem Grund auch immer, ist es ein NAK und der Master muß die Übertragung abbrechen. Wenn der Slave einen kleinen Aufschub braucht, kann er die SCL-Leitung auf low halten, bis er sich entschieden hat, was er antworten will.
Das ist richtig, es interessiert aber eigentlich Niemand. Bei fast jedem Codestück, das ich hier im Forum gesehen habe, wird ACK/NAK niemals ausgewertet sondern munter an einen nicht antwortenden Slave weitergesendet.aber was wenn nicht? Dann würde es ja keinen Sinn machen, gleich mit I2cwbyte weitere Daten auf den Bus zu schicken...
MfG Klebwax
Lesezeichen