Volatile and ISRs: The Bottom Line (p.175)非公式訳

volatileとISR: 大切なこと

函数(main()も含む)とISRとで同じグローバル変数を共有する場合、その変数はvolatileとして宣言しなければなりません。

ISRが実行されているかどうかは函数の側からは直接見えないため、その変数が函数のスコープ内で変化するかどうかはコンパイラーにはわからず、変数が定数に置き換えられてしまう可能性があります。コンパイルは正しく実行されるでしょうが、ISRは何も実行してくれず、この注意事項を読んだことを思い出すまでに頭を10分間かくはめになるでしょう。

―――――――――――――――――――
ヴァラトゥル

http://wdme3.dual-d.net/audio/V/01031133.wav