Man muss den Interrupt nur dann atomar machen, wenn die Variable in einer ISR auch verändert werden kann.
Die Befehle "enable Interrupts" und "disable Interrupts" sollten sehr schnell und kurz sein (1-2 Worte und Zyklen) die lassen sich nämlich direkt in ASM Befehle SEI (ggf. noch ein NOP dazu) und CLI übersetzen. Da kann man also ruhig mehrmals kurz die Interrupts sperren.

Wie lange die Interrupts insgesamt gesperrt sind ist oft nicht so wichtig. Störungen kann es geben wenn Interrupts zu lange in eins unterbrochen sind. Da kann es ggf. sogar sinnvoll sein die Interrupts nur kurz wieder frei zu geben auch wenn der nächste Befehl schon wieder ein "disable Interrupts"ist.

Das verhalten mit dem Wait 100 ms und Wait 1 ms ist schon verdächtig. Da ist vermutlich ein Fehler drin, der bei der längeren Wartezeit nur seltener auftritt.