I2C PCF8574T schaltet permanent - warum auch immer?!

Gast #3496411
Lesenswert?

Hallo Forumsmitglieder;

ich habe ein Problem mit den I²C-Expandern PCF8574A(T).

Die AT laufen einwandfrei; auf die gleiche Hardware habe ich einmal A 
und AT-Versionen eingelötet; da die AT einwandfrei auf den 
Adressbereichen funktionieren schließe ich einen allg. Hardwarefehler 
aus; da ich selber ätze kann natürlich mal eine Leiterbahn unterbrochen 
sein; deswegen habe ich auch das alles nachgemessen - funktioniert.

Probleme machen mir die A-Versionen, komischerweise.
Diese Adressen habe ich ermittelt (wird dann beim Senden nach links 
geschoben um ein Bit, das letzte ist 0==>write). Software muss auch 
funktionieren, da ich einfach nur die Adressen getauscht habe.

//Adressen der I/0 Expander (0-7 ist normal; 8-15 ist A-Prefix)
#define I2C_ADRS0  0x40
#define I2C_ADRS1  0x42
#define I2C_ADRS2  0x44
#define I2C_ADRS3  0x46
#define I2C_ADRS4  0x48
#define I2C_ADRS5  0x4B
#define I2C_ADRS6  0x4C
#define I2C_ADRS7  0x4E
#define I2C_ADRS8  0x38  //Ab hier AT
#define I2C_ADRS9  0x39
#define I2C_ADRS10  0x3A
#define I2C_ADRS11  0x3B
#define I2C_ADRS12  0x3C
#define I2C_ADRS13  0x3D
#define I2C_ADRS14  0x3E
#define I2C_ADRS15  0x3F

Die Adressen habe ich vergeben.

Ich habe bei allen A-Karten den gleichen Fehler; sobald eine Spannung 
anliegt, werden alle I/O Leitungen auf High gelegt, ob ich da nun was 
sende oder nicht spielt keine Rolle; genausowenig ob ich versuche diese 
auszuschalten (es ist auch egal, wie ich A0-A2 verschalte, also die 
Adresse).

Hoffe auf baldige Antwort :~
Gast #3496602
Lesenswert?

Hallo Hubert,

die PCF 8574AT funktionieren, die 8574T machen es nicht.

ich habe für die AT-Versionen folgende Adressen:

#define I2C_ADRS8  0x38  //Ab hier AT
#define I2C_ADRS9  0x39
#define I2C_ADRS10  0x3A
#define I2C_ADRS11  0x3B
#define I2C_ADRS12  0x3C
#define I2C_ADRS13  0x3D
#define I2C_ADRS14  0x3E
#define I2C_ADRS15  0x3F

die müssen dann noch nach links geschoben werden; wie kommst du auf 
0x7x; ich verwende übrigends die I²C PCFs von NXP.
#3497391
Lesenswert?

Marius Dege schrieb:
> Ich werde es testen mit 0x7x, aber lt. Nxp Datenblatt sind die AT
> Versionen 0111A1A2A3 R/W, so komme ich auf die oberen Adressen für den
> AT, welcher auch funktioniert.  Die ohne A-Prefix sind 0100A3A2A1 R/W,
> also 0x20 aufsteigend was aber auch nicht klappt :(.

Das zählst du aber mächtig falsch.
0111 ergibt 7
A1A2A3R/W ergibt wenn Ax nicht gesetzt 0 oder 1 je nach R/W

Es wird nichts nach links geschoben.
Gast #3497571
Lesenswert?

Siehe Datenblatt http://www.nxp.com/documents/data_sheet/PCF8574.pdf

Seite 9, Punkt 7.1, Fig. 10

Beachte die unterschiedliche Länge der geschweiften Klammer!

Gib beide Adressen mal in einen BIN-HEX Rechner ein.

Richtiges Beispiel für PCF8574A: 01110000 -> 0x70
Deine falsche Rechnung für PCF8574A: 0111000 -> 0x38

Beachte die längere Adresse für die A-Version!
Gast #3539547
Lesenswert?

Ich danke euch! Meinte natürlich die T und AT Versionen in SMD.
1
#define I2C_ADRS0  0x20
2
#define I2C_ADRS1  0x21
3
#define I2C_ADRS2  0x22
4
#define I2C_ADRS3  0x23
5
#define I2C_ADRS4  0x24
6
#define I2C_ADRS5  0x25
7
#define I2C_ADRS6  0x26
8
#define I2C_ADRS7  0x27
9
#define I2C_ADRS8  0x38  //Ab hier AT
10
#define I2C_ADRS9  0x39
11
#define I2C_ADRS10  0x3A
12
#define I2C_ADRS11  0x3B
13
#define I2C_ADRS12  0x3C
14
#define I2C_ADRS13  0x3D
15
#define I2C_ADRS14  0x3E
16
#define I2C_ADRS15  0x3F

Die Adressen sind es nun - die AT habe ich richtig berechnet gehabt. Die 
normalen Adressen sind von 0x20-0x27; alle Adressen MÜSSEN noch 
geschoben und 0/1 angehängt werden.

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