hi! Habe mit folgendem Quellcode bei der Porterweiterung PCF8574 ein problem: // write a byte to a pcf8574 I/O expander void i2c_8574_write(unsigned char kanal, unsigned char wert) { i2c_bus_start(); i2c_byte_write(kanal); // send DEVICE address //i2c_ack_slave(); //i2c_byte_write(0x00); //alles auf 0 setzen i2c_ack_slave(); // send the data i2c_byte_write(wert); // send BYTE i2c_bus_stop(); } Wo kann der fehler liegen, die Hardware ist korrekt, habe den Baustein 4 mal in einer Schaltung und irgendwie funktioniert er nicht Es ist immer ein Baustein, der der als erstes in der Software angesprochen wird auf low. Außer der P3 der ist immer high! Was mache ich falsch? mfg,
Naja! ich mach da gerade in ASM rum. Ich denke Du weisst das jeder I2C-Baustein eine Feste Adresse hat z.B. PCF8574 0100 gefolgt von der Hardware Adresse. Festeadresse Hardwareadresse z.B. 0100 0001 hier wird der Baustein mit der Adresse 1 angesprochen. Bausteine vom gleichen Typ müssen unterschiedliche Adressen haben. Schau dir mal den Anhang an man muss auch noch R/W auch entsprechend setzen. In der ASM Routine die ich habe wird zuerst die Hardware Adresse geladen und das Untere Nibble ausmaskiert. Dann um einmal nach links geschoben und danach wird mit der Festadresse verodert danach wird R/W bit gesetzt. Ob es dir weiterhileft weiss ich nicht. Klaus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.