I2C und ACK / NACK / 9. Impuls:
Stimmt:
Auf dem I2C-Bus muss der Empfänger jedes Byte mit ACK oder NACK quittieren. Deshalb werden für jedes Byte 9 Bits übertragen: 8 Bits vom Sender zum Empfänger, und ein Bit (nämlich entweder ACK oder NACK) vom Empfänger zum Sender.
9. Impuls nur beim WRITE:
Das Basic Programm gilt für einen I2C Bus Master: Das ist derjenige, der die SCL Leitung bedient, hier die CC1.
Wenn der Master was sendet (Aufruf WRITE), schickt er zuerst seine 8 Daten-Bits jeweils mit einem SCL Puls raus, und gibt dann den 9. Puls zum Einlesen der Quittung vom Empfänger.
In diesem Programm wird allerdings die Quittung des Empfängers (absichtlich) nicht ausgwertet.
Wenn man die Quittung auswerten will, dürfte es nicht heissen
PULSE SCL
sondern müsste so ähnlich heissen wie
DEACT SDA 'SDA ist jetzt Eingang
SCL = ON
Daten = SDA ' Quittung lesen
SCL = OFF
Beim READ gibt's natürlich auch einen 9. Impuls; nur sieht man den nicht in dem BASIC-Ausschnitt oben:
Der Master muss nach dem Lesen eines Bytes entweder "ACK" oder "NACK" aufrufen, und genau da wird dann das 9. (quittungs-)Bit mit PULSE übertragen.
Lesezeichen