|
Глюки watchdoga в меге 2560, а можетбыть и не watchdoga %| |
|
|
|
Feb 20 2008, 08:04
|
Участник

Группа: Новичок
Сообщений: 32
Регистрация: 28-04-05
Пользователь №: 4 592

|
Здарасьте всем! Такая проблема - делаю проектик на меге 2560, шла без нареканий пока не понадобилось организовать програмный сброс - просто перестаю обнулять watchdog. Резет-то происходит но только мега остается в зарезеченом состоянии.... приэтом сброс от программатора не помогает, ещё интересно что в этом состоянии можно перепрошить - но после прошивки остаётся в такомже состоянии %| .... помогает только снятие питания и перезапуск...
Сразу попробовал тестовую прогу - по сути только запуск вотчдога и дрыганье ногой в бесконечном цикле - всё тоже самое, сбрасывается и висит...
Много раз проделывал такой фокус с другими контроллерами АВР ( не 2560) - ваще никаких проблем, а тут полдня потерял всё бестолку....
ПОМОЖИТЕ! Что делать, как бороться!?
|
|
|
|
|
 |
Ответов
|
Feb 20 2008, 08:43
|
Участник

Группа: Новичок
Сообщений: 32
Регистрация: 28-04-05
Пользователь №: 4 592

|
Цитата(Kuzmi4 @ Feb 20 2008, 11:31)  2 superbizzon - как писал недавно тут товарисч - "...к величайшему сожалению телепатов тут нет.."
Желательно было б увидеть код, или его ключевые части для начала... Мда... как раз ирония в том что кода три строчки - int main() { _WDR(); WDTCSR=0x38; WDTCSR=0x28; DDRD|=0x01; while(1) { PORTD^=0x01; } } Даём питание, прошиваем... смотрим осцылом - дрыгает ногой PD1 две секунды.... потом перестаёт.... и всё, пока питалово не выключишь-включишь не начинает .... проходит две секунды опять виснет.
|
|
|
|
|
Feb 20 2008, 14:30
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(superbizzon @ Feb 20 2008, 08:43)  Рисет-то происходит, но только мега остается в зарисеченом состоянии.... приэтом сброс от программатора не помогает, ещё интересно что в этом состоянии можно перепрошить - но после прошивки остаётся в таком же состоянии %| .... помогает только снятие питания и перезапуск... Похоже, у вас таблица векторов прерываний (и адрес сброса в том числе) находится в области загрузчика, и по рисету (неважно ручному или от охранного таймера) вы направляете программу в область загрузчика. Чтобы избежать подобного, перед настройкой вотчдога поставьте две команды MCUCR=0x01; MCUCR=0x00; //вектора прерываний в начале флеша Вся программа примерно такая int main() { _WDR(); MCUCR=0x01; MCUCR=0x00; //вектора прерываний в начале флеша WDTCSR=0x38; WDTCSR=0x28; //системный сброс и период на 4с DDRD|=0x01; while(1) { PORTD^=0x01; } } Должно помочь.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Feb 21 2008, 06:12
|
Участник

Группа: Новичок
Сообщений: 32
Регистрация: 28-04-05
Пользователь №: 4 592

|
Цитата(=GM= @ Feb 20 2008, 17:30)  Похоже, у вас таблица векторов прерываний (и адрес сброса в том числе) находится в области загрузчика, и по рисету (неважно ручному или от охранного таймера) вы направляете программу в область загрузчика. Чтобы избежать подобного, перед настройкой вотчдога поставьте две команды MCUCR=0x01; MCUCR=0x00; //вектора прерываний в начале флеша
Вся программа примерно такая int main() { _WDR(); MCUCR=0x01; MCUCR=0x00; //вектора прерываний в начале флеша WDTCSR=0x38; WDTCSR=0x28; //системный сброс и период на 4с DDRD|=0x01; while(1) { PORTD^=0x01; } }
Должно помочь. 2VladimirYU - не спасло  ... ничего не изменилось 2 =GM= Тоесть - в пррограмме после включения какимто образом выставляется начальный адрес при резете на зону загрузчика.... потом я подаю внешний резет, контроллер сбрасывается, но попадает опятьже в зону загрузчика......Видимо да... очень похоже что связано с чемто таким... только не совсем понятно как и когда прописывается что он должен перезагружаться в загрузчик... пробывал вчера так - int main() { _WDR(); WDTCSR=0x38; WDTCSR=0x28; //системный сброс и период на 4с MCUCR=0x00; DDRD|=0x01; while(1) { PORTD^=0x01; } } Тоесть не - MCUCR=0x01; MCUCR=0x00; а просто MCUCR=0x00; - не помогло.... Но обязательно вечером попробую Ваш вариант, спасибо!
|
|
|
|
|
Feb 21 2008, 06:52
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(superbizzon @ Feb 21 2008, 09:12)  - не помогло.... Но обязательно вечером попробую Ваш вариант, спасибо!  В продолжение идеи от =GM=, проверьте фузы определяющие адрес вектора RESET, может на самом деле там "собака порылась".
|
|
|
|
Сообщений в этой теме
superbizzon Глюки watchdoga в меге 2560 Feb 20 2008, 08:04  VladimirYU Цитата(superbizzon @ Feb 20 2008, 11:43) ... Feb 20 2008, 09:03   superbizzon Цитата(VladimirYU @ Feb 20 2008, 12:03) П... Feb 20 2008, 09:12    VladimirYU Цитата(superbizzon @ Feb 20 2008, 12:12) ... Feb 20 2008, 09:50     superbizzon Цитата(VladimirYU @ Feb 20 2008, 12:50) Д... Feb 20 2008, 10:18      VladimirYU Цитата(superbizzon @ Feb 20 2008, 13:18) ... Feb 20 2008, 11:39       superbizzon Цитата(VladimirYU @ Feb 20 2008, 14:39) И... Feb 20 2008, 11:50    =GM= Цитата(superbizzon @ Feb 21 2008, 06:12) ... Feb 21 2008, 11:26     superbizzon Цитата(=GM= @ Feb 21 2008, 14:26) Просто ... Feb 26 2008, 07:07      Сергей Борщ Цитата(superbizzon @ Feb 26 2008, 09:07) ... Feb 26 2008, 08:20 xelax Как проблема то разрешилась?
Получил точно такую ... May 21 2008, 05:49 mdmitry Я ничего подобного не наблюдал. Может от ревизии к... May 21 2008, 12:06 xelax Если кому интересно, то разобрал проблему.
Всё ... May 26 2008, 12:04 no_d@t@ Столкнулся с точно такой же проблемой в Меге2560 п... May 27 2008, 08:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|