Цитата(ARV @ Jun 6 2011, 08:38)

поэтому оператор SREG|=(1<<SREG_I); выполняется неатомарно, что может давать странные эффекты.
Практически исключено (может кроме нулевого уровня оптимизации). SREG в SFR области и такой код превратится в атомарные инструкции SBI и CBI.
Хотя нет я погорячился. SBI и CBI адресуют лишь 32 байта, а SREG за этой границей. Так что очистка-установка битиков регистра SREG по маске в общем случае - неатомарная операция.
Также стоит покопать в сторону:
Цитата(Палыч @ Jun 5 2011, 10:59)

Вероятнее всего, что как только Вы разрешили прерывания глобально (бит I в SREG), то какое-то прерывание тут же и случилось... В процедуре обработки этого прерывания был установлен 7-ой бит регистра таймера TCCR1A.