Ci pensa il C/C++ a fare tutto, quella doc è fondamentale per chi programma in asm, utile per chi programma in C.
Forse non è chiaro ma il mostrato è equivalente a quello di seguito:
void loop(){
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
Pos = encoderPos;
}
if(Pos != oldPos) {
Serial.println(Pos,DEC);
oldPos = Pos;
}
delay(1000);
}
Per rendere atomica (cioè non interrompibile) una porzione di codice si usa quella macro oppure la soluzione mostrata nel libro, che didatticamente ha maggiore valore di usare la macro ATOMIC...
Ciao.