Ich habe momentan 7 MCP23017 an einem Arduino Nano (für einen
RGB-LED-Würfel).Das Problem was ich nun habe ist, dass anfangs bei den
ersten Tests alles lief. Nun können zwei MCP23017 nicht mehr
angesprochen werden. Auf einem Steckbrett laufen sie aber. Die
Verkabelung hab ich jetzt schon mehrmals überprüft.Hab allerdings den
Reset-Pin nicht angeschlossen.Hat jemand ne Idee warum bei gleicher
Beschaltung, gleichem Code und funktionierenden ICs trotzdem zwei nicht
ansprechbar sind?
Name schrieb:> Ich habe momentan 7 MCP23017 an einem Arduino Nano (für einen> RGB-LED-Würfel).Das Problem was ich nun habe ist, dass anfangs bei den> ersten Tests alles lief. Nun können zwei MCP23017 nicht mehr> angesprochen werden. Auf einem Steckbrett laufen sie aber. Die> Verkabelung hab ich jetzt schon mehrmals überprüft.Hab allerdings den> Reset-Pin nicht angeschlossen.
Das klingt nicht gut. Der baumelt der in der Luft, in Fachkreisen
"floating input" genannt und macht je nach Wetterlage einen Reset. Klemm
den auf ein festes Potential. Bei ALLEN ICs!
Name schrieb:> Hat jemand ne Idee warum bei gleicher> Beschaltung, gleichem Code und funktionierenden ICs trotzdem zwei nicht> ansprechbar sind?
Mein Glaskugel sagt: Das typische I2C Problem
Ja, die Verbindungen sind länger/anders und darum reichen die internen
Pullup nicht.
Hab jetzt testweise den reset pin einer der ICs die nicht ansprechbar
sind mit 1k auf 5v gelegt. Trotzdem lässt er sich immer noch nicht
ansprechen. Der IC ist sogar der der am wenigsten kabelweg hat und die
anderen weiter weg liegen funktionieren daran kann es also nicht liegen
Name schrieb:> daran kann es also nicht liegen
Offensichtlich hast du nur unwesentlichste meiner Ansage verstanden.
Zumindest ist dir die verdeckte Frage zu den Pullup durch die Lappen
gegangen.
Tipp:
Ausblenden ist nicht immer zielführend.
SDA und SCL sind über 2,4k mit 5v verbunden falls du das meinst. Statt
"verdeckte fragen" zu stellen kannst du auch einfach so eine frage an
deinen text anhängen. Das macht die sache vermutlich einfacherer
@TO,
wie lang ist dein I2C Bus, mit welcher Frequenz läuft er und wie groß
ist seine Kapazität [F]?
Es gibt dafür jeweils maximale Werte, die auch nicht, für sich alleine,
erreicht werden müssen.
Also ich beschreibe mal, wie ich das Ganze verstanden habe (und bin
ziemlich sicher, dass es sich so nicht verhält):
- Arduino & Steckbrett mit 7 MCP: lief (trotz offener RESETs)
- Arduino & Platine mit 7 MCP (in Fassungen!): lief
- jetzt plötzlich laufen bei Letzterem 2 der MCP nicht
- setzt man diese beiden MCP zurück auf das Steckbrett, laufen sie
- einen einzigen RESET auf der Platine auf Vcc zu legen bringt nichts
Hallo,
dann müßte eigentlich alles korrekt sein. Pullups und Reset sind OK.
Die Adresseingänge sind bestimmt auch korrekt angeschlossen?
Jedes IC erfreut sich an einem eigenen keramischen Abblockkondensator?
Hast Du mal bei eingeschalteter Schaltung Reset ausgelöst an den MCPs?
"The maximum VDD rise time is specified in Section 2.0 “Electrical
Characteristics”."
Schöne Feiertage!
> Schöne Feiertage!
Zürcher (simmer froh, simmer Zürcher!) - Berchtoldstag? Also ich hier im
Schwarzwald sehe nur noch den Dienstag vor mir, selbst Dreikönig fällt
auf einen Sonntag.
Name schrieb:> Hab jetzt testweise den reset pin einer der ICs die nicht ansprechbar> sind mit 1k auf 5v gelegt. Trotzdem lässt er sich immer noch nicht> ansprechen. Der IC ist sogar der der am wenigsten kabelweg hat und die> anderen weiter weg liegen funktionieren daran kann es also nicht liegen
Ach ja, daran kann es nicht liegen... hast Du schon einmal mit dem Oszi
und einem richtig angeschlossenen Tastkopf so eine Leitung angeschaut -
dann wenn der Clk wackelt?
Ja?
Und wie es daran liegen kann... ausreichendes Klingeln auf den langen
Leitungen und fertig ist das Problem.
iaW:
welche IC2-Clk benutzt Du?
wie lang sind die I2C-Leitungen?
wie sieht die Masseführung aus?
wo sind die Pullupwiderstände platziert?
und welchen Wert haben die?
Arduino Fanboy D. schrieb:> Offensichtlich hast du nur unwesentlichste meiner Ansage verstanden.
Nö. Die war einfach falsch. Weil du -oft- keine ahnung hast. Unt
trotzdem den Mund nicht halten kannst. Woran liegt das, Kindheitstrauma?
S. Landolt schrieb:> - Arduino & Steckbrett mit 7 MCP: lief (trotz offener RESETs)
Wenn die Port-Expander MCP23017 ohne beschalteten Reset-Pin laufen,
dürfte das reiner Zufall sein. Die Lernkurve habe ich schon durch, z.B.
alle Resets miteinander verbunden aber vergessen sie an "high" zu legen.
Da haben dann manche funktioniert und manche nicht. Beim abgebildeten
Projekt liegen sie fest auf 5V und das I2C läuft problemlos trotz wilder
Verdrahtung.
Stoer p. schrieb:> S. Landolt schrieb:>> - Arduino & Steckbrett mit 7 MCP: lief (trotz offener RESETs)>> Wenn die Port-Expander MCP23017 ohne beschalteten Reset-Pin laufen,> dürfte das reiner Zufall sein. Die Lernkurve habe ich schon durch, z.B.> alle Resets miteinander verbunden aber vergessen sie an "high" zu legen.> Da haben dann manche funktioniert und manche nicht. Beim abgebildeten> Projekt liegen sie fest auf 5V und das I2C läuft problemlos trotz wilder> Verdrahtung.
Nett.
Wie schauen die I2C-Signale und die Versorgung an den jeweiligen IC-Pins
aus (GND ist der jeweilige Massepin vom IC)?
MiWi schrieb:> Wie schauen die I2C-Signale und die Versorgung an den jeweiligen IC-Pins> aus
Im Bild sind die Signale am Letzten der sechs Portexpander zu sehen.
Stefanus F. schrieb:> Das SCL Signal sieht mir grenzwertig aus. Zu kurze Verweildauer auf> High.
Es ist nicht nur grenzwertig sondern außerhalb der Spezifikation.
Das zeigt wie robust der I2C-Empfang der Expander ist.
Der Clockpuls wird hier gesetzt und wieder gelöscht, ohne Pause
dazwischen.
Hinzu kommt noch dass die Flanken durch den Aufbau und den 3k3 Pull-Up
langsam ansteigen.
Laut Datenblatt muss die "Clock High Time" im 100kHz Modus mindestens
4µs sein, was hier deutlich nicht der Fall ist. Bei den schnelleren Modi
reichen auch 600ns oder 120ns. Das dürfte der Grund sein, warum der
Parameter hier wohl nicht so kritisch ist.
Der Testaufbau dient mir momentan nur zum Ausprobieren der Nixie-Röhren.
Stoer p. schrieb:> Bei den schnelleren Modi reichen auch 600ns oder 120ns.
Und da frage ich mich, woher weiss der Chip, in welchem Modus er ist?
Dazu habe ich im Datenblatt nichts gefunden.
Stefanus F. schrieb:> Und da frage ich mich, woher weiss der Chip, in welchem Modus er ist?
Ich vermute dass ihm das egal ist und er intern einfach so schnell wie
möglich arbeitet.
Wenn ich ihn im 100kHz Bereich betreibe müsste er ja sonst schon bei
Clockpulsen kleiner 4µs streiken was er aber scheinbar nicht macht.
Die vorgeschriebenen Zeiten werde ich trotzdem wieder korrekt einstellen
um später unnötige Fehlersuche bei der Weiterverwendung der I2C-Routinen
zu vermeiden.