MCP23017 Interrupt Pull Up Down

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo, ich habe aktuelle 5 Tastschalter per GPIOs abgefragt. Jetzt brauche ich diese GPIOs für etwas anderes und möchte die Taster auf den MCP23017 auslagern. Sollte ja eigentlich kein Problem sein.

    Wie müsste ich den den Code anpassen wenn ich für die Taster jetzt die
    GPA 0 bis 4 verwenden möchte?

    # GPIO Schalter definieren
    GPIO.setup(9, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
    GPIO.setup(10, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
    GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
    GPIO.setup(22, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
    GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

    GPIO.add_event_detect(9, GPIO.RISING, callback = InterruptCodeUp, bouncetime = 750)
    GPIO.add_event_detect(10, GPIO.RISING, callback = InterruptCodeDown, bouncetime = 750)
    GPIO.add_event_detect(11, GPIO.RISING, callback = InterruptReturn, bouncetime = 750)
    GPIO.add_event_detect(23, GPIO.RISING, callback = InterruptLifeTimeUp, bouncetime = 750)
    GPIO.add_event_detect(22, GPIO.RISING, callback = InterruptLifeTimeDown, bouncetime = 750)

  • Beispiel für eine Taste an der GPA Leiste

  • Danke schön, leider hilft mir das nicht so recht weiter.

    Das habe ich noch im Internet gefunden.
    Das geht soweit auch. Aber! Ich möchte das ganze ja mit Interrupts lösen und ohne Sleep.
    Hat jemand eine Ahnung wie ich das mit Interrupts machen, also Ähnlich wie in meinem ersten Beitrag mit den GPIOs?

  • Du musst einen der GPIOs vom Raspberry Pi mit der Interrupt Line des ICs verbinden und nach auslösen des Interrupts entsprechend auswerten, welcher Eingang diesen ausgelöst hat. ;)

    Für meine Alarmanlage musste ich im Prinzip das selbe implementieren. Ich hab das jetzt schnell rauskopiert und einwenig abgewandelt. Müsste aber so in der Art funktionieren. Gegebenenfalls Formatierung prüfen ;)


    Einmal editiert, zuletzt von Chris1705 (2. November 2013 um 18:44)

  • Danke, das klingt gut.
    Leider klappt es trotz Tab Anpassung nicht:

    [font="Menlo"]root@raspberrypi:/home# ./i2c_input.py [/font]
    [font="Menlo"] File "./i2c_input.py", line 58[/font]
    [font="Menlo"] def main():[/font]
    [font="Menlo"] ^[/font]
    [font="Menlo"]IndentationError: unexpected unindent[/font]


    Code
    def main():
       GPIO.add_event_detect(24, GPIO.FALLING, callback = check_state, bouncetime = 10)

    [font="Menlo"]Aber ein Fehler ist mir da nicht ersichtlich.[/font]

  • Tatsächlich. Danke. Dann teste ich mal schnell.

    Am Ende noch eine # Endlosschleife
    while True:
    time.sleep(1)
    Jetzt startet das Skript und bleibt auch aktiv.

    Aber wenn ich den GPA0 oder GPA1 mit dem Ground verbinde passiert nichts. Normal müsste der jetzt ja auslösen.

    Muss ich den GPIO 24 noch als Taster definieren?
    GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

  • Das hatte ich eben schon mal gecheckt:

    Code
    root@raspberrypi:/home# sudo i2cdetect -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --


    Sieht meiner Meinung nach gut aus.
    Somit sollte die Verkabelung ja korrekt sein.

  • Erst mal viele Danke für dein Einsatz.

    Aber irgendwie klappt es noch nicht ganz. Vielleicht stelle ich mich auch einfach nur ungeschickt an. Habe den GPIO auf 24 geändert.



    Lag wohl an der Ascii Zeile.

Jetzt mitmachen!

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