Typischer I2C-Code, wie er so im Netz zu finden ist, keine Auswertung von ACK/NAK. Sonst würde man sehen, daß das Control Byte falsch ist, siehe FIGURE 1-2 im Datenblatt. Eine I2C Adresse hat 7 Bit und liegt in den oberen 7 Bit des Control Bytes, machmal auch Address Byte (nicht Adresse) genannt. Das unterste Bit ist das R/W Bit. Eine I2C Übertagung beginnt immer mit
i2cStart()
i2cWrite((I2CAdress << 1) | R/Wbit)
Wenn bis hierher alles stimmt, die Adresse richtig ist und der Bus am Anfang Idle war, gibts ein ACK und man kann weiter machen. Ansonsten Stop schicken und den Service rufen.
MfG Klebwax
P.S. Bei jedem Write sollte ACK/NAK ausgewertet werden, ansonsten ist alles wie das Rufen in einen dunklen Wald. Niemand weiß, ob man je gehört worden ist.
Lesezeichen