MCP23S17 Ausgänge steuern

  • Hallo Community,

    ich bin relativ neu in der Welt der Raspberrys und finde zu folgendem Problem zwar viele Beiträge aber nichts was mir konkret weiterhilft.

    Bisher habe ich nur mit einem A/D Wandler (MCP3008) gearbeitet, dies war sehr einfach doch mit dem MCP23S17 komme ich nicht weit.

    Zu meinem Problem:

    Ich möchte mit einem MCP23S17 14Mosfets schalten, jedoch funktioniert die Ansteuerung nicht, da ich mit den verschiedenen Registern nicht ganz klarkomme und noch nicht ganz verstanden habe wie ich diese im Programm aufrufe und verwende.

    Ich habe nun schon viel in Foren gesucht aber niemand hat diese Frage so beantwortet das ich damit etwas anfangen konnte.

    Ein einfaches Programmbeispiel zum ansteuern der einzelnen GPIOs der A und B Seite, sollte mir für das restliche Verständnis ausreichen.

    Ich hoffe meine Frage ist verständlich und mir kann jemand weiterhelfen, sitz nun schon seit mehreren Wochen (leider immer nur wenig Zeit) an diesem Problem.

    Danke schonmal im voraus

    Mit freundlichen Grüßen

    Benedikt

    • SPI einschalten mit raspi_config
    • Pruefen ob korrekt angeschlossen
    • import spidev

    Ein SpiDev-Objekt mit der richtigen Bus-Id erzeugen und daran xfer mit drei Argumenten aufrufen:

    Erstes Byte: 0x40

    Zweites Byte: Register

    Drittes Byte: Wert

    Der Chip ist etwas daemlich weil er zwei verschiedene Registeranordnungen kennt. Nach Power-On

    gilt:

    IODIRA 0x00

    IODIRB 0x01

    GPIOA 0x12

    GPIOB 0x13

    Alle anderen brauchst du nicht

    Initialisierung:

    xfer 0x40 0x00 0x00

    xfer 0x40 0x01 0x00

    Setzen der Ausgaenge:

    xfer 0x40 0x12 0x..

    xfer 0x40 0x13 0x..

  • Moinsen,

    Der Chip ist etwas daemlich weil er zwei verschiedene Registeranordnungen kennt.

    Das ist doch gerade das Geile, oder der Sinn, wenn man sehr schnell auf Eingabe-Events reagieren muss. Für den TO momentan und für seinen Zweck irrelevant diese INT_A / INT_B PIns, aber wenn es ROCKEN soll, und nicht nur auf ein Statemachine - Bus-Blockierung hinauslaufen soll, machen diese beiden Port-Register sehr viel Sinn. Mit ein bißchen Bit-Schieben lässt sich die Ansteuerung auch im 0-15 Modus betreiben, da muss man nicht zwanghaft im "A0-7 / B0-7" Modus arbeiten.

    Franky

Jetzt mitmachen!

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