Через сколько тактов после cli будут запрещены прерывания? (ATMega8)

Привет, All!

Возник такой вопрос: сабж. Почему возник: вчера игрался с WinAVR, затем прогонял программу в VMlab. Последняя неожиданно доложила мне об том, что указатель стека улетел черти куда. При этом указатель текущей команды стоял на векторе переполнения нулевого таймера. Hачал искать бяку. Обнаружил что все это происходит на примерно такой конструкции (точных номеров регистров не помню):

{ } cli <- Здесь счетчик таймера принимает значение 0xFF и сбрасывается флаг прерываний (в смысле, VMlab это отображает). out SPH,R0 <- Здесь счетчик сбрасывается в ноль. out SPL,R1 <- А между здесь и предыдущей командой, проц улетает по вектору прерывания переполнения нулевого счетчика.

Почему это происходит при сброшенном флаге разрешения прерываний?! Это глюки VMlab, моё ламерстрво или фича кристалла?

Заранее благодарен за ответ.

ЗЫ: Происходит все это где то в недрах функции printf.

С уважением, Андрей АКА Хомич, АКА UR3LTG. ... Кpепись не выходя из запоя.(с)unknown

Reply to
Andrey Samarin
Loading thread data ...

"No interrupt will be executed after cli instruction..."

Следовательно -- глюк VMLab'а.

Reply to
Kirill Frolov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.