Спасибо большое за ответ !
пользуюсь AVRStudio 4 . моделирую схемы в Proteus .
Отпишусь о результатах позже .
При моделировании программа запускаетcя через время равное времени задержки по таймеру , дальше выполняется тело программы ( бегущие огни ) , т.е. сначала выполняется задержка по таймеру , потом обработчик прерываний ( до бесконечности ) .
Программа не выходит из обработчика прерываний .
Последний раз редактировалось RossiaForever Сб мар 09, 2013 21:33:10, всего редактировалось 1 раз.
RossiaForever писал(а):
При моделировании программа запускаетcя через время равное времени задержки по таймеру , дальше выполняется тело программы ( бегущие огни ) , т.е. сначала выполняется задержка по таймеру , потом обработчик прерываний ( до бесконечности ) .
Программа не выходит из обработчика прерываний .
Есть версия , что команда reti ( выход из прерывания ) не выполняется из-за того что перед ней стоит команда rjmp Shift , иными словами в обработчике прерывания у нас еще один бесконечный цикл ( Shift - rjmp Shift ) , из-за которого программа не доходит до выхода из прерывания .
Init: Ldi Temp1 , 0b00000001 ; начало тела программы
Shift :
cpi Temp1,0b10000000
breq Init
lsl Temp1
;********************************************
OUT PORTD,TEMP1
;********************************************
rjmp Shift ; конец тела программы
reti
Осталось самое сложное , отладить программу .
Дело вот в чем : посчитанное время задержки и время при моделировании различаются , т.е. в ниже приведенной программе при 4 МГц ( а при 8 МГц еще меньше ) я посчитал время задержки примерно 0,1 с , а при моделировании это время составляет чуть меньше 1 с .
Так же при отладке в AVRStudio 4 показывает частоту 4 МГц .
В чем может быть причина ? Заранее спасибо !!!