Modul zur Nutzung der Raspberry Pi GPIO

Als ich das erste Mal den Raspi in Betrieb genommen und IPS inkl. deinen Modul installiert habe, hat es mit deiner Hilfe funktioniert. Das war am 9.10.18. Danach habe ich den Raspi ordnungsgemäß heruntergefahren. Gestern habe ich ihn seitdem erstmals wieder eingeschalten, seit dem 9.10. wurde weder am Raspi noch an der Testverdrahtung etwas geändert. Als ich gestern erneut testen wollte ging wieder nichts mehr. Nach 2 Stunden habe ich mich entschlossen, alles nochmal komplett neu zu installieren, also Stretch, IPS, PIGPIO und dein Modul. Aber es hat nichts gebracht. Keine Statusänderung bei Tasterbetätigung.
Ausgänge schalten per Script klappt ohne Probleme, nur die Eingänge funktionieren nicht per Interrupt, pollen funktioniert allerdings,

Hallo computerpap,

ich glaube ich muss Joachim bzgl. nachfolgender Aussage widersprechen.

…vom Schaltplan sieht das alles ganz gut aus

Laut dem Datenblatt von der Fa. Microship, dass ich gefunden habe, ist der MCP23S17 eine Version mit SPI Schnittstelle und nicht mit einer I2C Schnittstelle. Laut dem Schaltplan ist der Chip aber an der I2C Schnittstelle des Raspi angeschlossen. Ergo kann das so nicht funktionieren. Statt an GPIO 2 und 3 müsste der Chip an GPIO 9, 10 und 11 angeschlossen werden. Oder wenn es I2C sein soll, ein MCP23017 verwendet werden.

Bitte kontrolliere das noch einmal.

Gollum

Es ist ein MCP23017, ist ein Fehler im Schaltplan.

Mir ist heute aufgefallen, wenn ich die Verbindung von INTA vom MCP23017 zu GPIO21 vom Raspi kurz trenne und dann wieder schließe, erfolgt ein Aktualisierung. Vielleicht hilft das zur Fehlersuche.

…das deutet dann eher auf einen Fehler in der Verdrahtung hin…

Wäre nett wenn da mal der ein oder andere drüber schauen könnte, ich finde jetzt so keinen Fehler bei der Verschaltung.
Die Verbindungsleitungen hab ich wie folgt angeschlossen:
rot - 3,3V
blau - GND
gelb - SDA
grün - SCL
grau - Interrupt


Für die Interruptleitung, die an GPIO21 geht, muss ich da noch irgendwas am Raspberry einstellen?

…in der Instanz muss der Interrupt-GPIO eingestellt werden (beliebter Fehler dabei: GPIO-Nummer und Pin-Nummer verwechselt). Nach Deinem Log war das soweit ich mich erinnern kann aber zu sehen…

Joachim

Ich meinte nicht eine Einstellung in dem Modul von IPS, sondern direkt im Raspi, zB. irgend eine Konfigurationsdatei oder so. Ich nutze ja den GPIO21 für den Interrupt, wie verarbeitet denn der Raspi das Signal an diesen Port?

…PIGPIO überwacht den Port und gibt eine Meldung an IPS. Konfiguriert wird PIGPIO über Deine Einstellungen in der Instanz und im Splitter…

…versuche doch Testweise mal einen anderen GPIO. Vielleicht ist darauf aus irgendeinem Grund ein anderer Dienst…

Joachim

Hallo zusammen,

laut diesem Auszug,

muss der Pegel auf der Interrupt Leitung auf High sein, wenn KEIN Interrupt anliegt (und Joachim keine Veränderungen in der Konfiguration des 23017 vorgenommem hat), ist das so?
Bei einem Interrupt muss diese Leitung auf 0V gezogen werden.
Probier doch mal die Interrupt Leitung aufzutrennen und mal den GPIO Interrupt Eingang auf 0V GND zu legen. Wird dann der Wert ausgelesen ind in IPS aktualisiert?
(Ich meinte einfach mal kurz verbinden. Jede kurze Verbindung müsste zu einer Aktualisierung der IPS Variable führen)

Vielleicht fehlt einfach auf der Interrupt Leitung ein Pull-Up!?

#Joachim, ich hab schon so ziemlich jeden freien GPIO am Raspi getestet, daran liegt es nicht.

