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 :~
ICh nehme mal an du meinst PCF8574T und PCF8574AT, ist die SO16 Version. Nach dem Datenblatt hat die PCF8574AT 0x7x als Slaveadresse.
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.
Marius Dege schrieb: > wie kommst du auf 0x7x; guckst du hier: http://www.mikrocontroller.net/articles/Port-Expander_PCF8574
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 :(.
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.
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!
Hi >Siehe Datenblatt http://www.nxp.com/documents/data_sheet/PCF8574.pdf Warum kein aktuelles Datenblatt? Da stehen die Adressen sogar als Text: http://www.nxp.com/documents/data_sheet/PCF8574_PCF8574A.pdf MfG Spess
@ Marius Dege (2009marius15) >Die AT laufen einwandfrei; auf die gleiche Hardware habe ich einmal A >und AT-Versionen eingelötet; Es gibt keine A und AT, nur T oder AT, beide haben das SO16 Gehäuse. T und AT unterscheiden sich nur in den Basisadressen. Steht auch so im Artikel.
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.
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.