Hallo Forum, eins vorweg, ich hab nicht wirklich Plan von der Hardware - meine Baustelle ist eher die Software. Ich plage mich schon seit einer ganzen Weile mit einem Problem rum und hoffe ihr könnt mir mal helfen. Der Aufbau ist wie folgt (s. Bild): am I2C-Bus hängt als Master der MCU und ein persistenter Speicher/RTC-Kombo FM30C256. Ferner sind wahlweise eine, zwei oder vier externe Platinen mit einem ADC, einem weiteren Speicher und Digitalpoti angeschlossen. Die Kabellänge beträgt ca. 1m. Als Bustreiber fungieren die P82B715 I2C-Bus-Extender. Das Problem ist, daß ich in unregelmässigen Abständen den Inhalt des FM30C256 nicht komplett auslesen kann. Nach den ersten ca. 500 Bytes kommen lauter 0xFF's, die da definitiv nicht drinstehen. Ich arbeite mit einer Checksumme und die passt dann natürlich auch nicht Das Problem tritt sporadisch mit einem Board auf und häufig mit 4 Boards. Man kann das Problem umgehen, wenn man die Digitalpotis auf 0 setzt - das kann aber wohl kaum die Lösung sein! Ich vermute, da ist i-wo ein Hardware-Fehler und ich würde gerne verstehen, was da genau schief läuft. Hat jemand eine Idee?
Hast du vielleicht einen Schaltplan dazu? Wie hängen die Leitungen zwischen den Extendern? Vielleicht hast du dicke Stromschleifen. Ich würde SDA und SCL mit einer zusätzlichen Masseleitung verdrillen. Außerdem sind laut Schaltplan an jedem Extender Pull-Ups dran. Du hast in der Zeichnung nur auf einer Seite die 330Ohm. The net pull-up on the cable bus can be (VCC - 0.5 V) / (21 - n) mA where n = total number of P82B715 modules on the cable. When there are only two modules, one each end of the cable, the pull-up = (4.5 / 19) = 237 W. Make the pull-ups at each end of the cable equal. Signalling is bidirectional so there is no advantage optimizing for any one direction. The pull-up at each end will be 474 W, using 470 W as the nearest usual value.
Wo sind die 0xFF? Im µController, oder hast du die Datenleitung mitgeloggt?
Haben die genazen BE denn auch jeweils unterschiedliche Adressen. Vielleicht nicht die Lösung, da du sie ja ansprechen kannst, aber wenn du das gleiche BE mehrere Male verwendest kann das passieren...
Funktioniert es denn wenn du die externen Platinen komplett weg lässt?
Jörg S. schrieb: > Funktioniert es denn wenn du die externen Platinen komplett weg lässt? ja Joachim S schrieb: > Haben die genazen BE denn auch jeweils unterschiedliche Adressen. > Vielleicht nicht die Lösung, da du sie ja ansprechen kannst, aber wenn > du das gleiche BE mehrere Male verwendest kann das passieren... ich weiss zwar nicht, was du mit BE meinst, aber die Adressen sind auf jeden Fall für jeden IC unterschiedlich. Das habe ich als erstes geprüft ;) AKKS schrieb: > Wo sind die 0xFF? > Im µController, oder hast du die Datenleitung mitgeloggt? auf der Datenleitung. Und dadurch natürlich auch im Empfangsregister des MCU Kranker schrieb: > Hast du vielleicht einen Schaltplan dazu? ja, allerdings auf dem Papier. Und da ist noch allerhand anderes Gedöns dran, was für dieses Problem nicht relevant ist. Alles, was I2C-Bus betrifft, ist auf dem Bild > Wie hängen die Leitungen zwischen den Extendern? ich verstehe die Frage nicht > Ich würde SDA und SCL mit einer zusätzlichen Masseleitung verdrillen. das ist ein 8-poliges Kabel, wo noch andere Leitungen mit dabei sind, unter anderem auch Masse. Das Kabel ist abgeschirmt und die Abschirmung ist auch mit Masse verbunden > Außerdem sind laut Schaltplan an jedem Extender Pull-Ups dran. ... ich werde morgen darauf eingehen Auf jeden Fall möchte ich mich bei euch allen für die Antworten bedanken
Ich meine die ich rot eingezeichnet habe, die fehlen. Und diese Pullups sind halt abhängig von der Anzahl der Extender. The net pull-up on the cable bus can be (VCC - 0.5 V) / (21 - n) mA where n = total number of P82B715 modules on the cable. When there are only two 1 Platine -> n = 2 4 Platinen -> n = 8 Ist klar, dass sich der Wert der Pull-Ups in Anhängigkeit von Platinenanzahl ändert. Und wer weiß, wie empfindlich diese Extender sind. Außerdem, am Anfang hast du 2k Pull-Ups, hinter dem zweiten Extender 1k. Wie kommst du auf solche Werte? Die Extender machen auch erst dann Sinn, wenn du diese an eine höhere Spannung anschließt, z.B. 10V. Wenn VCC der extender und die restlichen VCC Punkte ein Potential sind ist Schaltung sinnlos.
Den P82B715 kann man nicht mit einer anderen Spannung betreiben wie den Reset der Schaltung, wenn ich mich nicht komplett irre.
Jörg S. schrieb: > Den P82B715 kann man nicht mit einer anderen Spannung betreiben wie den > Reset der Schaltung, wenn ich mich nicht komplett irre Korrekt, bei verschiedenen Spannungen treibt er auf der höheren Seite einen Low-Pegel. Hab das mal mit 3,3V und 5V ausprobiert. Auch die zusätzliche Pull-Ups sind überflüssig. Was stehen denn für Daten ins dem Baustein den du ausliest? Kann da vielleicht was anderes drin stehen als du erwartest? -> 0xFF
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.