Concordo con Mauro. I timer avanzano e così i contatori che sono gestiti dagli stessi ma le variabili del programma non sono modificate finché la relativa ISR non viene eseguita. Siccome di default avr-gcc compila ogni ISR affinché sia "atomica" (cioè che venga eseguita dall'inizio alla fine senza possibilità di essere interrotta da un'altra chiamata di interrupt), se in una ISR hai una porzione di codice che deve andare avanti in base ad una modifica fatta all'interno di un'altra ISR, quella tua porzione di codice resterà bloccata vita natural durante.