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

 
 
> ATMega328P WatchDog
Ioann_II
сообщение Mar 12 2017, 02:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797



Здравствуйте, Уважаемые коллеги.

Столкнулся с такой вот проблемой - не получается запустить сторожевой таймер в режиме Сброс.
Делаю так:

Код
WDR ();     // сброс счетчика сторожевого таймера
WDTCSR = WDTCSR | (1<<WDCE) | (1<<WDE);
// запуск сторожевого таймера с предделителем на 512К (0,55с)
WDTCSR = (1<<WDE) | (1<<WDIE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
SEI();      // разрешить прерывания

Работает в режиме прерываний. Действительно, срабатывает прерывание.

Если настраиваю так:

Код
WDR ();     // сброс счетчика сторожевого таймера
WDTCSR = WDTCSR | (1<<WDCE) | (1<<WDE);
// запуск сторожевого таймера с предделителем на 512К (0,55с)
WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
SEI();      // разрешить прерывания

То, не работает. Точнее, срабатывает, но вместо перезапуска, останавливает работу МК. Далее помогает только если снять питание и подать заново.

Стакливался кто? или может, что-то не так делаю???

Спасибо.

Сообщение отредактировал IgorKossak - Mar 12 2017, 15:31
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Mar 16 2017, 09:04
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(Ioann_II @ Mar 12 2017, 04:29) *
То, не работает. Точнее, срабатывает, но вместо перезапуска, останавливает работу МК. Далее помогает только если снять питание и подать заново.


Как Вы узнаете, что не срабатывает, а останавливает работу МК?
Может он, например, срабатывает циклически.
Сначала проверьте снимаете ли Вы собачий флаг - в доке рекомендация его очищать даже если WatchDog не используется.

Go to the top of the page
 
+Quote Post
Ioann_II
сообщение Mar 18 2017, 01:12
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797



Цитата(aiwa @ Mar 16 2017, 12:04) *
Как Вы узнаете, что не срабатывает, а останавливает работу МК?
Может он, например, срабатывает циклически.
Сначала проверьте снимаете ли Вы собачий флаг - в доке рекомендация его очищать даже если WatchDog не используется.

Инициализацию я уже приводил. Настроен на интервал примерно 0,55с.
После неё стоит следующее:
Код
LCD_String("INIT",0,0);
sleep(3000);
LCD_Command(0x01);
LCD_String("NO WATHCHDOG!!!",0,0);

и
Код
#pragma interrupt_handler wdt_isr:iv_WDT
void wdt_isr(void)
{
//watchdog timeout
LCD_String("INTERRUPT!!!",0,1);

sleep(1000);
resetFunc();
}

Соответственно, если отключен, то вижу надпись "INIT", через полсекунды "NO WATCHDOG".
Если включен в режиме прерываний, то вижу "INIT", затем "INTERRUPT". Когда в прерывании есть resetFunc(), то всё по кругу.
Если включаю в режиме сброса, то вижу надпись "INIT", которая через полсекунды гаснет.... И ВСЁ!!!! более ничего не происходит.
Отсюда делаю вывод, что в режиме сброса у меня он не заработал.

Сообщение отредактировал IgorKossak - Mar 18 2017, 15:05
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 18 2017, 08:15
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Ioann_II @ Mar 18 2017, 03:12) *
Если включаю в режиме сброса, то вижу надпись "INIT", которая через полсекунды гаснет.... И ВСЁ!!!! более ничего не происходит.
Еще раз внимательно перечитайте мое предыдущее сообщение и покажите настройку собаки.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 23:03
Рейтинг@Mail.ru


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