|
Несанкционированый сброс отладчика в AVR Studio 4.16, Сброс при выполнении отладки на метку RESET |
|
|
|
Jan 2 2010, 18:32
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Здравствуйте! Меня зовут Максим. Всеръез занимаюсь программированием. Может есть кто специалисты. Подскажите пожалуйста. Я пишу программу в AVR Studio на ассемблере. Программирую AtMega32. Так вот не могу понять почему при отладке программы - в дебаг режиме происходит сброс программы на метку RESET через определенные промежутки времени (262,14ms)? МОЖЕТ КТО ВСТРЕЧАЛ ТАКУЮ ПРОБЛЕМУ? P.S. Причем команда WDR расставлена по листингу самой программы через каждые два шага, Со стеком программа работает корректно. Мной ошибки не выявлены. Если кто заинтересовался прикрепляю листинг своей программы (хотя , конечно не все поймут ее содержимое, просто на всякий случай). (Содержимое из файла копируется в созданный в AVR Studio 4.16 проект на AtMega32 8.00 мегагерц. Втыкаете листинг в проект и можно переходить в режим отладки). Никогда ранее не сталкивался с проблемами непроизвольного сброса отладчика в AVR Studio 4.16. И не могу понять по какому событию в WatchDoge происходит сброс выполнения програмы. Инициализирую WatchDog в программе так: Код wdr ldi r16, 15 ; Или 0b00001111 в двоичном виде "Сброс через около 2 сек" out WDTCR, r16 wdr и все через 262,14ms выполнения программы я снова на метке RESET. Если сбрасываю WDE то программа выполняется без проблем строго следуя операторам вызова подпрограмм и возврата из них. НО С НЕИНИЦИАЛИЗИРОВАННЫМ WATCHDOGOM Что не приемлемо для меня по условию задачи.
Причина редактирования: Оформление кода
|
|
|
|
|
 |
