Change digitalPinToInterrupt to return pin, and use g_APinDescription[pin].ulExtInt to map pin inside attachInterrupt/detachInterrupt This brings things inline with the atachInterrupt documentation for usage: attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);