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

 
 
> Неправильная работа 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
Ответов
zombi
сообщение Jun 27 2013, 08:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Получается (если рассматривать программу в кодах ассемблера) что нерабочая программа отличается от рабочей наличием всего двух команд call XXXX и RET по адресу XXXX.
Это ж бред.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 27 2013, 10:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(zombi @ Jun 27 2013, 12:43) *
Это ж бред.

Вы сильно всё упростили.
Выполнение некой функции занимает определенное время. Убрав вызов этой функции Вы измените временнЫе соотношения между наступлением неких событий. В коде присутствует некая ошибка, которая проявляется именно при наступлении определённых событий в неком, конкретном временнОм интервале. Меняя местами вызовы функций ТС изменяет эти временнЫе соотношения. На время тестирования устройства те самые "нехорошие" события разошлись во времени, но не факт, что через продолжительное время эти "нехорошие" события вновь не "сойдутся"...
Так что, по большому счету, перестановка местами вызовов функций проблему не решает. И дело здесь, возможно, и не в инициализации LCD вовсе. Хотя и в такой "обсосанной" со всех старон теме, как инициализация LCD, ТС умудрился "накосячить"... Если у ТС LCD на HD44780, то "невооруженным взглядом" видны отклонения в коде от DS - они остались после исправлений с направлением передачи данных по шине данных. Вероятно, кроме LCD в изделии присутствуют и др компоненты, с которыми взаимодействует МК. Возможны "косяки" и при работе с ними...
Заметил, что "баги" давольно "прочно" поселяются с частях программ, "кочующих" из проекта в проект годами. С трудом вериться, что в коде, "проверенном" не одним проектом, могут быть какие-то ошибки... Ан - могут ! Однажды я нашёл ошибку в коде "благополучно" применявшимся 10 лет ! Поиск в программе ошибок, связанных с временнЫм соотношением между наступлением неких событий - дело трудное и не предсказуемое по результату...
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
|- - 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
- - berberber   Та же песня! ATMega88 после интервала для сра...   Apr 1 2015, 10:56
|- - Сергей Борщ   Цитата(berberber @ Apr 1 2015, 12:56) Дум...   Apr 1 2015, 11:22
|- - 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 Текстовая версия Сейчас: 18th July 2025 - 03:29
Рейтинг@Mail.ru


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