Paso 8: Interrumpir la rutina de servicio
Cuando estamos utilizando setIntVector(), tenemos que escribir nuestros ISRs un poco diferente de la que escribió para attachInterrupt().
En primer lugar, el ISR tiene que definirse antes de que se puede utilizar. Esto significa ponerlo frontal antes que el resto de su código.
Entonces, la declaración real es diferente. Esta vez, tenemos que especificar que la función que estamos declarando es una interrupción, mientras que antes nos podíamos declarar cualquier función antigua.
Por último, que absolutamente tiene que acordarse de usar clearIntFlat() al final de este ISR Normalmente, attachInterrupt() se encarga de limpiar la bandera después de que el ISR se ha ejecutado, pero estamos haciendo todo nosotros mismos con este código así que tenemos que borrar la bandera nosotros mismos así.
Si no terminar tu ISR con clearIntFlag() (o por lo menos, no lo utilice en alguna parte en el código) entonces siempre se activará el indicador para esa interrupción, y la interrupción sólo se reactivará después de que termine, tu código en un bucle infinito.