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

 
 
> Неправильная работа Watch Dog Timer'a, WDT не работает
SerSh
сообщение Jun 19 2013, 11:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 19-12-08
Из: г.Северодонецк, Украина
Пользователь №: 42 608



Прошу помощи у Клуба!

Проблема в неправильной работе Watch Dog Timer'a на ATmega640-16AU.
Суть в следующем: после запуска Watch Dog Timer'a в режиме "System Reset Mode" через запрограммированое (2 сек) время камень не перезапускается (System Reset), а тупо виснет.
Проверку осуществляю при помощи вставленных циклов ожидания функции __delay_cycles().

Компилятор IAR EWB v.6.21.1.
Прошивка в железо - AVReal.
Инициализация в основной программе (main):
// Инициализация Watchdog-таймера
_WDR(); // Сброс Watchdog
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = (1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); // Установка времени срабатывания ~2 с
_SEI(); // Глобальное разрешение прерывания

Фьюз WDTON=1.
Сама программа без WDT или с включённым WDT, но без принудительной сверхзадержки работает без проблем.
Аналогичные варианты других программ, но на камнях ATmega64 с идентичными параметрами (инициализация, фьюзы, способы проверки срабатывания WDT) работают тоже без проблем.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
berberber
сообщение Apr 1 2015, 10:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-02-05
Пользователь №: 2 385



Та же песня!
ATMega88 после интервала для срабатывания Watchdog происходит полное зависание контроллера, выводы переходят в z состояние и всё, прога не стартует заново.

Код был портирован из ICCAVR где нормально работал в AtmelStudio с WinAVR, где и начались чудеса.
Симптомы полностью соответствуют указанным ранее, питание в норме, BOD включен, BOOTRST в 1 и.т.д.

Upd rolleyes.gif

Нашел!
Если инициализация watchdog происходит перед вызовом "_delay_ms(100)" (это из delay.h от winavr),
то watchdog работает корректно, при превышении интервала происходит нормальный сброс контроллера.
Если инициализацию поставить после этой задержки, то сброс по watchdog не происходит, все виснет намертво!

Дальше разбираться не стал, некогда.

Когда код был под ICCAVR задержка там была реализована другим образом и проблем не возникало, инициализировать watchdog можно было в любом месте программы.
Думаю что это компилятор зараза! (Оптимизация стоит на -O2)

Сообщение отредактировал berberber - Apr 1 2015, 11:02
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 1 2015, 11:22
Сообщение #3


Гуру
******

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



Цитата(berberber @ Apr 1 2015, 12:56) *
Думаю что это компилятор зараза! (Оптимизация стоит на -O2)
Давайте так: я доказываю невиновность компилятора, а вы ставите бутылку коньяка. Надо же как-то отвечать за подобные обвинения.


--------------------
На любой вопрос даю любой ответ
"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

