PCA9555 Frage

#7007996
Lesenswert?

Hallo, ich schlage mich gerade mit einen PCA9555 rum
Ich habe alle beide Ports als Eingänge gecodet

//PCAaddr = $27   = 100111
TWIoutC(PCAaddr, $6, $FF);   //FF=input 00=Output
TWIoutC(PCAaddr, $7, $FF);   //FF=input 00=Output

Wenn ich den ersten Eingang von Port 0 auf Masse ziehe, bekomme
ich eine 1 als ergebnis.

Wenn ich den ersten Eingang von Port 0 auf Plus 3,3Volt ziehe,
bekomme ich eine 0 zurück

TWIoutC(PCAaddr, InputPort0);
TWIinpC(PCAaddr, byt);

Sind die eingänge von den Ports nur auf Masse bezogen ?
Ich verstehe es nicht, es müsste doch Port0_pin0 = VCC = 1 sein
und nicht eine 0


mfg Schuby
#7008032
Lesenswert?

Hallo, das habe ich mir auch schon gedacht, ist es aber nicht
Ich habe jetzt den Pin1 von Port0 auf Masse gezogen.
ich bekomme eine 2 zurück.

TWIoutC(PCAaddr, $4, $00);   //
TWIoutC(PCAaddr, $5, $00);   //
TWIoutC(PCAaddr, $6, $FF);   //FF=input 00=Output
TWIoutC(PCAaddr, $7, $FF);   //FF=input 00=Output

Hierbei bekomme ich eine 253 zurück.

TWIoutC(PCAaddr, $4, $FF);   //
TWIoutC(PCAaddr, $5, $FF);   //
TWIoutC(PCAaddr, $6, $FF);   //FF=input 00=Output
TWIoutC(PCAaddr, $7, $FF);   //FF=input 00=Output

Und damit eine 2

Tja ich verstehe es auch nicht mehr.


mfg schuby
#7009013
Lesenswert?

Ich hätte noch vermutet, das ein floatender Eingang merkwürdige Effekte 
hat, aber die Eingänge des PCA9555 haben interne Pullups.

Und mit den Pullups müssten alle offenen Eingänge 1 liefern.

Kannst du die anderen Register korrekt lesen?
Oder ist das ein chinesischer Klon, der die Polarity-Inversion-Register 
falsch herum implementiert hat?
#7009244
Lesenswert?

Hallo Clemens,
alle beide Ports sind auf eine Stiftleiste gelegt,
es sind keine pullup Widerstände angeschlossen.

Wenn ich die beiden Ports als Ausgang Programmiere
ist alles ok, ich kann ein Bit setzen und der Ausgang wird high.

Nur wenn ich alle beide Ports auf Eingang Programmiere, bekomme ich 
einen
wert wenn ich den Eingang auf Masse ziehe. Ich verstehe es nicht mehr.
Ich glaube schon fast du hast recht und ich habe so einen China
Chip. Das ist nicht mein erster I2C Chip den ich Programmiere.

PS: Register zb. Config Reg. 6 oder 7 kann ich auslesen

mfg Schuby

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren