|
Неправильная работа Watch Dog Timer'a, WDT не работает |
|
|
|
Jun 19 2013, 11:50
|
Участник

Группа: Участник
Сообщений: 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) работают тоже без проблем.
|
|
|
|
|
 |
Ответов
|
Jun 26 2013, 07:08
|
Участник

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

|
Неожиданное продолжение. Стал возвращать в программу ранее закомментированые блоки и выяснил, что описанные выше проблемы появляются при наличии в тексте программы функции инициализации LCD - lcd_init();. Причём, обращение к LCD без инициализации ничего не портит (на экране, естественно, кракозябры, но это не важно), а только инициализация. Содержимое этой функции тоже не имеет большого значения, тем более, что сам LCD работает прекрасно, и библиотека связи с LCD написана где-то в 2003-2004 году и работает в десятке различных серийных приборах. В листинге инициализации тоже ничего особенного. Короче, начал я койки переставлять ))) и пришёл к тому, что если сначала инициализировать WDT, а затем LCD, то всё работает как нужно: при наличии команд wdr всё работает, а при отсутствии - перезапускается через запрограммированное время, а если наоборот: сначала инициализировать LCD, а затем WDT, то всё виснет при отсутствии команд wdr. Всё это мне кажется весьма подозрительным, боюсь неожиданных приключений. Не будет ли у многоуважаемого Клуба каких-либо умных мыслей на сей счёт.
|
|
|
|
|
Jun 26 2013, 08:00
|
Участник

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

|
Цитата(Палыч @ Jun 26 2013, 10:40)  Информации - маловато... Приведите текст функции ициализации LCD, а также часть схемы подключения LCD (или опишите словами связи МК - LCD). Схема порта LCD и функция инициализации LCD. Да, и ещё нужен define.h
Сообщение отредактировал SerSh - Jun 26 2013, 08:04
Прикрепленные файлы
LCD.RAR ( 59.41 килобайт )
Кол-во скачиваний: 19
defines.rar ( 2.13 килобайт )
Кол-во скачиваний: 14
|
|
|
|
|
Jun 26 2013, 09:59
|

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

|
Цитата(SerSh @ Jun 26 2013, 12:00)  ... функция инициализации LCD. Не увидел того, чего хотел: настройка направлений информации на пинах МК и установка сигналов с "начальные" состояния. Включен ли BOD? Какой уровень установлен? Цитата(SerSh @ Jun 26 2013, 11:08)  Не будет ли у многоуважаемого Клуба каких-либо умных мыслей на сей счёт. Мысль такая: Замечено, что AVR при определенных "неполадках" питания могут становиться в некое "раскоряченное" состаяние, при котором нарушается нормальная их работа. Например, при очень медленном нарастании напряжения питания (несколько секунд) AVR легко поставить в такое вот "раскоряченное" состояние: работать - не работает, на сигнал сброса - не реагирует, только снятие и подача "нормального" питания... Думаю, что что-то этакое имеет место и у Вас. О похожих симптомах Вы говорили в предыдущих сообщениях... Возможно, при инициализации пинов МК и LCD на некоторое малое время имеет место встречное включение сигналов: например, МК на каком-то сигнале выдаёт низкий уровень, а в это же время LCD на этом же проводнике пытается держать высокий уровень. При этом происходит "проседание" напряжения питания и МК (веренее в Вашем случае - его какая-то часть, связанная с WDT) переходит в "раскоряченное" состояние. Правда, я наблюдал полностью не работающий МК (конкретно - m128) в таком "раскоряченном" состоянии, в m640, возможно, "раскорячивается" только WDT, да и то - если он ещё не запущен. Вот такие у меня мысли...
|
|
|
|
|
Jun 26 2013, 10:44
|
Участник

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

|
Цитата(Палыч @ Jun 26 2013, 12:59)  Не увидел того, чего хотел: настройка направлений информации на пинах МК и установка сигналов с "начальные" состояния. Файлик с low_level_init'ом на всякий случай прикладываю. Цитата(Палыч @ Jun 26 2013, 12:59)  Включен ли BOD? Какой уровень установлен? Да, включён, в фьюзы BODLEVEL прошиваю 4, что соответствует 4,1...4,5В. CKSEL прошиваю F, SUT=1. Всё это соответствует "Crystal Oscillator, BOD enabled" (таблица 10-4) при частоте кварца 14.7456МГц Цитата(Палыч @ Jun 26 2013, 12:59)  Вот такие у меня мысли... Спасибо за Ваши мысли. Сейчас попробую поиграться с разными напряжениями BOD. Кстати, питание проца - рядом стоящий импульсный стабилизатор (типа КРЕНка=+5В). Для силовых цепей есть отдельная такая же КРЕНка, но на 12В. Общий провод - большой полигон (плата двусторонняя). Кондёр (чип) по питанию проца припаян как раз под ним на полигоне. Аналогичным образом ведёт себя совершенно другая плата, но с таким же контроллером (мега640), стартовая инициализация у них похожая.
Сообщение отредактировал SerSh - Jun 26 2013, 10:54
|
|
|
|
Сообщений в этой теме
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, 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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|