Raspberry Pi 1 B: Schnittstelle I2C zu MCP 23018 wird nicht erkannt

  • Guten Tag Miteinander


    Ich habe ein Problem bei einem meiner Projekte.

    Die angeschlossene GPIO-Erweiterung (MCP23018) wird via I2C nicht erkannt.


    Vermutlich wird es ein Anfängerfehler sein. Ich wäre dankbar, wenn ihr mich in die richtige Richtung schubsen könntet.

    Vieleicht hatte jemand von euch schon einen ähnlichen Fall.


    Gruss Maesi

    (Falls ich eine wichtige Info vergessen habe liefere ich diese möglichst schnell nach)


    Problem:

    Ein MCP23018 ist an einen Raspberry über die SDA und SCL Pins angeschlossen.

    Die Stromversorgung des MCP23018 wird über die Pins des Raspberrys realisiert.

    Die Stromversorgung des Raspberrys wird über ein separates Netzteil (IRM 20-5) realisiert.

    Es läuft eine frische Installation des Betriebssystem auf dem Raspberry.

    Terminalbefehl "sudo i2cdetect –y 1" liefert eine leere Tabelle zurück. Der Baustein MCP23018 wird nicht erkannt.


    Ziel:

    MCP23018 ansteuern/erkennen können.


    Ich vermute mal folgende Fehlerquellen:

    - ein Detail beim Verkabeln übersehen/falsch gemacht

    - beim Aufsetzten des Raspberrys etwas vergessen --> es handelt sich um ein altes Modell

    - Defekte PINs am Rasperry oder Bauteile (eher unwahrscheinlich --> mehrer durchgetestet)


    Leider finde ich im Internet keine weiteren Anhaltspunkte wo der Fehler liegen könnte...

    Für jeden Denkanstoss wäre ich dankbar.


    verwendete Bauteile:

    MCP23018 (GPIO-Erweiterung)

    IRM-20-5 (Netzteil)


    bisherige Schritte:

    - Ich bin diesem Tutorial (ist zwar für 23017, beide sollten aber kompatibel sein) gefolgt, den Part mit den LEDs habe ich weggelassen.

    - eine schlechte Spannungsversorgung sollte ausgeschlossen sein wegen dem dediziertem Netzteil 5V und 4A.

    - Rasperry sollte korrekt eingerichtet sein. Frisches Betriebssystem und Quervergleich mit anderen Tutorials.

    - MCP23018 ausgetestet mit Versorgungsspannung 5V und 3.3V. Via Netzteil und Raspberry

    (unter anderem wegen diesem Post aus diesem Forum)

    - mehrere MCP23018 durchgetestet und auch mehrere Raspberrys (alle von der 1. Generation)



    Überblick:



    Schaltaufbau gemäss Tutorial:



    evtl hilfreiche Terminal-Ausgaben:

    Edited once, last by maesi ().

  • Möglicherweise hast Du I2C (noch dazu auf den von Dir gedachten PINs) gar nicht richtig aktiviert.

    Siehe /boot/overlays/README.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Hallo maesi,


    in der Richtung wie Bertthias gehen auch meine Gedanken.


    Und seit wann muss zwischen - und y ein Leerzeichen stehen?


    Könntest Du mal in einen meiner Threads gehen, in denen ich mich dem BME280 angenähert habe?


    Dort habe ich eine Abfrage drin, welcher I2C-Device überhaupt aktiv ist.


    Wenn Du mal die Reaktion auf die ersten dort vorgestellten Linux-Kommandos posten würdest, könnten wir Dir wahrscheinlich weiterhelfen.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Ihr habt aber schon gesehen, dass im ersten Post die config.txt steckt? Und die sieht gut aus.

    Du lädst das Modul (=Treiber) gleich 4 mal und zwei bleiben im Kernel hängen.


    Du solltest nur einmal über dtoverlay (Device-Tree-Overlay) in config.txt ein Modul laden und modprobe und /etc/modules weglassen.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Vielen Dank für die verschiedenen Ansätze, ich habe mal soweit alles durchgetestet/angepasst.

    Nach jeder Änderung wurde der Pi neu gestartet.


    RTFM

    Wenn ich die Module nur via "config.txt (Device-Tree-Overlay)" lade und "modules" leer lasse gibt es diesen Error bei "sudo i2cdetect -y 1":

    Eror: Could not open file ´/dev/i2c-1' or ´/dev/i2c/0': No such file or directory


    Wenn ich Config, modules und Blacklist auf Anfang setzte und "Raspberry Pi Configuration" zum aktivieren von i2c verwende würde es so aussehen:

    weiter habe ich auch noch diese Einstellungen getestet (gemäss Infos aus der ReadMe):

    Bei alle Varianten bekomme ich mit "i2cdetect" eine leere Tabelle oder gar keine zurück.



    kle

    der Eintrag i2c1 war für eine Anpassung der Pin-Belegung, habe es auskommentiert und nocheimal getestet.

    leider gleiches Ergebniss



    Bertthias

    Soweit ich das mitbekommen habe ist dies nur bei der 1. Revision so, später wurde es auf 1 geändert.

    Ich verwende die 2. Revision der 1. Generation. Zur Sicherheit werde ich noch alles mit "i2cdetect -y 0" durchtesten



    Andreas

    Es dürfte kein Leerzeichen zwischen - und y haben, dies habe ich im Post falsch geschrieben, werde es noch ändern.

    Ich habe die ersten Punkte deines Threads durchgeführt. Bis 4.1 geht es ohne Probleme, bei 4.2 bekomme ich eine leere Tabelle zurück.


    Resultat: "dir /dev/i2c*"

    /dev//i2c-1


  • Hallo maesi,

    Ich habe die ersten Punkte deines Threads durchgeführt. Bis 4.1 geht es ohne Probleme, bei 4.2 bekomme ich eine leere Tabelle zurück.


    Resultat: "dir /dev/i2c*"

    /dev//i2c-1


    Mit leerer Tabelle meinst Du

    Code
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --   

    Dann bleibt nur die Schlussfolgerung übrig, dass Du eine I2C-Schnittstelle zwar richtig konfiguriert bekommen hast. Die Verkabelung scheint aber nicht zu stimmen, um auch physikalisch ein I2C-Device erkennen zu können.



    Was hat Du wie verkabelt? Hast Du die verwendeten Kabel, Kontakte etc. mal getestet? Bitte zitiere dabei nicht das verwendete Tutorial, sondern mache Dir die Mühe, DEINE SCHALTE zu zeichnen!



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas


    genau diesen Terminal-Output habe ich gemeint.

    Theoretisch müsste die Adresse 0x20 lauten

    Mit leerer Tabelle meinst Du

    Code
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --   


    Die Pins habe ich nocheinmal neu gesteckt und durchgetestet.

    Dort ist alles soweit in Ordnung.


    Für ein gutes Schema brauche ich noch etwas Zeit. Ich muss mich noch in das entsprechende Programm einarbeiten.

    Für die Zwischenzeit habe ich einmal etwas zusamengebastelt.


    gruss Maesi


  • Jetzt fühle ich mich ein bisschen verarscht von der Schaltung.

    Es war tatsächlich ein Wackelkontakt. Dabei hatte ich vor diesem Thread die Schaltung extra 3 mal frisch aufgebaut, genau um so etwas auszuschliessen.


    Nach dem letzten Neuaufbau kann ich das Bauteil nun ansprechen.


    Vielen Dank allerseits für die Geduld mit einem Anfänger.