I2C Bus probleme

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi

    Habe hier bei meinem Setup zwei I2C I/O Extender verbaut.
    MCP23017 (Adresse 0x20) und MCP23008 (Adresse 0x21)

    Das Problem das ich habe ist das ich 0x21 beim i2cdetect nicht jedes mal angezeigt bekomme.
    Von 5 versuchen mit i2cdetect bekomme ich ihn vielleicht 2 mal angezeigt. Auch alle meine Programme die auf 0x21 adressiert sind brechen dann ab :(

    Hat irgendwer eine Idee was das sein könnte, kann man hier irgendwas debuggen ?

    Falls nötig kann ich heute Abend mal aufzeichnen wie meine Schaltung aussieht.

    sandro@raspberrypi ~ $ i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    sandro@raspberrypi ~ $ i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    Danke
    Sandro

    Einmal editiert, zuletzt von Sandro (11. Februar 2013 um 21:39)

  • Habe es auch auf Breadboards aufgebaut, werde die Verbindungen jetzt wohl nochmals kontrollieren !!

    Danke für den Tip. Werde mich dann melden ob es was geholfen hat.
    Sandro

  • Sehr spannend. Habe jetzt alle verbindungen nochmals durchgemessen, passt alles.
    Was ich allerdings nicht verstehe ist das ich bei beiden Chips auch einzeln die gleichen Fehler habe.

    Also wenn ich die Bus Adresse von 0x20 auf was anderes ändere, dann springt er beim i2cdetect wie wild hin und her.
    Wenn ich Adresse 0x20 einstelle funktioniert alles wie es soll. Die Adresseingänge A0,A1,A2 sind dann mit GND verbunden wie es sein soll.
    Dann Kappe ich die Leitung A1 und es sollte dann ja eigentlich 0x22 sein, was es ja immer wieder kurz mal ist.

    Also irgendwie geht da was nicht mit rechten dingen zu.

    sandro@raspberrypi:~$ while true; do i2cdetect -y 1 |grep 20:; sleep 2 ; done
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    Werde mal meine Schaltung posten vielleicht habe ich ja da einen Bock drin.

    Ciao
    Sandro

  • Habe dieses Problem auch im deutschen Raspberry Pi Forum gepostet, vielleicht war das ja einer von Euch der zur Lösung geholfen hat.

    Also hier die Lösung zu meinem Problem:

    Habe jetzt A1 einfach auf VCC gelegt dann geht es ohne Aussetzer :)


    Danke
    Sandro

  • Das ist genau das, was wir auch gemeint haben. Diese Verbindung wird meist über Widerstände gemacht, die dann als PullUps bezeichnet werden weil sie den Pegel hochziehen.
    Du kannst davon ausgehen, daß Eingänge, und besonders Adresseingänge, in der Elektronik grundsätzlich beschaltet werden müssen. Sonst nehmen sie immer den Zustand an, der Dir am wenisten paßt. Oder wechseln ihn wenn das mehr stört.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!