Sketch controllo encoder con interrupt - ho bisogno di chiarimenti

Vi state concentrando su un bit del registro quando gli altri sono più importanti.
E' giusto il discorso di Mauro.
Il datasheet del 328P inoltre dice che in caso di chiamata il registro di stato (tutto, non solo il bit I) DEVE essere salvato.
Questo perché all'interno dell'interrupt potrebbero essere fatti dei calcoli che cambiano la configurazione del registro e tornando da un'interrupt col registro cambiato il flusso di operazioni successive può dare risultati imprevedibili.
Copiare e incollare l'SREG non serve per riabilitare gli interrupt globali ma per salvare lo stato precedente alla chiamata all'interrupt e per me è più importante.
Parlo naturalmente per il solo Arduino, riferendomi al datasheet del 328P.

Inoltre secondo me usare il comando

SREG &= ~(1<<SREG_I);

al posto di

cli();

esegue l'impostazione di SREG più lentamente.
Cli() viene tradotto in una unica istruzione asm. bisognerebbe vedere in quante istruzioni è tradotto l'assegnamento al registro.