PCA9548A Expander stören sich gegenseitig

OP #7667457
Lesenswert?

Hallo, ich nutze diese Expander an einem PicoW . Die Expander sind mit 0x72 und 0x73 Adressiert. Wenn ich nun beide Oled Expander parallel an den Pico W anschließe stören sich die Expander gegenseitig und der Pico findet keinen von beiden. Im Solo Betrieb ist alles heile Welt. Parallel dazugeschaltet I/O Expander haben keinen Einfluß auf die oled Expander. Der Pico wird über Rocrail (Moba Steuerung) angesteuert. RR gibt auch die Anfangsadresse von 0x72 vor. Wie kann man die gegenseitige Störung verhindern?

#7667462
Lesenswert?

Thomas K. schrieb:

ich nutze diese Expander an einem PicoW . Die Expander sind mit 0x72 und 0x73 Adressiert.

Sicher? Hast du ALLE Adress-Pins suaber auf VCC oder GND gelegt?

Wenn ich nun beide Oled Expander parallel an den Pico W anschließe stören sich die Expander gegenseitig und der Pico findet keinen von beiden. Im Solo Betrieb ist alles heile Welt.

Mit DIESEN Adressen?

#7667697
Lesenswert?

Falk B. schrieb:

Wenn ich nun beide Oled Expander parallel an den Pico W anschließe stören sich die Expander gegenseitig und der Pico findet keinen von beiden. Im Solo Betrieb ist alles heile Welt.

Mit DIESEN Adressen?

Du hast Falks Frage nicht beantwortet. Bist du sicher, dass du beide so ansprechen kannst, einzeln?

Und: Legst du am Schluss 0x72 auf den Bus, oder 0xe4? Überleg dir was passiert, wenn du den Wert um eins nach links schiebst und das R/nW Bit einfügst.

#7667862
Lesenswert?

Steve van de Grens schrieb:

Hier sind Schaltplan und Doku von dem Board: https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/downloads

Ahhhh, MOMENT! Wie hat denn der OP seine Board angeschlossen? Das Ding ist ein I2C Multipelexer, welcher den I2C Bus, der ihn selber steuert, auf einen oder mehrere der acht Ausgänge schalten kann. Sowas macht man meistens, wenn man viele I2C Slaves hat, welche die gleiche, unveränderliche Adresse haben und man trotzdem viele davon an einen I2C Bus hängen will.

Was ist denn an den Ausgängen des Multiplexers angeschlossen? Wenn da mehr als ein Ausgang aktiv ist, kann es sein, daß sich da was verklemmt.

(Firma: Gast) #7667868
Lesenswert?

Thomas K. schrieb:

Wenn ich nun beide Oled Expander parallel an den ...

Ich habe immer noch nicht verstanden, was ein OLED Expander ist.

Aber davon mal abgesehen: Wenn man I2C Schnittstellen in betrieb nehmen will, oder dort debuggen muss, sind folgende Werkzeuge sinnvoll, bzw. wichtig. Oszi und LA. Das Oszilloskop zeigt dir die Signalform. Solange die Mist ist, braucht man auf keiner anderen Baustelle buddeln. Das Protokoll kann man dann mit dem Logikanalyser untersuchen.

Natürlich gibts auch beides in einem Gerät. Ist halt eine Frage der Vorlieben und Kosten.

OP #7668001
Lesenswert?

Hallo der Oled Expander erlaubt bis zu 8 Oled LED Display´s anzusteuern. Rocrail erlaubt bis zu 16 Oled Display´s mit 2 Expandern mit den Adressen 0x72, 0x73 anzusteuern. An einem Pico Um zu testen habe ich mir mal die Scoopy Software auf das Handy gepackt und einen Pico W entsprechend eingerichtet. (Ozzy Software). Beides funzt. Gehe ich mit dem Messkabel jetzt am Pico der die Multiplexer verwaltet an den SDA oder SLC Anschluß dann stürzt der Pico ab. Das beide Expander im solo Betrieb funktionieren kann man in Rocrail auslesen.

#7668008
Lesenswert?

Thomas K. schrieb:

bis zu 8 Oled LED Display´s anzusteuern

Bitte keine Deppenapostrophe. Siehe http://www.deppenapostroph.info

Thomas K. schrieb:

PCA9548A Expander

Thomas K. schrieb:

beide Oled Expander

Ich frage mich warum die Worte OLED und Expander auf keiner der 30 Seiten im Datenblatt des PCA9548A vorkommen, da müssen die Datenblatt-Schreiber beim Hersteller etwas falsch gemacht haben.

#7668015
Lesenswert?

Wastl schrieb:

Ich frage mich warum die Worte OLED und Expander auf keiner der 30 Seiten im Datenblatt des PCA9548A vorkommen, da müssen die Datenblatt-Schreiber beim Hersteller etwas falsch gemacht haben.

Der OP ist ein wenig begriffstutzig und auch faul. Die OLED Displays hängen hinter den I2C MUXen (PCA9548A). Ein Schaltplan sowie Bild vom REALEN Aufbau wären sehr hilfreich.

#7668031
Lesenswert?

Thomas K. schrieb:

Die Expander sind mit 0x72 und 0x73 Adressiert.

Sicher nicht! Jeder MULTIPLEXER hat 2 Adressen. Eine Read-Adresse und eine Write-Adresse. Und die sind sicher nicht 0x72 und 0x73!

Felix A. schrieb:

Du hast Falks Frage nicht beantwortet. Bist du sicher, dass du beide so ansprechen kannst, einzeln?

Und: Legst du am Schluss 0x72 auf den Bus, oder 0xe4? Überleg dir was passiert, wenn du den Wert um eins nach links schiebst und das R/nW Bit einfügst.

(Firma: Gast) #7668039
Lesenswert?

Max M. schrieb:

Sicher nicht! Jeder MULTIPLEXER hat 2 Adressen. Eine Read-Adresse und eine Write-Adresse. Und die sind sicher nicht 0x72 und 0x73!

I2C Dinger, zumindest diese, haben eine 7 Bit Adresse und ein r/W Bit. Das r/w Bit stecht zwar im selben Byte, ist aber nicht Teil der Adresse.

So steht es in vielen Datenblättern, so handelt es Arduino Wire ab. Und viele weitere.

Ja, ich weiß, dass einige meinen das r/w Bit würde zur Adresse gehören, ist aber meiner Ansicht nach falsch.

Gast #7668041
Lesenswert?

Thomas K. schrieb:

Die Expander sind mit 0x72 und 0x73 Adressiert.

Max M. schrieb:

Sicher nicht! Jeder MULTIPLEXER hat 2 Adressen. Eine Read-Adresse und eine Write-Adresse. Und die sind sicher nicht 0x72 und 0x73!

Doch, das stimmt schon so. Schau ins Datenblatt!

DIe Adresse besteht aus 7 Bits. Unterscheidung zwischen Read und Write gibt das R/W Bit vor, das nicht zur Adresse gehört.

Bei einem Chip hat er nur A1 auf High gelegt, das ergibt die Adresse 1110010 = 0x72. Beim anderen sind A0 und A1 auf High, also 1110011 = 0x73.

Thomas K. schrieb:

Im Solo Betrieb ist alles heile Welt.

Was die Adressen bestätigt.

Angehängte Dateien:
#7668045
Lesenswert?

Max M. schrieb:

Thomas K. schrieb:

Die Expander sind mit 0x72 und 0x73 Adressiert.

Sicher nicht! Jeder MULTIPLEXER hat 2 Adressen. Eine Read-Adresse und eine Write-Adresse. Und die sind sicher nicht 0x72 und 0x73!

Das ist eine Frage der Terminologie. Es gibt da zwei Sichtweisen:

  • 8bit-Adresse, die R/W enthält, damit hat jedes Gerät dann zwei unterschiedliche Adressen für Read/Write – so sehen das Programmierer gerne
  • 7bit-Adresse und ein zusätzliches R/W-bit an der niederwertigsten Stelle, damit hat ein Gerät dann eine logische Adresse – so findet man das in vielen Datenblättern der Hersteller, die da zwischen der Slave-Address und dem Address-Byte, das man auf den Bus schickt, unterscheiden.

0x72 und 0x73 sind eben die Slave-Address-Werte und nicht die Address-Bytes, die da auf den Bus gehen.

#7668054
Lesenswert?

Arduino F. schrieb:

Das r/w Bit stecht zwar im selben Byte, ist aber nicht Teil der Adresse.

So steht es in vielen Datenblättern,

Nicht so in dem Von NXP

Steve van de Grens schrieb:

Max M. schrieb:

Sicher nicht! Jeder MULTIPLEXER hat 2 Adressen. Eine Read-Adresse und eine Write-Adresse. Und die sind sicher nicht 0x72 und 0x73!

Doch, das stimmt schon so. Schau ins Datenblatt!

Du verinkst einen Auschnitt aus dem Datenblatt, bist aber nicht inder Lage zu verstehen was da steht!

The last bit of the slave address defines the operation to be performed

Das R/W-Bit ist Teil der Addresse!!!

Angehängte Dateien:
Gast #7668058
Lesenswert?

Max M. schrieb:

Das R/W-Bit ist Teil der Addresse!!!

Die Adresse hat 7 Bit (0x00 bis 0x7F). Das R/W Flag hat 1 Bit. Beide zusammen werden als erstes Bytes nach der Start Bedingung übertragen.

Arduino erwartet 7 Bit Adressen als Funktionsargument.

Linux arbeitet mir 7 Bit Adressen (siehe Ausgabe von i2cdetect).

Rocrail arbeitet mit 7 Bit Adressen.

Es funktioniert mit 7 Bit Adressen beim TO.

Warum zum Teufel versuchst du ihm krampfhaft deine 8 Bit Adressen einzureden? Würde er dir nun folgen, dann würde es nicht mehr funktionieren. Also höre bitte damit auf, deine Sichtweise durchzusetzen. Das stört hier nur. Dieses 7/8 Kopf-Problem hast nur du. Alle anderen beteiligten kamen damit schon zurecht, bevor dieser Thread eröffnet wurde. Auch der TO.

#7668085
Lesenswert?

Steve van de Grens schrieb:

Dort ist die Doku von Rockrail zu dem Konstrukt: https://wiki.rocrail.net/doku.php?id=wio:wio-displaymultiplex-en

Naja, dort ist ja schon eine Stolperfalle. Dort werden einige Adresseingänge mit "open" definiert. Das funktioniert nur, wenn die Birads EXTERNE Pull-DOWN Widerstände haben. Das hat das Board des OPs nicht. Also zum 3. Mal. Alle Eingänge A0-A2 müssen EXPLIZIT auf GND oder VCC gelegt werden!

Gast #7668086
Lesenswert?

Falk B. schrieb:

Naja, dort ist ja schon eine Stolperfalle. Dort werden einige Adresseingänge mit "open" definiert. Das funktioniert nur, wenn die Birads EXTERNE Pull-DOWN Widerstände haben.

Haben sie ja auch. Siehe Foto und Schaltplan von Adafruit (mein Link weiter oben). Der Teil ist OK.

Allerdings finde ich, dass die Doku auf I²C Pull-Ups hätte hinweisen sollen. Die sind nämlich standardmäßig nicht aktiviert.

Angehängte Dateien:
(Firma: Gast) #7668094
Lesenswert?

Steve van de Grens schrieb:

Haben sie ja auch. Siehe Foto und Schaltplan von Adafruit (mein Link weiter oben). Der Teil ist OK.

Allerdings finde ich, dass die Doku auf I²C Pull-Ups hätte hinweisen sollen. Die sind nämlich standardmäßig nicht aktiviert.

Im Plan sind Lötbrücken. Auf dem Board sehe ich sie nicht. Auch nicht auf der Unterseite

Also, so ich meine: Bus Pullup und Adress Pulldown sind dauerhaft verbunden.

Ach ja: Habe bisher noch nie ein Adafruitboard mit dem HW-617, oder ähnlichen, Aufdruck gesehen. Somit wird das wohl ein anderer Hersteller sein. bzw. ein vereinfachter Nachbau.

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