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?
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?
Was sind "Oled Expander"? Pull-Ups richtig gesetzt? (Jeweils nur am Ende des Bus) Schaltplan und Photos wären hilfreich (wie immer!)! Gruss Chregu
Hier mal Bilder von dem Expander und eine Skizze Die freien Pins von A0 A2 A2 brauchen keien Masse Anschluß da dieser auf dem Chip schon vorhanden sind. Versuche mit oder ohne hatten keinen Einfluß.
Thomas K. schrieb: > Hier mal Bilder von dem Expander und eine Skizze > Die freien Pins von A0 A2 A2 brauchen keien Masse Anschluß da dieser auf > dem Chip schon vorhanden sind. FALSCH! Alle drei Pins A0-A2 müssen EXPLIZIT auf GND oder VCC gelegt werden. Punkt!
Thomas K. schrieb: > Hier mal Bilder von dem Expander und eine Skizze Ich sehe in der Skizze keine Pull-Ups an SCL/SDA. Und falls jetzt kommt: "brauche ich nicht, sind auf dem Board" ist das auch falsch, denn dann sind die bei Verwendung zweier Boards ja doppelt/parallel - und dann evtl. zu klein.
:
Bearbeitet durch User
Holger T. schrieb: > ist das auch falsch, denn dann > sind die bei Verwendung zweier Boards ja doppelt/parallel - und dann > evtl. zu klein. Ist auch falsch, denn auf den Boards sind fast immer 10K Pullups drauf, und wenn man z.B. 5 Boards parallel am Bus hängen hätte würden sich erst 2K resultierend ergeben --> alles im grünen Bereich.
Gut dann ist soweit alles richtig. Warum die sich aber nicht vertragen ist mir dennoch nicht klar.
Pull ups habe ich auch probiert. 2,2k an 3,3V direkt am Eingang vom Pico SDA SCL. Ergebniss auch gleich Null.
Ok, also haben wir das auch geklärt. Wer hat noch einen Tip für mich?
Thomas K. schrieb: > Ok, > also haben wir das auch geklärt. > Wer hat noch einen Tip für mich? Sogar zwei: 1) Lerne Datenblätter lesen 2) Lerne Programmieren
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.
Ich bin nicht nur sicher; ich habe beide Expander mit den von mir eingestellten Adressen einzeln ansprechen können. Ich habe noch einen Test gemacht in dem ich den 2. Expander einer seperaten Spannungsquelle habe zukommen lassen. Auch hier war das Ergebniss das gleiche.
Testest Du die Expander alleine oder mit angeschlossenen Oleds (Typ, Anzahl?).
Woran hat du gesehen, dass es nicht funktioniert? Kannst du mal ein Bild des Aufbaus machen? Was soll deine Schaltung am Schluss tun, und warum hast du genau diesen Expander gewählt? Wie gross sind die Pull Widerstände auf dem Board?
:
Bearbeitet durch User
Hier sind Schaltplan und Doku von dem Board: https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/downloads Offenbar sind die Pull-Up Widerstände standardmäßig inaktiv. Man muss Lötbrücken schließen. Ich empfehle allerdings stattdessen externe 2,2 kΩ Widerstände. Die 10 kΩ auf den Boards sind oft zu hochohmig.
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.
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.
:
Bearbeitet durch User
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.
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.
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.
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.
Björn W. schrieb: > Das sind Bus-Multiplexer und keine Port-Expander. Thomas K. schrieb: > Ok, > also haben wir das auch geklärt. Thomas K. schrieb: > Oled Expander Falk B. schrieb: > Der OP ist ein wenig begriffstutzig und auch faul. Gruss Chregu
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.
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.
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.
Thomas K. schrieb: > Gehe ich mit dem Messkabel jetzt am Pico der die Multiplexer verwaltet > an den SDA oder SLC Anschluß dann stürzt der Pico ab. Heißt für mich, dass die Messstrippe den Bus zu sehr belastet. Was ein Indiz für zu schwache Pullup sein könnte.
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!!!
Thomas K. schrieb: > Wenn ich nun beide Oled Expander parallel an den Pico W anschließe > stören sich die Expander gegenseitig Ist das immer noch das selbe Problem wie im Beitrag "Re: I/O Erweiterung einfach erklärt"
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.
Steve van de Grens schrieb: > Also höre bitte damit auf, deine Sichtweise mit 8 Bit durchzusetzen. Das ist nicht MEINE Sichtweise sondern die vom Datenblatt! > The last bit of the slave address defines the operation to be performed
Dort ist die Doku von Rockrail zu dem Konstrukt: https://wiki.rocrail.net/doku.php?id=wio:wio-displaymultiplex-en
Ich würde den TO mal seine Hausaufgaben machen und alle Fragen beantworten lassen. Probleme lösen sich oft durch dokumentieren ;)
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!
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.
Falk B. schrieb: > 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. Ich seh da 6 Rs. 1x RESET 1x SCL 1x SDA Und die anderen 3?
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.
:
Bearbeitet durch User
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.