I2C-Bus mit MCP23017

2017-10-16
2023-01-13
  • Bastler2000 - 2017-10-16

    Hallo,

    ich kann mit dem Baustein MCP23017 keine Ausgänge schalten.
    In FUP habe ich im Baustein den Eingang IO_A auf Null gesetzt, so dass das Byte A als Ausgang arbeitet.

    Wenn ich jetzt auf dem Raspi mit I2Cdump die Konfiguration ansehe, ist das Byte A immer noch als Eingang parametriert.

    Wenn ich mit I2Cset den Parameter 0x00 von FF nach 00 umstelle funktioniert alles

    Im Baustein MCP23017 ist die Variable IO_A vorbelegt mit 16#FF. Hier könnte der Fehler liegen. Die Vorbelegung würde ich gerne auf 16#00 ändern. Aber dies gelingt mir nicht. Wie es scheint ist der Baustein schreibgeschützt.

    Hat jemand eine Idee?

    IMG: i2cdump_vorher.jpg

    IMG: FUP_MCP23017.jpg

     
  • LMDaniel999 - 2017-10-23

    Hi.

    Ich verwende den MCP23S17 am SPI.
    Dort gibt es bei den Parametern im Gerät die Möglichkeit, das einzustellen.

    Ich weiß nicht, ob das beim MCP23017 am I2C genauso ist...
    Aber normal solltest du doch die Daten über den Eingang ändern können.
    Das sollte auch keinen Schreibschutz haben.

    Woher hast du den Baustein?

     
  • Raspitan - 2019-02-07

    Hallo Zusammen,

    ich habe das gleiche Problem wie Bastler2000.
    Die eingestellten Werte werden vom Baustein entweder nicht übernommen oder nicht an den Baustein übertragen, setze ich die entsprechenden Werte über I2CSET werden die Werte übernommen, nach einem Reset der Steuerung muss man das Spiel allerdings wiederholen.

    Die Eingänge werden sauber eingelesen.

    Mein Setup:
    Rasperry Pi 3 b+
    Neueste Codesys - Entwicklungsumgebung
    Der Raspi läuft mit CODESYS Control for Raspberry Pi MC SL (aber auch mit Pi SL gehts net)
    Device XML und Lib hier aus dem Forum mit dem Testprogramm.
    Portexpander mit 2 MCP23017
    Entwicklungsumgebung läuft auf Laptop mit Win 10 32bit
    Momentan noch keine Lizenz, da noch Testphase (sollte aber ja nicht daran liegen?)

    Hat jemand noch einen Tipp woran das liegen könnte? Ich habe mittlerweile alle Beiträge die ich finden konnte überprüft, aber nix hat geholfen.

    Wenn benötigt, liefere ich gerne Screenshots, das Projekt oder was auch immer hilft nach =)

    Vielen Dank soweit.
    Nils

     
  • elconfa - 2019-02-07

    Hello I write this code:

    MCP23017_1.IO_A := 16#FF; //Input
    MCP23017_1.IO_B := 16#00; //Output

    Button_1 := MCP23017_1.IN_A.0;
    Button_2 := MCP23017_1.IN_A.1;
    Button_3 := MCP23017_1.IN_A.2;
    Button_4 := MCP23017_1.IN_A.3;
    Button_5 := MCP23017_1.IN_A.4;
    Button_6 := MCP23017_1.IN_A.5;
    Button_7 := MCP23017_1.IN_A.6;
    Button_8 := MCP23017_1.IN_A.7;

    MCP23017_1.OUT_B.0 := Rele_1;
    MCP23017_1.OUT_B.1 := Rele_2;
    MCP23017_1.OUT_B.2 := Rele_3;
    MCP23017_1.OUT_B.3 := Rele_4;
    MCP23017_1.OUT_B.4 := Rele_5;
    MCP23017_1.OUT_B.5 := Rele_6;
    MCP23017_1.OUT_B.6 := Rele_7;
    MCP23017_1.OUT_B.7 := Rele_8;

    No other configuration needed. This is working.
    I hope this can help you.
    elconfa

     
  • Raspitan - 2019-02-19

    Moin Zusammen,

    ich habe zwar keine Lösung für das Grundproblem gefunden, aber ich habe ein für mich akzeptables "Workaround" gefunden.

    Ich habe ein kleines Programm geschrieben, das einmalig in einer FirstCycle - Schleife ausgeführt wird und die Register direkt anspricht, z. B. MCP23017.write8(16#00, Variable oder direkt 16#00 für Ausgang), so verfahre ich mit allen Registern und MCP23017-Chips.

    Vllt hilft es ja jemanden der unerklärlicherweise das gleiche Problem hat.

    Gruß Nils

     
  • JJoe - 2019-03-24

    Hallo Raspitan,

    auch ich "kämpfe" immer noch mit dem MCP23017. Könntest Du Dein "kleines Programm" hier zur Verfügung stellen?

    Viele Grüße
    JJoe

     
  • Raspitan - 2019-04-11

    Hallo JJoe,

    mit welchen Problemen kämpft du denn gerade. Ein Beispielprogramm hab ich auf die Schnelle nicht parat.

    Vllt kann ich dir ja so schon einen Tipp geben

    Gruß Nils

     
  • JAPIB

    JAPIB - 2019-04-11

    I'm really sorry but I can't understand your English

     
  • laszlo1.takacs - 2019-12-02

    Hello
    I have a Raspberry pi 3 Codesys v3.5.sp12.3. There are 8 pieces of MCP 23017 i2c modules. When I log in with download mode, the raspberry codesys runtime stops. I need to restart raspberry.
    login with online change mode is successful, the program will not stop. If I disconnect the i2c modules, it works in login with download mode.
    When I set up this system there was no problem connecting. What could be the problem?

     

Log in to post a comment.