Sketch controllo encoder con interrupt - ho bisogno di chiarimenti

@Leo
Leggevo ieri nel datasheet del 328p, pag 13 mi pare, che il registro di stato non é salvato in automatico durante l'esecuzione di una ISR ma é compito del software prevederlo. Questo é quello che si fa col cSREG e SREG.
Da quanto ho letto sei() non é necessario perché al rientro fa una ISR il registro globale degli interrupt é impostato attivo.

Anzi per essere precisi, durante la chiamata il registro è disabilitato e tutti gli interrupt sono spenti, in questo modo un altro interrupt non interrompe il corrente e vengono riabilitati in uscita.
Il valore che salvi in cSREG è quello con il registro interrupt disabilitato, riscrivendolo pari pari all'uscita lo lasci disabilitato e poi è il micro al rientro dalla ISR che li riabilita globalmente.
Quello che interessa di SREG sono gli altri parametri, non quello delle interrupt.

Ultimo datasheet --> http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf

A pag. 14

When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. The user software can write logic one to the I-bit to enable nested interrupts. All enabled interrupts can then interrupt the current
interrupt routine. The I-bit is automatically set when a Return from Interrupt instruction – RETI – is executed.

e ancora

When the AVR exits from an interrupt, it will always return to the main program and execute one more instruction
before any pending interrupt is served.

e infine

Note that the Status Register is not automatically stored when entering an interrupt routine, nor restored when returning from an interrupt routine. This must be handled by software.

Comunque da quanto si legge non vengono eseguite 2 ISR di seguito ma sempre intervallate da almeno una istruzione del flusso principale. Infatti con l'istruzione sei() prima di un qualsiasi interrupt viene prima eseguita l'istruzione successiva.

When using the SEI instruction to enable interrupts, the instruction following SEI will be executed before any pending interrupts, as shown in this example.

Il datasheet è una miniera d'oro.