Я тоже стараюсь запретом прерываний не злоупотреблять. Удается. Иногда вплоть до полного отсутствия этих запретов в некоторых проектах. Способов избежать фокусов с неатомарностью действий с volatile-переменными довольно много. Зависят, правда, от архитектуры, но тут как раз тот случай, что на все случаи жизни переносимый код не сделаешь. Чтобы не забыть в дальнейшем, такие места тщательно комментирую в шапке проекта и в модуле.