Problem mit 4 Stück MCP23017

mawi
2015-01-25
2021-02-28
  • mawi - 2015-01-25

    Hallo User,
    http://pridopia.co.uk/pi-23017-4-lp.html
    Soweit funktioniert alles, jedoch kann ich die einzelnen I/O´s immer nur für eine I2C-Adresse ansprechen.
    Wenn ich vier Bausteine mit den einzelnen I2C Adressen ansprechen möchte, funktioniert immer nur ein Baustein.
    Wo liegt mein Fehler?
    Danke für eure Hilfe
    Viele Grüße
    Mathias

    IMG: 3.JPG

    IMG: 2.JPG

    IMG: 1.JPG

    TEST_6.project [117.11 KiB]

     
  • Anonymous - 2015-01-26

    Originally created by: PJ242

    4 Geräte am Bus bedarf auch dem Einbinden von 4 Geräten oder etwa nicht?

     
  • mawi - 2015-01-26

    Danke für den Tipp.
    Das habe ich auch schon versucht, leider ohne Ergebnis.

     
  • mawi - 2015-01-31

    Hallo PJ242,

    du hattest doch recht. Ich habe für jeden MCP23017 ein eigenes Gerät angehängt und in der POU ebenfalls für jedes Gerät einen eigenen Baustein.
    Ich bin begeistert, dass es klappt und danke für deine Hilfe.

    Viele Grüße Mathias

     
  • josef.welte - 2015-02-03

    Hallo, ich suche auch die Lib für den MCP23017.

     
  • eschwellinger

    eschwellinger - 2015-02-04

    Hallo Josef,

    die von anderen Usern erstellten Bibliotheken und Gerätebeschreibungen findest du im englischen CODESYS Forum unter:CODESYS V3 Raspberry Pi share your devices & libraries

    http://forum.codesys.com/viewtopic.php? ... 868#p11014

    Grüße
    Edwin

     
  • Anonymous - 2015-02-12

    Originally created by: PJ242

    mawi hat geschrieben:
    Hallo PJ242,
    du hattest doch recht. Ich habe für jeden MCP23017 ein eigenes Gerät angehängt und in der POU ebenfalls für jedes Gerät einen eigenen Baustein.
    Ich bin begeistert, dass es klappt und danke für deine Hilfe.
    Viele Grüße Mathias

    Hi mawi.

    Das freut mich, dass ich dir helfen konnte.

     
  • rasenmuster - 2015-02-14

    wie kann man den Bereich B als Eingang deklarieren? So in etwa:

    FUNCTION_BLOCK IO_MCP23017
    VAR_INPUT
    I2C: USINT;
    A0:BOOL;
    A1:BOOL;
    A2:BOOL;
    A3:BOOL;
    A4:BOOL;
    A5:BOOL;
    A6:BOOL;
    A7:BOOL;
    END_VAR
    VAR_OUTPUT
    B0:BOOL;
    B1:BOOL;
    B2:BOOL;
    B3:BOOL;
    B4:BOOL;
    B5:BOOL;
    B6:BOOL;
    B7:BOOL;
    END_VAR
    VAR
    END_VAR

    MCP23017.usiAddress := I2C;

    MCP23017.IN_A;
    MCP23017.IN_B := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
    OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);

    MCP23017.IO_B := 16#00;
    MCP23017.IO_A := 16#00;

    MCP23017.OUT_A := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(A7),1) OR BOOL_TO_BYTE(A6),1) OR BOOL_TO_BYTE(A5),1) OR BOOL_TO_BYTE(A4),1)
    OR BOOL_TO_BYTE(A3),1) OR BOOL_TO_BYTE(A2),1) OR BOOL_TO_BYTE(A1),1) OR BOOL_TO_BYTE(A0);
    MCP23017.OUT_B; // := SHL(SHL(SHL(SHL(SHL(SHL(SHL(BOOL_TO_BYTE(B7),1) OR BOOL_TO_BYTE(B6),1) OR BOOL_TO_BYTE(B5),1) OR BOOL_TO_BYTE(B4),1)
    // OR BOOL_TO_BYTE(B3),1) OR BOOL_TO_BYTE(B2),1) OR BOOL_TO_BYTE(B1),1) OR BOOL_TO_BYTE(B0);

    MCP23017.STATE;

     
    • spsentdecker - 2021-02-28

      Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?

       
    • spsentdecker - 2021-02-28

      Bei mir kommt immer die Meldung "IN_A ist kein Eingang von MCP23017_16_IO". Wenn ich den Eingangsteil ausblende (//) und nur den OUT Teil drin habe, funktioniert es... Wo könnte das Problem liegen?

       
  • mawi - 2015-02-15

    Hallo,
    so änderst du die IOs als Eingang MCP23017.IO_B := 16#FF;
    Viele Grüße Mathias

     

Log in to post a comment.