MCP23017 und Arduino Nano

Gast #5673024
Lesenswert?

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?
#5673028
Lesenswert?

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!
Gast #5673143
Lesenswert?

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.
Gast #5673179
Lesenswert?

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
Gast #5673210
Lesenswert?

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
Gast #5673218
Lesenswert?

@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.
Gast #5673226
Lesenswert?

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
#5673227
Lesenswert?

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!
Gast #5673251
Lesenswert?

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?
#5675464
Lesenswert?

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.
Angehängte Dateien:
Gast #5675486
Lesenswert?

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)?
#5675891
Lesenswert?

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.
#5676069
Lesenswert?

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.

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