Watchdog timer или сторожевая собака для микропроцессорной техники
- Цена: $3.08 ($3 в мобильном приложении)
Общеизвестно, что каждая цифровая техника, непременно, «зависает». Это неизменно неожиданность для разработчика и это неизменно неприятность для пользователя. Это неизменно невовремя и это, увы, никак не прогнозируется.
И не имеет значение, самодельная ли это «мигалка на ёлку» на одной микросхеме-микроконтроллере либо сложный сервер, трудящийся в нагруженной сети, — лучше бы этих зависаний не было. А бывают такие совокупности, зависание которых обходится весьма и весьма дорого. Устройство, именуемое «Watchdog» («Сторожевая собака»), призвано отслеживать факт зависания контролируемой им совокупности и, при обнаружении зависания, принудительно эту совокупность перезагружать.
Сперва я напишу коротенький абзац для «новичков», дабы было ясно, о чём я по большому счету тут говорю. Позже будет абзац для более подготовленных, каковые, дочитав дотуда, всё ещё не захотят закрыть вкладку с обзором 🙂 Сторожевой таймер, сам по себе — это маленькая и достаточно несложная схемка. , пока ей на вход иногда приходят сигналы от контролируемого девайса («да-да», «всё нормально», «я тут», «я тружусь») — собака ведёт себя тихо и никак не вмешивается.
Когда сигналы перестают приходить, собака ожидает положенное время (в большинстве случаев пара секунд) и, в случае если сигналов так и не пришло, она уверен в том, что устройство зависло и отправляет ему сигнал Reset, перезагружая его. Разумеется, что некая условная совокупность, оборудованная таким модулем, будет более устойчива, если сравнивать с подобной совокупностью без watchdog: от зависаний не застрахован никто, но первая будет сама выбираться из этих зависаний, вторая же будет ожидать и простаивать до вмешательства человека.Сторожевой собаке полностью всё равняется, значимости и какой величины совокупность она осуществляет контроль.
Это возможно и копеечная воьминогая микросхема-микроконтроллер, и «малинка»-«апельсинка», и роутер, и домашний стационарный компьютер, и громадный навороченный сервер. Ей только бы приходили сигналы об активности совокупности, да чтобы совокупность, соответственно, реагировала на её импульс «Reset». Финиш абзаца. Из-за чего внешний watchdog, в случае если в любом современном микроконтроллере имеется встроенный?
По двум главным обстоятельствам.
Во-первых, бывают такие зависания, каковые изнутри единого кристалла отследить запрещено: прерывания по таймеру живут, watchdog исправно ресетится, а программа, допустим, крутится в нескончаемом цикле. Либо ожидает импульса на какой-нибудь ноге, что дойти никак не имеет возможности из-за какой-то аварии. Да мало что… Внешний же аппаратный сторож никак не связан с процессами в: до тех пор пока у него имеется питание, он будет сторожить.
Во-вторых, ардуино… Нельзя не согласиться с тем, что часть DIY-микроконтроллерных проектов, реализуемых публикой на arduino, занимает большую нишу. И приверженцы ардуино, увы, красотами встроенного в атмегу сторожевого таймера воспользоваться не смогут. Неприятность обрисована. Кратко: watchdog верно трудится лишь на некоторых Uno, остальные ардуины намертво «кладутся» при попытке применять сторожевой таймер.
Выручает лишь перешивка загрузчика внешним программатором.
А новичков такая «хирургия», непременно, пугает. Да и не у всех имеется под рукой вторая ардуина, дабы сделать из неё программатор для оживления первой, ушедшей в мёртвый цикл из-за применения встроенного watchdog. Все эти манипуляции новичка, наверное, попросту отпугнут.
Внешний же watchdog разрешает, применяя arduino в собственных проектах, полностью приобретать все прелести устойчивых совокупностей, не заморачиваясь проблемами внутреннего сторожевого таймера.Сейчас, фактически, к самому обозреваемому модулю.Размерами он сопоставим с Arduino Pro Mini: С обратной стороны ничего увлекательного: лишь дорожки, соединяющие три переходных отверстия с пинами модуля. Да не весьма как следует отмытый флюс: Модуль выстроен на базе далласовского чипа DS1232.
Для тех, кто привык просматривать официальную литературу, вот даташит. Чип снабжает сходу три функции: мониторинг питания, формирование и сторожевой таймер верного импульса Reset (нужных фронтов, длительности и амплитуды), кроме того при дребезге контактов ручной кнопки перезагрузки.
Кратко и сжато о назначении выводов чипаНа вывод ST должны приходить стробирующие импульсы от контролируемого устройства, говоряжие о его здоровом функционировании.На выводах RST и /RST формируется перезагружающий импульс. Отличие между выводами RST и /RST содержится только в полярности перезагружающего импульса. Сигнал с вывода RST нужно брать, в случае если контролируемое устройство перезагружается логической единицей при обычном нуле на линии сброса.
Сигнал же /RST, напротив, рекомендован для устройств, перезагружаемых низким уровнем на линии сброса. Большая часть современных микроконтроллеров (включая атмелловские, на базе которых выстроено и arduino) перезагружаются нулевыми импульсами, т.е. для них подходящим есть сигнал /RST.Вывод TOL выбирает приемлемость условий питающего напряжения.— в то время, когда TOL прижат к почва, приемлемым считается пятипроцентный коридор отклонения напряжения.
Т.е. сигнал перезагрузки придёт при понижении напряжения до 4,75V.— в то время, когда TOL подключён к питающей линии, коридор питающего напряжения расширяется до 10%. Т.е. устройство будет перезагружено при понижении напряжения питания до 4,5V.Выводом TD выбирается большое контрольное время, по окончании которого сработает сторожевой таймер:— в то время, когда TD прижат к почва, таймаут образовывает 150ms (от экземпляра к экземпляру нормой будут значения 62,5ms — 250ms);— в то время, когда TD висит в воздухе, таймаут образовывает 600ms (от экземпляра к экземпляру 250ms — 1000ms);— в то время, когда TD соединён с едой, таймаут образовывает 1200ms (от экземпляра к экземпляру 500ms — 2000ms).
Выдержек более чем двух секунд эта микросхема не позволит кроме того теоретически.Продавец услужливо опубликовал его разводку и схему модуля: Как видим из схемы, линии чипа ST, RST и /RST выведены, как одноимённые, и на пины модуля. Производитель предоставил нам самое лояльное и комфортное включение чипа: максимально широкий коридор питающих напряжений (от 4,5 до 5V) и максимальный таймаут сторожевого таймера (1,2 секунды).Сейчас делается понятной схема подключения модуля к нашей условной ардуине:— линии Vcc и Gnd на модуле подключаются к двум одноимённым линиям на arduino;— линия /RST на модуле подключается к пину RST на ардуине— линия ST подключается к любому свободному пину, нужно без аппаратного ШИМ, — допустим, у меня это пин 2.Набросаем простенький скетч для проверки модуля.
Я (только для наглядности) при инициализации программно мигаю встроенным светодиодом. Этого возможно было не делать, светодиод мигнёт и без нас.
Но так — нагляднее и понятнее новичкам.void setup() { pinMode(13, OUTPUT);// Используем внутренний светодиод pinMode(2, OUTPUT); // С этого пина Watchdog будет получать сигналыdigitalWrite(13, HIGH); delay(50);// Кратко мигнём светодиодом при каждой перезагрузке digitalWrite(13, LOW); }void loop() { digitalWrite(2, HIGH); delay(2); // Формируем маленький перепад digitalWrite(2, LOW); в один раз(1150);// Максимально долгий таймаут } При значении задержки 1150 миллисекунд (в моём конкретном случае) либо меньших, отечественная ардуина тихо крутится в рабочем цикле, ей нет ничего, что мешает. Светодиод, мигнув сначала, не светится — перезагрузок нет.
Когда мы увеличим эту задержку хотя бы до 1200 миллисекунд (либо внесём большую задержку в процедуру Setup), мы заметим, что светодиод начнёт циклически вспыхивать: время для собаки делается критическим и она перезагружает ардуину. В настоящих же условиях рабочего скетча, достаточно внести строчкуdigitalWrite(2,HIGH); delay(1); digitalWrite(2,LOW);в самый финиш главного цикла, дабы сторожевой модуль, подключённый к пину 2, ощущал себя тихо.
При инициализации ардуины все пины передёргиваются, исходя из этого собаке полностью всё равняется, на каком логическом уровне зависло устройство: таймер был запущен и, значит, перезагружающий импульс неминуемо придёт.Выводы. 1. Нужен ли сторожевой таймер в принципе? В случае если в проектируемом вами устройстве зависания смогут привести к негативным последствиям, то да.
С ним совокупность будет, разумеется, более устойчивой, чем без него.2. есть ли внешний сторожевой таймер панацеей? Само собой разумеется, нет.
Он более действен, чем внутренний, имеющийся во многих микроконтроллерах, но и он не панацея. С целью достижения большой эффективности его работы, принципиально важно его подключить в верное место вашей совокупности. Лучше не подключать его к линиям, на которых сигналы формируются аппаратно (ШИМ, разные аппаратные порты со стробами), и к сигналам внешнего либо внутреннего тактового генератора.
Ну и полностью бессмысленно подключать его к линиям, трудящимся на вход — так мы будем осуществлять контроль не собственный микроконтроллер, а что-то второе.3. Имеется ли минусы у этого сторожа? Главным минусом внешнего сторожевого таймера, в общем случае, есть потребность в выделении для его работы одного пина на вашем устройстве.
Не смотря на то, что на практике, этого частенько удаётся избежать: в случае если ваш микроконтроллер что-то всегда пишет либо рисует на дисплее, что-то всегда посылает в порты, формирует какие-то управляющие импульсы для внешних устройств — подключайте сторожевую собаку к этим линиям, — ей полностью равнодушны скважность и частота импульсов, ей только бы была постоянная движуха. Главным минусом конкретно данной реализации таймера я назову, пожалуй, достаточно маленький контрольный таймаут.
Бывают случаи, в то время, когда хотелось бы иметь запас хотя бы в 3-5 секунд. 4. Нужно ли брать этот watchdog? Ну, любой примет решение для себя.
Сторожевую собаку, совсем совершенно верно, возможно взять дешевле $3.
Кому-то несложнее приобрести один только лишь обозреваемый выше чип и посредством ЛУТ сделать таковой модуль самому. Кому-то несложнее забрать легендарный 555 и сделать сторожевой таймер на рассыпухе: плюсы — дёшево и доступно, минусы — больше возни и времязадающие электролитические конденсаторы, а, значит, с годами гарантированно поплывут все параметры. Кому-то несложнее сделать одновибратор с таймером по большому счету на полупроводниках.
Тут любой решает сам.
Тут же за в полной мере посильные деньги мы приобретаем всецело готовое и рабочее устройство с нормированными параметрами. Так что резонность приобретения любой оценит самостоятельно.Моей же задачей было поведать о таких устройствах, о правилах их работы и, быть может, дать кому-то творческий импульс для независимого построения новых увлекательных самоделок.Никто ничего не предоставлял и не спонсировал, всё приобретено на собственные.UPD: До тех пор пока писал обзор, продавец нежданно увеличил стоимость. Упс.
Будем вычислять это временным приступом жадности. На данный товар у него иногда не редкость скидка. Ну и нет ничего, что мешает искать данный товар у какого-либо другого продавца.