mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MCP23017 und Arduino Nano


Autor: Name (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk B. (falk)
Datum:

Bewertung
-1 lesenswert
nicht 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!

Autor: S. Landolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Datenblatt:
"RESET 18 14 I Hardware reset. Must be externally biased."

Autor: Christian S. (roehrenvorheizer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Reset sollte immer mittels einem Widerstand beschaltet sein. 
CMOS-Eingänge niemals offen lassen!

Schöne Feiertage!

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Name (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Name (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: S. Landolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian S. (roehrenvorheizer)
Datum:

Bewertung
0 lesenswert
nicht 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!

: Bearbeitet durch User
Autor: S. Landolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Christian S. (roehrenvorheizer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schöne normale Wintertage zwischen Weihnachten und Neujahr, auch wenn 
Werktage dabei sind!

MfG

Autor: MiWi (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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?

Autor: Roth (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
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?

Autor: Stoer p. (stoerpeak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: MiWi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Stoer p. (stoerpeak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das SCL Signal sieht mir grenzwertig aus. Zu kurze Verweildauer auf 
High. Versuche es mal mit etwas geringerer Taktfrequenz.

Autor: Stoer p. (stoerpeak)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stoer p. (stoerpeak)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.