Цитата(Mihey_K @ Jul 15 2015, 07:11)

если пишете в прерывании в глобальную переменную, всегда делайте ее volatile.
Такой совет скорее из серии вредных. Во-первых, для глобальной переменной, которая пишется/читается
только в невытесняющих друг друга прерываний volatile не нужен. Он даже лишний, ибо связывает руки оптимизатору и заставляет программиста в погоне за скоростью/размером раздувать исходник ненужными ручными кешированиями такой переменной во временные. Во-вторых переменная, которая читается в прерывании, а пишется в основном цикле или в вытесняющем прерывании volatile тоже обязателен. То есть полностью правило звучит так: volatile обязателен для переменных, которые используются в нескольких потоках управления (неважно каких - прерывание и основной цикл, два вытесняющих прерывания, два потока/процесса/нити в ОС и т.п.).