Сообщений в этой теме
- SerSh   Неправильная работа Watch Dog Timer'a   Jun 19 2013, 11:50
- - Сергей Борщ   QUOTE (SerSh @ Jun 19 2013, 14:50) WDTCSR...   Jun 19 2013, 13:16
- - SerSh   Убрал. Стало: // Инициализация Watchdog-таймера ...   Jun 19 2013, 13:33
|- - _Артём_   Цитата(SerSh @ Jun 19 2013, 16:33) Убрал....   Jun 19 2013, 13:40
|- - Палыч   Цитата(SerSh @ Jun 19 2013, 17:33) В рабо...   Jun 19 2013, 13:48
- - SerSh   К регистру MCUSR я вообще не обращаюсь. Листинг ф...   Jun 19 2013, 14:02
|- - _Артём_   Цитата(SerSh @ Jun 19 2013, 17:02) Ещё од...   Jun 19 2013, 14:11
||- - SerSh   Цитата(_Артём_ @ Jun 19 2013, 17:11) Возм...   Jun 19 2013, 14:12
||- - _Артём_   Цитата(SerSh @ Jun 19 2013, 17:12) И когд...   Jun 19 2013, 14:19
||- - SerSh   Цитата(SerSh @ Jun 19 2013, 17:12) И когд...   Jun 19 2013, 14:20
|- - Палыч   Цитата(SerSh @ Jun 19 2013, 18:02) Тогда ...   Jun 19 2013, 15:07
|- - SerSh   Цитата(Палыч @ Jun 19 2013, 18:07) WDT бе...   Jun 19 2013, 15:51
|- - Палыч   Цитата(SerSh @ Jun 19 2013, 19:51) Кажетс...   Jun 19 2013, 16:43
|- - SerSh   Цитата(Палыч @ Jun 19 2013, 19:43) Кажетс...   Jun 19 2013, 20:45
- - SerSh   Закомментировал все команды WDR, но всё осталось п...   Jun 20 2013, 06:15
|- - Палыч   Цитата(SerSh @ Jun 20 2013, 10:15) Закомм...   Jun 20 2013, 06:49
|- - SerSh   Цитата(Палыч @ Jun 20 2013, 09:49) Остало...   Jun 20 2013, 06:55
- - Сергей Борщ   Заодно фуз BOOTRST проверьте   Jun 20 2013, 07:30
|- - SerSh   Цитата(Сергей Борщ @ Jun 20 2013, 10:30) ...   Jun 20 2013, 07:54
- - SerSh   Неожиданное продолжение. Стал возвращать в програм...   Jun 26 2013, 07:08
|- - Палыч   Цитата(SerSh @ Jun 26 2013, 11:08) Не буд...   Jun 26 2013, 07:40
||- - SerSh   Цитата(Палыч @ Jun 26 2013, 10:40) Информ...   Jun 26 2013, 08:00
||- - Палыч   Цитата(SerSh @ Jun 26 2013, 12:00) ... фу...   Jun 26 2013, 09:59
||- - SerSh   Цитата(Палыч @ Jun 26 2013, 12:59) Не уви...   Jun 26 2013, 10:44
||- - Палыч   Беглый анализ кода показал: таки возможно встречно...   Jun 26 2013, 11:32
||- - SerSh   Цитата(Палыч @ Jun 26 2013, 14:32) Беглый...   Jun 26 2013, 11:44
|- - zombi   Цитата(SerSh @ Jun 26 2013, 10:08) пришёл...   Jun 26 2013, 21:28
|- - SerSh   Цитата(zombi @ Jun 27 2013, 00:28) Если в...   Jun 27 2013, 08:24
- - SerSh   К сожалению, хороших результатов нет. Установка...   Jun 26 2013, 12:59
|- - Палыч   Цитата(SerSh @ Jun 26 2013, 16:59) теперь...   Jun 26 2013, 13:12
|- - SerSh   Цитата(Палыч @ Jun 26 2013, 16:12) Надеюс...   Jun 26 2013, 13:35
- - zombi   Получается (если рассматривать программу в кодах а...   Jun 27 2013, 08:43
|- - Палыч   Цитата(zombi @ Jun 27 2013, 12:43) Это ж ...   Jun 27 2013, 10:34
|- - SerSh   Цитата(zombi @ Jun 27 2013, 11:43) Это ж ...   Jun 27 2013, 19:21
|- - Палыч   Цитата(SerSh @ Jun 27 2013, 23:21) Что се...   Jun 28 2013, 05:51
- - zombi   У Вас SEI сразу после инита WDT и затем еще какие ...   Jun 27 2013, 20:36
|- - demiurg1978   ТС, вам нужно сделать переменную в ОЗУ. И придумыв...   Apr 1 2015, 16:06
- - berberber   Цитата(Сергей Борщ @ Apr 1 2015, 14:22) я...   Apr 2 2015, 08:47
- - Сергей Борщ   Цитата(berberber @ Apr 2 2015, 10:47) Ком...   Apr 2 2015, 09:03
- - demiurg1978   Цитата(berberber @ Apr 2 2015, 14:47) Про...   Apr 2 2015, 10:14


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

 


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


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