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

 
 
> Глюки 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
VladimirYU
сообщение Feb 20 2008, 09:03
Сообщение #4


Местный
***

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



Цитата(superbizzon @ Feb 20 2008, 11:43) *
Мда... как раз ирония в том что кода три строчки -

int main()
{
_WDR();
WDTCSR=0x38;
WDTCSR=0x28;

DDRD|=0x01;

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

Даём питание, прошиваем... смотрим осцылом - дрыгает ногой PD1 две секунды.... потом перестаёт.... и всё, пока питалово не выключишь-включишь не начинает .... проходит две секунды опять виснет.

Проверьте фуз WDTON, может быть Вы уходите в прерывание по WDT, а не в сброс. А дальше бегом по памяти куда глаза глядят.
Go to the top of the page
 
+Quote Post
superbizzon
сообщение Feb 20 2008, 09:12
Сообщение #5


Участник
*

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



Цитата(VladimirYU @ Feb 20 2008, 12:03) *
Проверьте фуз WDTON, может быть Вы уходите в прерывание по WDT, а не в сброс. А дальше бегом по памяти куда глаза глядят.


Тогда почему не помогает внешний резет? ( пробывал через програматор, да и ~RESET замыкал на ноль - ничего не происходит)

Ну и выставлено вроде всё верно, так -
WDTON - 1 (всмысле отключен) , WDE - 1, WDIE - 0

Пробывал WDTON выставлять в 0 - вообще не запускается. стоит после прошивки и ни БЭ ни МЭ...
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 20 2008, 09:50
Сообщение #6


Местный
***

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



Цитата(superbizzon @ Feb 20 2008, 12:12) *
Тогда почему не помогает внешний резет? ( пробывал через програматор, да и ~RESET замыкал на ноль - ничего не происходит)

Ну и выставлено вроде всё верно, так -
WDTON - 1 (всмысле отключен) , WDE - 1, WDIE - 0

Пробывал WDTON выставлять в 0 - вообще не запускается. стоит после прошивки и ни БЭ ни МЭ...

Да вроде все правильно, попробуйте перед инициализацией WDT обнулить MCUSR = 0;
Go to the top of the page
 
+Quote Post
superbizzon
сообщение Feb 20 2008, 10:18
Сообщение #7


Участник
*

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



Цитата(VladimirYU @ Feb 20 2008, 12:50) *
Да вроде все правильно, попробуйте перед инициализацией WDT обнулить MCUSR = 0;


Попробую канешна... но дело в том что после подачи питания до момента переполнения WDT всё идёт правильно... а когда происходит сброс конртроллер какбы замирает - никакие команды не выполняются ( пробывал первой строчкой ставить поднятие ноги на другом порте а потом её опускал... так вот после WDReseta она не поднимается) , это я к тому, что если первой строкой поставить обнуление MCUSRа то оно пройдет только в первый раз после подачи питания, и при резете от WDT не возымеет никакого действия... sad.gif

но хотя это чисто предположения - обязательно проверю, спасибо!
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 20 2008, 11:39
Сообщение #8


Местный
***

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



Цитата(superbizzon @ Feb 20 2008, 13:18) *
Попробую канешна... но дело в том что после подачи питания до момента переполнения WDT всё идёт правильно... а когда происходит сброс конртроллер какбы замирает - никакие команды не выполняются ( пробывал первой строчкой ставить поднятие ноги на другом порте а потом её опускал... так вот после WDReseta она не поднимается) , это я к тому, что если первой строкой поставить обнуление MCUSRа то оно пройдет только в первый раз после подачи питания, и при резете от WDT не возымеет никакого действия... sad.gif

но хотя это чисто предположения - обязательно проверю, спасибо!

В меге128 пока вот так не сделал тоже была какая то лажа, к сожалению, подробности не помню.
// Инициализация WDT
_WDR();
WDTCR=0x1f;
WDTCR=0x0f; // init WDT
MCUCR=0x00;
В предыдущем посте ошибся не до, а после инициализации. Структура регистров у 128 и 2560 аналогичная, отличается немного битами прескалера и несколькими дополнительными, которые Вы не используете.

Цитата(VladimirYU @ Feb 20 2008, 14:24) *
В меге128 пока вот так не сделал тоже была какая то лажа, к сожалению, подробности не помню.
// Инициализация WDT
_WDR();
WDTCR=0x1f;
WDTCR=0x0f; // init WDT
MCUCR=0x00;
В предыдущем посте ошибся не до, а после инициализации. Структура регистров у 128 и 2560 аналогичная, отличается немного битами прескалера и несколькими дополнительными, которые Вы не используете.

И еще. Посмотрел несколько своих проектов везде аналогичная конструкция, везде работает на разных мегах 16,32,64, 128. Ничего не хочу утверждать, пользуюсь ей "на автопилоте" после того, как поимел схожие проблемы. Перед инциализацией все прерывания запрещаю.
Go to the top of the page
 
+Quote Post
superbizzon
сообщение Feb 20 2008, 11:50
Сообщение #9


Участник
*

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



Цитата(VladimirYU @ Feb 20 2008, 14:39) *
И еще. Посмотрел несколько своих проектов везде аналогичная конструкция, везде работает на разных мегах 16,32,64, 128. Ничего не хочу утверждать, пользуюсь ей "на автопилоте" после того, как поимел схожие проблемы. Перед инциализацией все прерывания запрещаю.


Спасибо за ответ!
К сожалению попробывать смогу только вечером... так что отпишусь только завтра.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- superbizzon   Глюки watchdoga в меге 2560   Feb 20 2008, 08:04
|- - =GM=   Цитата(superbizzon @ Feb 20 2008, 08:43) ...   Feb 20 2008, 14:30
|- - superbizzon   Цитата(=GM= @ Feb 20 2008, 17:30) Похоже,...   Feb 21 2008, 06:12
|- - VladimirYU   Цитата(superbizzon @ Feb 21 2008, 09:12) ...   Feb 21 2008, 06:52
|- - =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 Текстовая версия Сейчас: 8th August 2025 - 21:43
Рейтинг@Mail.ru


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