Forum: Mikrocontroller und Digitale Elektronik pcf8574p


von Geri (Gast)


Lesenswert?

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,

von Klaus...(Norad) (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.