tiempo dentro de una interrupción

Estoy tratando de hacer que un pulsador tenga una interrupción, pero cuando entre a ella espere 15 segundos y se apague el modulo de relevo, se que dentro de una interrupcion no vales los delay alguien me puede asesorar. No he logrado encontrar solución y creo que no puedo utilizar la opción millis() debido a que el pulsador se puede obturar en cualquier sección del programa muchas gracias

Como no pones ningun codigo que lo ilustre te hare mi propuesta de forma generica.

Creas estas variables globales:

volatile unsigned long disparo;
volatile boolean pulsacion = false;

En la rutina que atienda tu interrupcion, añades:

disparo = millis();
pulsacion = true;

Si no quieres que se reinicie la cuenta al pulsar de nuevo antes de los 15 segundos, usa esto en su lugar:

if(!pulsacion)
{
disparo = millis();
pulsacion = true;
}

Ahora en el <loop()> chequeas el valor del tiempo transcurrido:

if((millis()-disparo)>=15000) && pulsacion)
{
    "aqui pones el códgo para apagar el modulo de relevo"
    pulsacion = false;
}

Y cual es la necesidad de usar una interrupción para un evento que da igual que ocurra 1 mseg después usando código estandard?
Lo mismo que te sugiere Alfaville lo haces en el loop sin interrupción y ni cuenta te darás.