Problem mit MCP23017

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen,

    Ich habe folgendes Problem:

    Ich habe gestern einen MCP23017 an mein Raspberry PI 3 angeschlossen (Codierung: A0, A1 und A3 jeweils auf GND = Slot 20) Mein Raspberry hat den Baustein nicht erkannt. Danach habe ich einen zweiten Baustein (Codierung: A0 an 3,3V, A1 und A3 auf GND = Slot 21) angeschlossen und dieser wurde erkannt.

    Nach langem Hin und Her hatte ich beide angeschlossen und beide wurden erkannt ( der erste an Slot 21, der zweite an Slot 24). Heute starte ich mein Raspberry, und der MCP23017 an Slot 21 wird nicht mehr erkannt. Ich habe die IC-Bausteine gegeneinander vertauscht um auszuschließen dass der eine defekt ist. Der Baustein der auf Slot 24 erkannt wurde, wird auf Slot 21 nicht erkannt.


    Woran könnte das "nicht erkennen" an bestimmten Slots liegen?

    Die Verdrahtung habe ich mehrmals überprüft.

  • Auf Wackelkontakt, evtl Kontakt zwischen den Pins also Brücken usw... . Ich bin mir ziemlich sicher das alles richtig war.

    Andere Frage:

    Wie kann ich meinem Baustein sagen, dass er von einem gewissen PIN z.B. GPB0 ein Signal senden soll und ich dieses Signal dann an einem anderen PIN z.B. GPBA0 abfragen kann?

    Das senden klappt soweit mit

    bus.write_byte_data(MCP1, OLATB, 0x01)

    nur wie frage ich das Signal in einer IF-Funktion wieder ab?
    Automatisch zusammengefügt:
    Hier noch mein Code:

    Einmal editiert, zuletzt von Ketrey (9. September 2016 um 10:07)

  • Also ich hab beide am laufen , hab die Codierung einfach wieder geändert und es ging ... komisch.


    Ich meinte Slot 21 und 24 -> Im Terminal i2cdetect -y 1 eingeben und dann siehst du wo ein MCP-Baustein angeschlossen ist bzw. erkannt wird.


    weis jemand eine Antwort zu meiner letzten Frage? also wie ich ein signal sende bzw ein signal an einem bestimmten eingang auslesen kann?

  • Ausgang (IOCON.Bank 0)
    Im folgenden Beispiel wird mit IOCON.Bank 0 gearbeitet (Standardeinstellung nach Start und
    Reset).
    Das "w" am Ende der Befehle aktiviert den WORD-Modus, also das 2 Bytes geschrieben werden. Das
    linke Byte (MS) steht dabei für Port B und das rechte Byte (LS) für Port A. Im Beispiel werden
    die ersten 4 Bit des Port A und die letzten 4 Bit des Port B auf High-Pegel und die restlichen
    Ausgänge auf Low-Pegel gesetzt.

    Code
    i2cset -y 1 0x20 0x00 0x0000 w
    i2cget -y 1 0x20 0x00 w
    0x0000
    i2cset -y 1 0x20 0x14 0xF00F w
    i2cget -y 1 0x20 0x14 w
    0xf00f


    Eingang (IOCON.Bank 0)
    Im folgenden Beispiel wird mit IOCON.Bank 0 gearbeitet (Standardeinstellung nach Start und
    Reset).
    Das "w" am Ende der Befehle aktiviert den WORD-Modus, also das 2 Bytes gelesen werden. Das
    linke Byte (MS) steht dabei für Port B und das rechte Byte (LS) für Port A. Im Beispiel sind
    die letzten 4 Bit des Port A und die ersten 4 Bit des Port B auf High-Pegel und die restlichen
    Eingänge sind auf Low-Pegel.

    Code
    i2cset -y 1 0x20 0x00 0xFFFF w
    i2cget -y 1 0x20 0x00 w
    0xffff
    i2cget -y 1 0x20 0x12 w
    0x0ff0

    Einmal editiert, zuletzt von evil (9. September 2016 um 13:26)

  • Danke schonmal für die Hilfen :thumbs1:

    in ziemlich neu im Raspi programmieren... was ist API?

    wiring pi ist installiert und wird schon für die ganz normalen GPIO ,also die auf dem Boards sebst, verwendet :)

  • Servus,
    na API ist eine Funktionssammlung, die Dir wiringPi zur Verfügung stellt, um Dir das Leben leichter zu machen.
    Das ist praktisch ein High-Level-Interface, um z.B. auf den I2C- oder SPI-Bus zuzugreifen ...
    Welche Funktionen da zur Verfügung stehen kann ich leider nicht sagen ... ich hab' mit wiringPi und Python nichts am Hut, aber auf der Homepage von Gordon -> http://wiringpi.com/ <- wirst Du sicher fündig ;)

    cu,
    -ds-

Jetzt mitmachen!

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