====== ESP32 Interrupt-Programmierung ===== ===== Erkennung der Flanke ==== ==== Abfrage des GPIO-Status ==== Ansatz: Abfrage des PINs unmittelbar nach Auslösung des Interrupts. void IRAM_ATTR isr_handler(void* arg) { int pinState = digitalRead(PIN); if(pinState == HIGH) { // steigende Flanke } else { // fallende Flanke } } ==== Einzelne ISRs ==== Ansatz: Getrennte ISRs für steigende und fallende Flanken void IRAM_ATTR rising_isr_handler(void* arg) { // steigende Flanke } void IRAM_ATTR falling_isr_handler(void* arg) { // fallende Flanke } /* * setup */ pinMode(PIN, INPUT); attachInterrupt(PIN, rising_isr_handler, RISING); attachInterrupt(PIN, falling_isr_handler, FALLING);