Tastendruckabfrage in der ISR an einem PCF8574

TerraHoff:
Kann mir denn niemand helfen? :frowning:

Was Du da vorhast, mit einem per Portexpander angeschlossenen Keypad innerhalb einer Interruptbehandlung per I2C-Kommunikation mit einer nicht interruptfesten fremden Library die Tasten abzufragen, halte ich für ein aussichtsloses Unterfangen.

Mein Vorschlag:
Entweder schließt Du Dein Keypad ohne Portexpander direkt an 7 I/O Pins des Arduino an und wertest den Zustand innerhalb einer Interruptbehandlung selbst aus, falls Du genügend freie I/O Pins hast. Oder Du verabschiedest Dich von der Idee, die Tastaturabfrage über Portexpander und I2C-Kommunikation unbedingt innerhalb einer Interruptbehandlung machen zu wollen und machst die Abfrage in der loop-Funktion.

Wenn Dein Programmdesign nicht komplett verhunzt ist, läuft die loop-Funktion doch selbst in einem komplexen Programm (das natürlich frei von "delay()" sein muss) mindestens auf einer "Drehzahl" von 1000 pro Sekunde, d.h. Du kannst innerhalb von einer Millisekunde in der loop() auf einen Tastendruck reagieren, und das ist um zwei Zehnerpotenzen schneller als die normale menschliche Reaktionszeit.