Полная версия этой страницы:
WDR
Pyku_He_oTTyda
Aug 19 2005, 06:10
Насколько стабильно устройство, которое в качестве борьбы с зависанием использует WDR, кнопку резет невозможно предусмотреть. Супервизор установлен. Микропроцессор Tiny15. Питание устройства аккумуляторное, не будет отключатся годами, только подзарядка.
Заранее спасибо!
Igor26
Aug 19 2005, 07:36
Цитата(Pyku_He_oTTyda @ Aug 19 2005, 09:10)
Насколько стабильно устройство, которое в качестве борьбы с зависанием использует WDR, кнопку резет невозможно предусмотреть. Супервизор установлен. Микропроцессор Tiny15. Питание устройства аккумуляторное, не будет отключатся годами, только подзарядка.
Заранее спасибо!
Весьма стабильно. Главное не пихать команду сброса WDT во все участки программы, которые выполняются однозначно быстрее, чем установленное время срабатывания WDT, иначе бывали весьма неприятные варианты. Лично я его (WDT) сбрасываю только в тех фрагментах, где время ожидания события бывает достаточно долгим. Кстати, ATMEL утверждает, что в их ранних партиях AVRов WDT работал криво, а теперь всё с этой проблемой у них тип-топ.
Pyku_He_oTTyda
Aug 19 2005, 09:11
Спасибо, успокоили

Сброс от него у меня разрешен только в момент ожидания прерывания компаратора, после отработки прерывания жду сброса от WDR и перехожу к ожиданию внешнего прерывания.
А как узнать, какой партии контроллер?
Igor26
Aug 19 2005, 09:39
Цитата(Pyku_He_oTTyda @ Aug 19 2005, 12:11)
Спасибо, успокоили

Сброс от него у меня разрешен только в момент ожидания прерывания компаратора, после отработки прерывания жду сброса от WDR и перехожу к ожиданию внешнего прерывания.
А как узнать, какой партии контроллер?
Не знаю. Думаю сейчас кривых процессоров уже не купить :-)
arttab
Aug 22 2005, 01:44
может уже и не криво песик работает, но как насчет на 13 танике сделать? Мы с 15 давно воюем. В основном с калибровкой оссилятора
Pyku_He_oTTyda
Aug 22 2005, 05:13
А в чем еще проблемы 15 ого, дело в том, что устройство потом заливается компаундом и в случае проблем не хочется получать много рецензий от заказчика. В чем преимущество 13?
arttab
Aug 22 2005, 08:30
Цитата(Pyku_He_oTTyda @ Aug 22 2005, 12:13)
А в чем еще проблемы 15 ого, дело в том, что устройство потом заливается компаундом и в случае проблем не хочется получать много рецензий от заказчика. В чем преимущество 13?
нестабильность оссилятора от напряжения (сильная зависимость), долго просыпается (иногда), и невозможность откалибровать оссилятор на некоторых экземлярах.
А 13 почти полный аналог кроме вывода ареф. но он по новым технологиям сделан и в него внесли улучнения. смотри даташиты
AlexP.
Aug 22 2005, 08:36
Цитата(arttab @ Aug 22 2005, 04:44)
может уже и не криво песик работает, но как насчет на 13 танике сделать? Мы с 15 давно воюем. В основном с калибровкой оссилятора
А можно подробнее о войне с 15-м. Планирую его применить, но живьем в руках не держал. Буду очень признателен за любую инфо.
Pyku_He_oTTyda
Aug 22 2005, 09:12
Подумаю, наверное его поставлю, он побыстрее, да и поэкономичнее. Спасибо за совет!
IgorKossak
Aug 25 2005, 07:54
Возвращаясь к теме WDT, напомню, что ни в коем случае не следует его сбрасывать в теле обработчика прерывания по таймеру (за исключением тех случаев, когда в обработчике анализируются флаги прохождения некоторых участков кода).
Pyku_He_oTTyda
Aug 26 2005, 05:56
Cпасибо! Учту.
Цитата(IgorKossak @ Aug 25 2005, 10:54)
Возвращаясь к теме WDT, напомню, что ни в коем случае не следует его сбрасывать в теле обработчика прерывания по таймеру (за исключением тех случаев, когда в обработчике анализируются флаги прохождения некоторых участков кода).
А можно узнать причину нежелательности использования команды WDR в обработчике прерывания по таймеру. У меня программа (световые эффекты)состоит только из этого таймера, в котором все основные действия и совершаются. Устройство включается-выключается кнопкой подключённой к PB0. Нерабочее время и в выключенном состоянии - сидит в sleep.
Вообще (мое мнение) работа с WDT должна строится по такому принципу:
Выделяем байт(слово) - регистр для сброса WDT.
В каждой обязательной для прохождения подпрограмме устанавливается один (соответствующий подпрограмме) бит в регистре.
В одном месте программы (все равно где, хоть в прерывании таймера) анализируется заполнение регистра. Если все биты установлены, очищаем регистр и передергиваем WDT. В противном случае даем WDT сработать,
после сброса по отсутствию установленного бита догадываемся где висели.
IgorKossak видимо эту методику имел ввиду.
To over:
Сброс WDT в прерывании без выше описаной методики может пропустить зависание программы в основном цикле. Т.Е. Прерывания будут работать, а основной цикл - висеть.
А если сбрасывать в основном цикле? Это ведь проще.
Да сбрасывать можно где угодно, важен критерий сброса
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.