Duda con attachInterrupt

Con attachInterrupt() se puede hacer una interrupción cuando se necesite, pero puede esta esperar a entrar hasta que se haya terminado una instrucción anterior?
Adjunto imagen del problema que estoy intentando programar, es un semáforo. :wink:

Entiendo que el ejercicio lo vas a resolver utilizando delay() y que la interrupción la vas a usar para no tener que estar comprobando continuamente si se ha pulsado el botón de cruce peatonal. Sólo lo querrás comprobar justo después de pasar de ámbar a rojo el semáforo de una de las calles y antes de poner en verde el de la otra calle. En el caso de que se hubiera pulsado no se pondrá en verde el de la calle que le tocaba, sino que se ha de poner en verde el de peatones.

Para eso está la interrupción, para detectar la pulsación mientras el programa se ejecuta "por su cuenta". Lo único que ha de hacer la interrupción es cambiar el valor de una variable global para indicar que se ha pulsado en algún momento. Cuando vas a verificar si se ha pulsado (en el momento antes descrito) sólo has de mirar el valor de esa variable, que te indica si alguien le ha dado al pulsador. No hace falta inhabilitar la interrupción en ningún momento, basta con "poner a cero" la variable que indica que se ha pulsado cuando se pongas en rojo el semáforo de los peatones (si no lo haces se volverá a poner en verde sin que nadie pulse el botón).

El cómo se trabaja con las interrupciones supongo que ya lo sabrás, si no tienes a San Google.