Se su un Arduino a 16MHz usi un timer a 16 bit (sul ATmega328P il Timer 1) e programmi il prescaler a 64 e carichi TCNTx (x = 1 per Timer 1) al valore 55536 (0xD8F0), hai un periodo di esattamente 40msec. indipendentemente da quello che fa il codice ... lo puoi usare per generare un interrupt che esegui esattamente con quel periodo.
Guglielmo