>>48
AVRの場合16bitとか32bit変数のアクセスは、マシン語レベルでは複数個の
8bitメモリアクセス命令で実行されるから、途中で割り込みがかかる可能性がある

例えば、メイン側読み出し中に割り込み側で新しい値を書き込んだ場合
単に一つ前の値が読みだされるとかじゃなくて、下位バイトは古い値で
上位バイトは新しい値とかなってめちゃくちゃになる
そういうことが起きないようにするには、一時的に割り込み禁止するか
2回続けて同じ値になるまで読み出すループを作るとかしかない