Сторожевой таймер ( WDT )
- kipiaxxx
- Рядовой
- Сообщения: 79
- Зарегистрирован: 06 сен 2015, 14:15
- Откуда: Омск
- Имя: Сергей
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Сторожевой таймер ( WDT )
Для ответственных применений устройств на МК совершенно необходим сторожевой таймер ( WDT ). Интересует схема такого универсального, простого и надёжного устройства применительно к Arduino. Просьба поделиться личным опытом. Мой поиск пока приемлемого результата не дал.
- kipiaxxx
- Рядовой
- Сообщения: 79
- Зарегистрирован: 06 сен 2015, 14:15
- Откуда: Омск
- Имя: Сергей
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Сторожевой таймер ( WDT )
1. В статье "Arduino watchdog или автоматический RESET в случае зависания":
http://geektimes.ru/post/255800/
убедительно объясняется, что без плясок с бубном перепрошивки загрузчика (bootloader) Arduino встроенный WDT может работать некорректно.
2. Кроме того, для своей работы встроенный Watchdog требует дефицитных аппаратных ресурсов чипа. Цитирую Настройки проекта:
Защита от зависания (При использовании исключает возможность использования скоростного счетчика и и выходов 3 и 11 в режиме ШИМ)
http://geektimes.ru/post/255800/
убедительно объясняется, что без плясок с бубном перепрошивки загрузчика (bootloader) Arduino встроенный WDT может работать некорректно.
2. Кроме того, для своей работы встроенный Watchdog требует дефицитных аппаратных ресурсов чипа. Цитирую Настройки проекта:
Защита от зависания (При использовании исключает возможность использования скоростного счетчика и и выходов 3 и 11 в режиме ШИМ)
Последний раз редактировалось kipiaxxx 07 дек 2015, 08:39, всего редактировалось 1 раз.
- kipiaxxx
- Рядовой
- Сообщения: 79
- Зарегистрирован: 06 сен 2015, 14:15
- Откуда: Омск
- Имя: Сергей
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Сторожевой таймер ( WDT )
Если под словом пинг Вы подразумеваете периодический сброс Ардуиной внешнего таймера, то - да.
Удовлетвоительное схемное решение на базе 555-таймера было найдено здесь:
Arduino Long Time Hardware Watchdog
http://www.playwitharduino.com/?p=291
Недостаток этой схемы - использование выхода Arduino с Z-состоянием.
А для FLProg - это пока невозможно.
Эту схему я модифицировал с целью большей универсализации. Теперь её можно применять не только с Arduino, но и другими МК, не меняя их прошивки. Сделал 3 экз. и успешно их эксплуатирую.
В процессе поиска нашёл интересное обсуждение:
Сбои в работе МК - делимся опытом, знаниями. Проблемы с наводками и помехами, решения
https://www.terraelectronica.ru/board/index.php?showtopic=385&st=0
Сделал по предложенной здесь простой схеме (переключающая кнопка и два высоковольтных конденсатора) эффективный генератор импульсных помех. Полезно таким "шоккером" тестировать и свои поделки, и пром. изделия.
Вопрос по WDT для себя я решил. Спасибо откликнувшимся. Тему можно закрыть.
Удовлетвоительное схемное решение на базе 555-таймера было найдено здесь:
Arduino Long Time Hardware Watchdog
http://www.playwitharduino.com/?p=291
Недостаток этой схемы - использование выхода Arduino с Z-состоянием.
А для FLProg - это пока невозможно.
Эту схему я модифицировал с целью большей универсализации. Теперь её можно применять не только с Arduino, но и другими МК, не меняя их прошивки. Сделал 3 экз. и успешно их эксплуатирую.
В процессе поиска нашёл интересное обсуждение:
Сбои в работе МК - делимся опытом, знаниями. Проблемы с наводками и помехами, решения
https://www.terraelectronica.ru/board/index.php?showtopic=385&st=0
Сделал по предложенной здесь простой схеме (переключающая кнопка и два высоковольтных конденсатора) эффективный генератор импульсных помех. Полезно таким "шоккером" тестировать и свои поделки, и пром. изделия.
Вопрос по WDT для себя я решил. Спасибо откликнувшимся. Тему можно закрыть.
Последний раз редактировалось kipiaxxx 30 дек 2015, 12:05, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 537
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
Сторожевой таймер ( WDT )
Здраствуйте. Извените.я что недопонял. Опишите пожалуйста решение поподробнее. Спасибо.
Добавлено (10.01.2016, 15:54)
---------------------------------------------
Здраствуйте. Извените.я что недопонял. Опишите пожалуйста решение поподробнее. Спасибо.
Добавлено (10.01.2016, 15:54)
---------------------------------------------
Здраствуйте. Извените.я что недопонял. Опишите пожалуйста решение поподробнее. Спасибо.
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Сторожевой таймер ( WDT )
В FLProg реализован собственный сторожевой таймер. В настройках проекта установить галочку "Защита от зависаний"., и выставить время срабатывания таймера. Правда при этом возникают некоторые ограничения по использованию выходов ШИМ
Автор программы FLProg.
- kipiaxxx
- Рядовой
- Сообщения: 79
- Зарегистрирован: 06 сен 2015, 14:15
- Откуда: Омск
- Имя: Сергей
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Сторожевой таймер ( WDT )
Ниже приводится доработанная схема. Она выполнена в программе схемотехнического моделирования TINA-TI, которую я рекомендую для начинающих. Подробнее о ней читаем в журнале "Радиоежегодник", выпуск 32. TINA-TI по-русски: http://www.rlocman.ru/book/book.html?di=151461Evgesha писал(а):Опишите пожалуйста решение поподробнее.
По сравнению с исходной схемой из http://www.playwitharduino.com/?p=291 добавлен только транзистор Т1 и дифференцирующая цепочка С2,R4. Это типовое схемное решение для внешних WDT.
Пояснения к работе схемы.
Генератор импульсов VG1 имитирует периодические "контрольные" импульсы от Arduino. Ключом SW1 имитируется зависание МК. Пока SW1 замкнут "контрольные" импульсы пройдя через диф. цепь будут открывать транзистор Т1, который, в свою очередь, будет периодически разряжать времязадающий конденсатор С1. Это нормальная работа микроконтроллера Arduino.
Ситуация с "зависанием" программы МК имитируется размыканием ключа SW1. При этом "контрольные" импульсы от Arduino не поступают на транзистор Т1. Конденсатор С1 током через резисторы R1 и R2 заряжается до верхнего порога срабатывания микросхемы 555-таймера U1, 555-таймер начинает работать в режиме генератора импульсов с большим периодом следования. Выход OUT таймера U1 через диод D1 подключён к цепи сброса R5,С5 (RES) Arduino. Короткие (100-150 мс) и редкие (с периодом в несколько секунд) отрицательные импульсы сброса будут принудительно перезапускать МК, до тех пор пока он нормально не запустится и на его выходе вновь не появятся периодические "контрольные" импульсы.
Временные диаграммы иллюстрируют режимы работы внешнего WDT:
Для сокращения времени моделирования номинал конденсатора С1 на схеме установлен значительно меньше необходимого. Можно ориентироваться на значение 0,5-1 мкФ на каждую секунду необходимой длительности "сторожевой" паузы. Конденсатор С1 нельзя применять электролитический. Удобно использовать дешёвые SMD керамические конденсаторы, подключая их параллельно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось kipiaxxx 24 янв 2018, 07:27, всего редактировалось 2 раза.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
Ардуино НАНО. загрузчик прошил от УНО вроде как в нем реализован программный WDT. рядом с ней расположены 4 электромагнитных реле. раз в сутки все равно зависает намертво. Схема используется для инкубатора. Сами понимаете нужна безотказность. Склоняюсь к тому что виснет из за наводок от релюшек. Видеться решение только использовать мосфеты вместо реле. Или делать аппаратный WDT. Может еще кто то предложит какое решение...
Сторожевой таймер ( WDT )
.
Последний раз редактировалось Nikan 23 мар 2023, 16:43, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
И все таки не отпускает вопрос, почему не работает встроенный сторожевой таймер ? Или все таки можно полностью подвесить железо. В свою нано прошил загрузчик от УНО. проверил скетчем работоспособность встроенного WDT. скетч показал что все ровно, при зависании идет перезагрузка, Оставил инкубатор тестироваться в ночь. Утром система полностью висела.
Была подобная ситуация при когда еще делал автоматику на пивоварню, было 2 реле на тэн и насос. На тэн стояло твердотельное на насос обычная механика. И вот эта механика как я думаю периодически вешала систему . Проблема повторялась до того пока не поставил твердотелку и на насос
В нынешнем проекте у меня 4 механических реле. все собрано на одной плате. 2 реле на двигатель с реверсом. 1 на вентилятор, и одно на лампу для нагрева...
Была подобная ситуация при когда еще делал автоматику на пивоварню, было 2 реле на тэн и насос. На тэн стояло твердотельное на насос обычная механика. И вот эта механика как я думаю периодически вешала систему . Проблема повторялась до того пока не поставил твердотелку и на насос
В нынешнем проекте у меня 4 механических реле. все собрано на одной плате. 2 реле на двигатель с реверсом. 1 на вентилятор, и одно на лампу для нагрева...
Сторожевой таймер ( WDT )
.
Последний раз редактировалось Nikan 23 мар 2023, 16:43, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
Ага понятно. А если рассматривать схему выше.... я так понимаю она работает именно когда идут импульсы с ардуино, И если например ардуино зависнет с еденицей на выходе или с нолем то система все равно сделает свое дело и перезагрузит ардуино ?
Сторожевой таймер ( WDT )
.
Последний раз редактировалось Nikan 23 мар 2023, 16:43, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
Nikan, В нашей деревне проблематично найти что то подобное. 555ую еле нашел. все заказываю с поднебесной. А если брать программную часть ардуино то там достаточно установить симметричный мультивибратор ? а вот с какой длинной импульса?
Сторожевой таймер ( WDT )
.
Последний раз редактировалось Nikan 23 мар 2023, 16:43, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
пробовать только опытном путем
А что за точки на схеме VF1 VF2 и VF3 ??
А что за точки на схеме VF1 VF2 и VF3 ??
Последний раз редактировалось Dreamer85 24 мар 2017, 21:29, всего редактировалось 1 раз.
Сторожевой таймер ( WDT )
.
Последний раз редактировалось Nikan 23 мар 2023, 16:44, всего редактировалось 1 раз.
- kipiaxxx
- Рядовой
- Сообщения: 79
- Зарегистрирован: 06 сен 2015, 14:15
- Откуда: Омск
- Имя: Сергей
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Сторожевой таймер ( WDT )
Получил через ЛС несколько вопросов по своей схеме внешнего WDT. Отвечаю на них здесь:
Первый экз. схемы был внедрён на котельной более 2-х лет назад. Этот WDT защищал от зависаний промышленный контроллер на ATmega32. На данный момент кол-во нареканий =0. Кроме того, этим WDT были оснащены ещё 3 системы дополнительной технологической сигнализации на Arduino Nano - нареканий по работе также нет. Предварительно WDT жёстко испытывались в лаборатории КИПиА на понижение/повышение питающего напряжения, устойчивости к импульсным э/м помехам. Поэтому эту схему я с чистой совестью рекомендую для повторения.
VF3 подключается к входу cброса RST Arduino.
R5(10k) и C5(100n) устанавливать НЕ НАДО, т.к. они уже имеются на плате Arduino в цепи сброса.
Успеха в реализации схемы WDT! И просьба отписаться в ветке о результатах внедрения.
Нормально ли работает у вас данная схема?
Первый экз. схемы был внедрён на котельной более 2-х лет назад. Этот WDT защищал от зависаний промышленный контроллер на ATmega32. На данный момент кол-во нареканий =0. Кроме того, этим WDT были оснащены ещё 3 системы дополнительной технологической сигнализации на Arduino Nano - нареканий по работе также нет. Предварительно WDT жёстко испытывались в лаборатории КИПиА на понижение/повышение питающего напряжения, устойчивости к импульсным э/м помехам. Поэтому эту схему я с чистой совестью рекомендую для повторения.
Это контрольные точки для вывода графиков при моделировании в TINA-TI.Что за точки на схеме VF1, VF2 и VF3?
VF3 подключается к входу cброса RST Arduino.
R5(10k) и C5(100n) устанавливать НЕ НАДО, т.к. они уже имеются на плате Arduino в цепи сброса.
Схема не требовательна к параметрам контрольных импульсов и во многих случаях можно даже обойтись и без специального выхода на Arduino. Главное, чтобы импульсы были. Например, при доработке контроллера на ATmega32 контрольные импульсы для WDT я брал с одного из входов Data индикатора 1602. В сигнализации на Arduino Nano использовался выход TX1 UART, с которого постоянно отправлялись данные в сеть. Но нужно быть внимательным, чтобы не использовать выход с ШИМ (PWM), т.к. здесь импульсы формируются аппаратно и при зависании Arduino вполне могут присутствовать. Если же есть желание и возможность использовать отдельный выход Arduino, то можно сделать проще. В начале программного цикла установить этот выход в 1, а где-нибудь в середине цикла - в 0. Такой способ практически не потребует доп. ресурсов Arduino, а полноценный контрольный импульс для WDT будет сформирован. Период следования этих импульсов будет равен времени исполнения программного цикла.Я так понимаю в FLProg на схему нужно добавить выход, к нему подключить мультивибратор? А какие значения ему выставлять в настройках?
Ответ: ДА, будет.Схема будет перезагружать ардуино если на выходе зависнет единица, или ноль?
Успеха в реализации схемы WDT! И просьба отписаться в ветке о результатах внедрения.
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Сторожевой таймер ( WDT )
kipiaxxx, а можно схему подключить к одному из входов max7219, и если да, то к какому? Сталкивался с ситуацией, когда индикатор зависал (например, появлялась засветка всех восьми разрядов) , а ардуина продолжала нормально работать.
-
- Рядовой
- Сообщения: 45
- Зарегистрирован: 01 фев 2017, 00:25
- Откуда: Сызрань
- Контактная информация:
Сторожевой таймер ( WDT )
тоесть с выхода 555, через диод сразу кидаем на RESET Arduino?kipiaxxx писал(а):R5(10k) и C5(100n) устанавливать НЕ НАДО,
RESET 555 оставляем подключенным к +5V?
Есть плата управления с Arduino, она обменивается данными с ESP8266, хочу кинуть вход WDT на RX или TX.
я так понимаю чтобы ардуино не падала в RESET во время прошивки надо установить максимально больше в пределах разумного конденсатор С1? сейчас поставил 2 шт по 1 МКф. система не успевает стартовать, поищу сегодня на работе в железках еще емкостей....
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя