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

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


Участник
*

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



Неожиданное продолжение.
Стал возвращать в программу ранее закомментированые блоки и выяснил, что описанные выше проблемы появляются при наличии в тексте программы функции инициализации LCD - lcd_init();. Причём, обращение к LCD без инициализации ничего не портит (на экране, естественно, кракозябры, но это не важно), а только инициализация. Содержимое этой функции тоже не имеет большого значения, тем более, что сам LCD работает прекрасно, и библиотека связи с LCD написана где-то в 2003-2004 году и работает в десятке различных серийных приборах. В листинге инициализации тоже ничего особенного.
Короче, начал я койки переставлять ))) и пришёл к тому, что если сначала инициализировать WDT, а затем LCD, то всё работает как нужно: при наличии команд wdr всё работает, а при отсутствии - перезапускается через запрограммированное время, а если наоборот: сначала инициализировать LCD, а затем WDT, то всё виснет при отсутствии команд wdr.
Всё это мне кажется весьма подозрительным, боюсь неожиданных приключений.
Не будет ли у многоуважаемого Клуба каких-либо умных мыслей на сей счёт.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 26 2013, 07:40
Сообщение #3


Гуру
******

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



Цитата(SerSh @ Jun 26 2013, 11:08) *
Не будет ли у многоуважаемого Клуба каких-либо умных мыслей на сей счёт.

Информации - маловато...
Приведите текст функции ициализации LCD, а также часть схемы подключения LCD (или опишите словами связи МК - LCD).
Go to the top of the page
 
+Quote Post
SerSh
сообщение Jun 26 2013, 08:00
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 26 2013, 09:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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, да и то - если он ещё не запущен.
Вот такие у меня мысли...
Go to the top of the page
 
+Quote Post
SerSh
сообщение Jun 26 2013, 10:44
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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
Прикрепленные файлы
Прикрепленный файл  low_level_init.rar ( 1.45 килобайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 26 2013, 11:32
Сообщение #7


Гуру
******

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



Беглый анализ кода показал: таки возможно встречное включение, более того - оно присутствует всегда !
Сигналы шины данных DB4-DB6 Вы "держите" в положении "на вывод" всегда, и только сигнал DB7 переключаете "на ввод" при чтении с LCD. Правильно делать - переключать всю группу DB4-DB7 "на ввод" при операции чтения. По соображениям "безопасности" эту группу сигналов (DB4-DB7) логичнее держать в высокоимендансном состоянии (т.е. "на ввод"), и только при выводе байта переводить в состояние "на вывод", а после окончания команды вывода - снова переводить в высокоимпендансное состояние.
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, 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


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

 


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


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