реклама на сайте
подробности

 
 
> Глюки watchdoga в меге 2560, а можетбыть и не watchdoga %|
superbizzon
сообщение Feb 20 2008, 08:04
Сообщение #1


Участник
*

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



Здарасьте всем! Такая проблема - делаю проектик на меге 2560, шла без нареканий пока не понадобилось организовать програмный сброс - просто перестаю обнулять watchdog. Резет-то происходит но только мега остается в зарезеченом состоянии.... приэтом сброс от программатора не помогает, ещё интересно что в этом состоянии можно перепрошить - но после прошивки остаётся в такомже состоянии %| .... помогает только снятие питания и перезапуск...

Сразу попробовал тестовую прогу - по сути только запуск вотчдога и дрыганье ногой в бесконечном цикле - всё тоже самое, сбрасывается и висит...

Много раз проделывал такой фокус с другими контроллерами АВР ( не 2560) - ваще никаких проблем, а тут полдня потерял всё бестолку....

ПОМОЖИТЕ! Что делать, как бороться!?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kuzmi4
сообщение Feb 20 2008, 08:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 superbizzon - как писал недавно тут товарисч - "...к величайшему сожалению телепатов тут нет.."

Желательно было б увидеть код, или его ключевые части для начала...
Go to the top of the page
 
+Quote Post
superbizzon
сообщение Feb 20 2008, 08:43
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 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 две секунды.... потом перестаёт.... и всё, пока питалово не выключишь-включишь не начинает .... проходит две секунды опять виснет.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2008, 14:30
Сообщение #4


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;
}
}

Должно помочь.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
superbizzon
сообщение Feb 21 2008, 06:12
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 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 - не спасло sad.gif ... ничего не изменилось


2 =GM=

Тоесть - в пррограмме после включения какимто образом выставляется начальный адрес при резете на зону загрузчика.... потом я подаю внешний резет, контроллер сбрасывается, но попадает опятьже в зону загрузчика......Видимо да... очень похоже что связано с чемто таким... только не совсем понятно как и когда прописывается что он должен перезагружаться в загрузчик...

пробывал вчера так -
int main()
{
_WDR();
WDTCSR=0x38;
WDTCSR=0x28; //системный сброс и период на 4с

MCUCR=0x00;

DDRD|=0x01;
while(1)
{
PORTD^=0x01;
}
}


Тоесть не -
MCUCR=0x01;
MCUCR=0x00;

а просто
MCUCR=0x00;

- не помогло.... Но обязательно вечером попробую Ваш вариант, спасибо! smile.gif
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 21 2008, 06:52
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(superbizzon @ Feb 21 2008, 09:12) *
- не помогло.... Но обязательно вечером попробую Ваш вариант, спасибо! smile.gif

В продолжение идеи от =GM=, проверьте фузы определяющие адрес вектора RESET, может на самом деле там "собака порылась".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 17:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01421 секунд с 7
ELECTRONIX ©2004-2016