Zitat Zitat von modtronic Beitrag anzeigen
Morgen

Das war auch gestern ein Gedanke..ich wollte mal mit einem PCF 8574 testen ob der Port überhaupt läuft
Laut Oskar wurden aber Daten übertragen

Jetzt ist ebend meine Frage zu den Registern

Laut eines Beitrages im Netz soll ich das so machen
i2c_start();
i2c_wirte (0x20); <-- hier sollte ACK/NAK ausgewertet werden
i2c_write(0x00);
i2c_write(0x00);
i2c:stop();
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.