Tastendruckabfrage in der ISR an einem PCF8574

Hallo Uwe!

Danke erst einmal für die schnelle Antwort!

Wenn ich die Tastaturabfrage in der Interruptroutine mache, hängt sich der µC auf.

Kann das sein, dass die Abfrage zu lange dauert.

Sollen Interrupt Service Routine nicht so schnell wie möglich beendet werden oder muss ich noch Flag setzen?

Danke!

[
#include <Wire.h>
#include <i2ckeypad.h>

#define ROWS 4
#define COLS 3

#define I2C_Adresse 0x20

i2ckeypad kpd = i2ckeypad(I2C_Adresse, ROWS, COLS);

int interrupt0 = 0;  // Interrupt-Nummer (es gibt 2 Interrupts INT 0(PIN2) und INT 1(PIN3))
int i = 0;
volatile int taste = '\0';

void setup()
{
  Serial.begin(9600);

  Wire.begin();

  pinMode(PIN2, INPUT);
  digitalWrite(PIN2, HIGH);
  
  kpd.init();
  
  attachInterrupt(interrupt0, interruptroutine, FALLING); //Der Interrupt-Modus steht jetzt auf RISING, was bedeutet,
                                                        // dass nur auf die ansteigende Flanke des Tasters reagiert wird.
  Serial.print("Testing keypad/PCF8574 I2C port expander arduino \n\n");
}

void loop()
{
  
  //taste = kpd.get_key();

   if(taste != '\0')
   {
      Serial.print(taste);
      Serial.print("\n");
      Serial.print("interrupt=");
      Serial.print(i);
      Serial.print("\n");
        
   }
  
}
 void interruptroutine() //InterruptKeyCode
 {  
    i++;
    taste = kpd.get_key();
 }  
  
    ]