Ответов
|
Jan 2 2010, 22:11
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Значит у вас не вываливается мой листинг программы говорите? Может быть AVR Studio переустановить? А куча разных глюков вываливается в окне MESSAGE? После нажатия кнопки DEBUG чтоли? Цитата(MaksimYrievich @ Jan 3 2010, 00:59)  Значит у вас не вываливается мой листинг программы говорите? Может быть AVR Studio переустановить? А куча разных глюков вываливается в окне MESSAGE? После нажатия кнопки DEBUG чтоли? Я тоже вижу что не по ватчдогу - нет его в MCUCRе по приходу на ресет. Вот сижу и не могу въехать. Первый раз с таким столкнулся. Причем , могу сказать, что если при подходе счетчика ко времени 262ms плюс, минус там сколько то , сбросить WDE не на долго и установить, то далее программа движется без вылетов Цитата(galjoen @ Jan 3 2010, 00:49)  На мой взгляд что-то со стеком. В результате переход на неициализированную часть флеш... Работу стека анализировал сбоев не обнаружено. Однако, сброс не осуществляется при отключенном ватчдоге 0<<WDE. Ход программы при 0<<WDE остается нормальным далеко за пределами 5 секунд.
Сообщение отредактировал rezident - Jan 2 2010, 22:39
Причина редактирования: Нарушение п.3.4 Правил форума.
|
|
|
|
|
Jan 2 2010, 23:08
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(MaksimYrievich @ Jan 3 2010, 01:11)  Вот сижу и не могу въехать. Вначале нужно от глюков избавится. Типа таких: Код CLOCK: nop wdr rjmp clock ldi r16, ClearDispl call CommandDisplay Тут на команду ldi никогда не попадём. Про последовательность sei reti я уже писал. Какой смысл тут в sei? Одно это может к такому результату привести. Сразу после reti будет новое прерывание и ни одной команды из цикла CLOCK выполнено не будет. Ватчдог не сбросится. Команду reti именно из-за этого и придумали. Чтобы хоть одна команда между двумя прерываниями выполнилась. А так бы она не нужна была. Достаточно было бы Код sei ret написать. Ну и множество других подобных глюков...
|
|
|
|
|
Jan 3 2010, 00:20
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
В приведенном мной листинге программа специально зациклена для исключения ошибок в стеке просто для простоты понимания проблемы. В реальной программе конечно такой строки нет "rjmp CLOCK". И действительно, SEI в прерывании ставить нельзя... Ситуация поправлена в исходниках спасибо за подсказку, но проблема то с вылетом остается ! У меня вылетает еще некое сообщение смысл которого я не могу разобрать - "Target not Ready". У вас есть такое? Может знаете что оно значит? Сообщение об ошибке. Что это значит?
Причина редактирования: Бездумное цитирование
|
|
|
|
|
Jan 3 2010, 16:38
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(MaksimYrievich @ Jan 3 2010, 03:20)  ... Ситуация поправлена в исходниках спасибо за подсказку, но проблема то с вылетом остается ! Я уже писал, что не стоит пытаться решить проблемму подправив к.л. одну команду. У вас глюков там множество. Даже если всё каким то чудом заработает, то это не значит, что после минимальных изменений будет продолжать работать. Поэтому нужно посидеть под отладчиком. Причём отладить каждую подпрограмму в отдельности. А подпрограмму обработки прерывания особенно! Вставить после инициализации call на неё и смотреть что происходит с регистрами. Всё ли восстанавливается как было. Программа у вас небольшая, и вполне можно это сделать. И только когда вы будете уверены во всех подпрограммах, то можно идти дальше. Вам опыта не хватает, так компенсируйте это трудолюбием. А потом и опыт появится. По листингу видно, что вы стараетесь, но эти старания пропадают даром из-за ошибок, описок, непонимания того как работает аппаратура и т.п. Вот например в обработчике прерывания написано: Код ldi r25, SREG ; а д.б. так: in r25, SREG В итоге у вас SREG будет изменятся в этом прерывании, и будут совершенно непредсказуемые глюки, которые можно искать неделями... Ну описались, с кем не бывает. Но если ВДУМЧИВО пройтись отладчиком, такая ошибка находится мгновенно.
|
|
|
|
Сообщений в этой теме
MaksimYrievich Несанкционированый сброс отладчика в AVR Studio 4.16 Jan 2 2010, 18:32 galjoen Цитата(MaksimYrievich @ Jan 2 2010, 21:32... Jan 2 2010, 19:52 MaksimYrievich Интересно, а в каком датасшите написано про это? И... Jan 2 2010, 20:06 galjoen В любом даташите на AVR, в разделе про ватчдог.
Бо... Jan 2 2010, 20:18 MaksimYrievich Цитата; ***** WATCHDOG *********************
; WDT... Jan 2 2010, 20:33 galjoen Цитата(MaksimYrievich @ Jan 2 2010, 23:22... Jan 2 2010, 20:34 MaksimYrievich Попробовал но ни к чему не привело все равно выкид... Jan 2 2010, 20:45 galjoen Цитата(MaksimYrievich @ Jan 2 2010, 23:45... Jan 2 2010, 20:53 MaksimYrievich Сейчас попробуем!?
Ничего не изменилось. Я в... Jan 2 2010, 21:30 galjoen Цитата(MaksimYrievich @ Jan 3 2010, 00:30... Jan 2 2010, 21:49 MaksimYrievich Спасибо за подсказку. Видимо мне действительно не ... Jan 3 2010, 18:26 galjoen Автоматически ничего не обнаружится - это ассембле... Jan 3 2010, 19:13  MaksimYrievich Может кините код какой нибудь взглянуть как надо р... Jan 3 2010, 19:43   galjoen Там ещё глюки есть...
Но не надо добиваться чтобы ... Jan 3 2010, 21:14    MaksimYrievich galjoen
Ещё как пригодится!!! А как вы... Jan 3 2010, 22:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|