#Gollum, ich denke dein Denkanstoß geht in die richtige Richtung.
Wenn ich den Raspi neu starte, dann mess ich an der Interruptleitung 3,3V. Betätige ich jetzt den Taster passiert nichts.
Ein Pull up, ich hab einen 10k genommen hat auch nichts gebracht. Ziehe ich nun die Interruptleitung am MCP23017 ab und halte sie zB. an eine LED, dann ziehe ich den Pegel auf 0V. Stecke ich diese Leitung wieder an, funktioniert direkt sofort der Taster.
Daraus kann man doch schließen, dass man statt einen Pull up, einen Pull down braucht, oder denke ich da verkehrt.
Allerdings habe ich mit einen 10k als Pull down keinen Erfolg gehabt. Wie weit kann man denn mit den Wert von einen Pull down Widerstand da noch runtergehen?

Hallo computerpap,

mach mal folgendes und poste die Ergebnisse:

  • Interruptleitung entfernen!!!
  • Nachdem der Raspi gestartet ist und alles läuft, die Spannung am Interrupt GPIO messen
  • Und dann auch die Spannung am MCP23017 am Interrupt Ausgang

Standardmässig ist der Interrupt Ausgang am MCP23017 Low Aktiv. D.h. er wird im Fall eines Interrupts nach 0V (GND gezogen. Prüf das mal nach! Mess die Spannung an dem Interrupt Ausgang und betätige gleichzeitig den Taster. Geht die Spannung am 23017 Interrupt Ausgang auf 0V?

Dann zum Raspi. Dort muss geklärt werden wie die Einstellungen des Interrupt Eingangs sind!!!
Ist es tatsächlich ein Eingang? Wichtig! Wahrscheinlich aber schon, weil du hattest ja bereits einige erfolgreiche Versuche. Aber ist das sicher?

Wenn es ein Eingang ist, kannst du dort am offenen Eingang 3,3V messen. Nein? Dann fehlt dort ein PullUp.
Denn der 23017 möchten diesen Eingang ja nach 0V ziehen.
Einen Eingang kannst du testweise auch ohne Widerstand auf GND legen.
Und wenn es sich um einen richtig konfigurierten Interrupteingang handelt, muss das dazu führen, dass eine Reaktion bis ins IPS hinein erfolgt.

Gruß

Gollum

…zur Erläuterung:

  • Bei der Initialisierung des MCP23017 werden sowohl ODR als auch INTPOL auf 0 gesetzt (im Modul fest definiert)
  • Der GPIO wird - wenn er als Interrupt definiert wird - als Eingang konfiguriert
  • Der GPIO kann - wenn in der Modul-Instanz so ausgewählt - mit einem internen Pull-Up von 100kOhm gesetzt werden

Ob das Modul hier richtig arbeitet, kann relativ einfach getestet werden: Einfach mal den GPIO wechselweise mit GND und 3,3V verbinden - es sollte durch das entstehende Prellen ein Feuerwerk an Meldungen entstehen.

Joachim

Hallo Joachim,

danke für die Erläuterung. Ich denke die war sehr hilfreich. Bleibt nur noch eine Frage.

Ist der Eingang im Raspi dann auch Low Aktiv?

Gruß

Gollum

…das muss er nicht - er reagiert einfach auf Pegeländerungen, der Rest wird vom Modul verarbeitet…

Joachim

mach mal folgendes und poste die Ergebnisse:

  • Interruptleitung entfernen!!!
  • Nachdem der Raspi gestartet ist und alles läuft, die Spannung am Interrupt GPIO messen
  • Und dann auch die Spannung am MCP23017 am Interrupt Ausgang

Interruptleitung getrennt, danach Raspi hochgefahren:
-am Interrupt GPIO des Raspi liegen 0,0V an,
-am Interrupt GPIO (INTA) des MCP23017 liegen 3,3V an,

Interruptleitung wieder angeschlossen, es liegen weiterhin 3,3V an,
jetzt Taster betätigt, die Spannung geht auf 0,0V, und bleibt nach loslassen des Tasters auf 0,0V,
Erst nach einen GPIO-Restart geht die Spannung wieder auf 3,3V.

Ob das Modul hier richtig arbeitet, kann relativ einfach getestet werden: Einfach mal den GPIO wechselweise mit GND und 3,3V verbinden - es sollte durch das entstehende Prellen ein Feuerwerk an Meldungen entstehen.

Gebe ich abwechselnd 3,3V und 0,0V auf den Interrupt GPIO des Raspi, laufen jede Menge Meldungen ein.

Jetzt habe ich einen Pull up (10k) an die Interruptleitung gehängt, jetzt funktioniert das ganze ca. 4-6 mal, dann bleibt der Pegel wieder auf 0,0V.
Der Pegel geht erst wieder auf 3,3V, wenn ich entweder einen GPIO-Restart mache, oder wenn ich die Verbindung kurz auftrenne.

…ein ähnliches Phänomen hatte ich mal, als der Reset nicht richtig beschaltet war. Eingezeichnet hast Du es, ist der auch richtig auf vcc?