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!
Aus dem Datenblatt: "RESET 18 14 I Hardware reset. Must be externally biased."
Der Reset sollte immer mittels einem Widerstand beschaltet sein. CMOS-Eingänge niemals offen lassen! Schöne Feiertage!
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!
:
Bearbeitet durch User
> 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.
Schöne normale Wintertage zwischen Weihnachten und Neujahr, auch wenn Werktage dabei sind! MfG
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.
Das SCL Signal sieht mir grenzwertig aus. Zu kurze Verweildauer auf High. Versuche es mal mit etwas geringerer Taktfrequenz.
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.
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.