Auch in deiner geänderten Fassung sicherst du immer noch unnötig das SREG. Das wird vom Compiler automatisch gemacht.

Zum eigentlichen Problem: Das fühlt sich etwas an, als ob irgendwo anstelle eines |= ein = steht. Damit überschreibt die Operation das TIMSK-Register und alle anderen Bits werden auf Null gesetzt. In deinem Codeschnipsel kann ich das aber nicht finden. Alternativ wäre es interessant, sich anzusehen was der Compiler da erzeugt (insbesondere die .lst-Datei). Gleichwohl sind Compilerfehler eigentlich selten ...

mfG
Markus