La considerazione del disabilitare l'interrupt rendendo gli stessi "inutili" in effetti e' corretta.
Facendo uso di delay di 1ms il problema non e' molto ma se si facesse uso di delay di secondi la cosa cambia.
Sto valutando la possibilita' di mettere un define e scegliere se implementare la funzione delay "bloccante" o meno.
In ogni modo i delay in una routine d'interrupt non sono una buona pratica, visto che indirettamente sono bloccanti in ogni modo a meno di non avere livelli multipli di interruzioni. Buona pratica e' quella di fare le ISR quanto piu' veloci possibili.
In alcuni esempi faccio uso di delay nelle ISR ma sono piuttosto didattici, anche se in questo caso hanno mostrato il problema al cambio del compilatore.
Ogni funzione se non appositamente progettata e richiamata nel main e nelle ISR e' potenzialmente non thread safe.
Il mondo delle interruzioni se visto nel dettaglio e' piuttosto difficile.
Per questo si consiglia spesso di evitare l'uso delle interruzioni annidate, per esempio supportate dalle architetture ARM Cortex M.
Ci dormo qualche altra notte sopra...
Saluti,
Mauro