Nodemcu + MCP23017 gestire interrupt

Saluti a tutti,
sto impazzendo a cercare di capire come implementare gli interrupt su un mio progetto, sto sviluppando vari moduli che poi integrerò su qualcosa di molto piu ampio, attualmente quello che vorrei capire/implementare su questo codice

#include "Adafruit_MCP23017.h"
#include <ArduinoOTA.h>
#include <ESP8266WiFi.h>
#define NUMBUTTONS 8
byte buttons[] = {8, 9, 10, 11, 12, 13, 14, 15};
byte pinLed[] = {0, 1, 2, 3, 4, 5, 6, 7};
char ssid[] = "xxxxxxxxx";               // SSID of your home WiFi
char pass[] = "xxxxxxxxx";               // password of your home WiFi

boolean led_state[NUMBUTTONS];
boolean button_state[NUMBUTTONS];
boolean previous_button_state[NUMBUTTONS];
Adafruit_MCP23017 mcp;


//----------------------Richiama funzione stato pulsante
void check_button( )
{
  for (int indice = 0; indice < (NUMBUTTONS); indice++) {
    button_state[indice] = mcp.digitalRead(buttons[indice]);//debounce(buttons[indice]);
    if (button_state[indice] == LOW && previous_button_state[indice] == HIGH)
    {
      led_state[indice] = 1 - led_state[indice];
    }
    previous_button_state[indice] = button_state[indice];
    if (led_state[indice]) mcp.digitalWrite(pinLed[indice], LOW); else mcp.digitalWrite(pinLed[indice], HIGH);
  }
}
// configurazione IO
void setup_IO()
{
  WiFi.mode(WIFI_STA);
  mcp.begin();
  Serial.begin(115200);
  WiFi.begin(ssid, pass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(5000);
    //ESP.restart();
  }
  ArduinoOTA.setHostname("test");
  //ArduinoOTA.setPassword((const char *)"xxxx");

  //------------------------ define pins:
  for (int i = 0; i < (NUMBUTTONS); i++) {
    mcp.pinMode(buttons[i], INPUT);
    mcp.pinMode(pinLed[i], OUTPUT);
    mcp.pullUp(buttons[i], HIGH);
    mcp.digitalWrite(pinLed[i], HIGH);
    led_state[i] = false;
    button_state[i] = false;
    previous_button_state[i] = false;
  }
  ArduinoOTA.begin();
}
// funsioni di sistema
void setup() {
  setup_IO();
}

void loop() {
  check_button();
  ArduinoOTA.handle();

}

e la gestione di un interrupt da parte del MCP in modo che interrompa il normale ciclo e dia priorità alla pressione dei pulsanti.
Attualmente ho collegato 8 pulsanti sugli indirizzi "B" (con debounce hardware) e 8 relè sugli indirizzi "A"del MCP.
L' esempio nella libreria Adafruit_MCP23017 da errore di compilazione qui EIFR=0x01; (non è dichiarato)
avete un esempio funzionante o un paio di suggerimenti in modo da poter capire come procedere ?
Grazie per l'attenzione