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);
  delay(1150);            // Максимально длинный таймаут
}
При значении задержки 1150 миллисекунд (в моём конкретном случае) или меньших, наша ардуина спокойно крутится в рабочем цикле, ей ничто не мешает. Светодиод, мигнув вначале, не светится — перезагрузок нет. Как только мы увеличим эту задержку хотя бы до 1200 миллисекунд (или внесём значительную задержку в процедуру Setup), мы увидим, что светодиод начнёт циклически вспыхивать: время для собаки становится критическим и она перезагружает ардуину.
В реальных же условиях рабочего скетча, достаточно внести строчку
digitalWrite(2,HIGH); delay(1); digitalWrite(2,LOW);
в самый конец основного цикла, чтобы сторожевой модуль, подключённый к пину 2, чувствовал себя спокойно.
При инициализации ардуины все пины передёргиваются, поэтому собаке абсолютно всё равно, на каком логическом уровне зависло устройство: таймер был запущен и, значит, перезагружающий импульс неминуемо придёт.

Выводы.
1. Нужен ли сторожевой таймер в принципе? Если в проектируемом вами устройстве зависания могут привести к негативным последствиям, то да. С ним система будет, очевидно, более устойчивой, чем без него.

2. Является ли внешний сторожевой таймер панацеей? Конечно, нет. Он более эффективен, чем внутренний, имеющийся во многих микроконтроллерах, но и он не панацея. Для достижения максимальной эффективности его работы, важно его подключить в правильное место вашей системы. Лучше не подключать его к линиям, на которых сигналы формируются аппаратно (ШИМ, различные аппаратные порты со стробами), а также к сигналам внешнего или внутреннего тактового генератора. Ну и абсолютно бессмысленно подключать его к линиям, работающим на вход — так мы будем контролировать не свой микроконтроллер, а что-то другое.

3. Есть ли минусы у этого сторожа? Главным минусом внешнего сторожевого таймера, в общем случае, является потребность в выделении для его работы одного пина на вашем устройстве. Хотя на практике, этого очень часто удаётся избежать: если ваш микроконтроллер что-то постоянно пишет или рисует на дисплее, что-то постоянно посылает в порты, формирует какие-то управляющие импульсы для внешних устройств — подключайте сторожевую собаку к этим линиям, — ей абсолютно безразличны частота и скважность импульсов, ей лишь бы была постоянная движуха.
Главным минусом конкретно этой реализации таймера я назову, пожалуй, довольно короткий контрольный таймаут. Бывают случаи, когда хотелось бы иметь запас хотя бы в 3-5 секунд.

4. Надо ли покупать именно этот watchdog? Ну, каждый решит для себя. Сторожевую собаку, совершенно точно, можно получить дешевле $3. Кому-то проще купить один лишь только обозреваемый выше чип и с помощью ЛУТ сделать такой модуль самому. Кому-то проще взять легендарный 555 и сделать сторожевой таймер на рассыпухе: плюсы — дёшево и доступно, минусы — больше возни и времязадающие электролитические конденсаторы, а, значит, с годами гарантированно поплывут все параметры. Кому-то проще сделать одновибратор с таймером вообще на полупроводниках. Тут каждый решает сам.
Здесь же за вполне посильные деньги мы получаем полностью готовое и рабочее устройство с нормированными параметрами.
Так что резонность покупки каждый оценит самостоятельно.

Моей же задачей было рассказать о таких устройствах, о принципах их работы и, возможно, дать кому-то творческий импульс для самостоятельного построения новых интересных самоделок.

Никто ничего не предоставлял и не спонсировал, всё куплено на свои.

UPD: Пока писал обзор, продавец неожиданно поднял цену. Упс. Будем считать это временным приступом жадности. На этот товар у него периодически бывает скидка. Ну и ничто не мешает искать этот товар у какого-то другого продавца.
Планирую купить +92 Добавить в избранное +86 +164
+
avatar
+12
Как быть если сам watchdog зависнет?)
+
avatar
  • Dimon_
  • 24 мая 2017, 14:37
+8
Чем проще и «дубовее» устройство, тем меньше вероятности, что оно зависнет.
Сторожевые таймеры — очень простые устройства :)
Вероятность того, что одновременно зависнет и главное устройство и таймер-watchdog, вообще исчезающе мала.

В любом случае, речь идёт не о гарантиях, а о вероятностях. Устройство, оснащённое сторожевым таймером, с намного бóльшей вероятностью будет работать устойчиво. Не более :)
+
avatar
  • sir0ta
  • 24 мая 2017, 14:40
-4
Atmel 2560, marlin 1.1, встроенный ватчдог. Повис. И это все пару часов работы. Так что ничтожно… не есть 0. А в моем случае здесь и сейчас.
+
avatar
  • Dimon_
  • 24 мая 2017, 14:42
+14
Вы не очень внимательно читали обзор. Я там как раз размышлял про встроенные ватчдоги, и о причинах, по которым я рассказываю как раз о внешних.
+
avatar
  • sir0ta
  • 24 мая 2017, 14:51
-5
+
avatar
  • Dimon_
  • 24 мая 2017, 14:59
+14
Нет. Не так же. Для начала, надо разобраться, что же подразумевается под словом «зависание». Если ваш контроллер крутит бесконечный кусок кода — оно зависло? Да. Потому что это не весь код, а лишь его бесполезный кусок.
Если внутри этого куска был wd-ресет, то внутренняя собака будет молчать. Это один из сотни или тысячи возможных сценариев. Внутренние прерывания от таймера живут — внутренняя собака будет молчать.
Внешнему же таймеру абсолютно по барабану, что происходит внутри ядра: нет полезного сигнала — ресет.
+
avatar
  • sav13
  • 24 мая 2017, 15:25
+6
Внутреннему таймеру вообще то тоже по барабану, что у вас там бесконечный цикл. Для этого прерывания и созданы.
А если вы в цикле внутренний таймер сбрасываете, так и внешний WDT так же будете сбрасывать )))

То что «программисты» все в loop() пихают, да еще и delay() разделяют, так это их проблемы.
+
avatar
  • Dimon_
  • 24 мая 2017, 15:33
+1
То что «программисты» все в loop() пихают, да еще и delay() разделяют, так это их проблемы.
Да-да, иной раз, глядя в такой вот «код» где-то в интернете, тоже вздыхаю… :)
Как люди живут без прерываний?..
+
avatar
  • sav13
  • 24 мая 2017, 15:42
+2
А еще люди живут на интерпретаторах типа LUA. В микроконтроллере. Хорошо хоть питон туда еще не запихнули )))

Кстати интересно ценообразование таких модулей. DS1232 можно купить за 0.2$
Arduino Pro Mini с долларовым контроллером и кварцем стоит почти вдвое дешевле
+
avatar
0
А еще люди живут на интерпретаторах типа LUA. В микроконтроллере. Хорошо хоть питон туда еще не запихнули
Lua или еще что собственно не намного хуже «Си», все упирается в качество компиляторов/трансляторов. Другой вопрос потребляемые ресурсы…
+
avatar
0
Не только Lua жив самодельщик. Espruino — интерпретатор Javascript в ESP8266 и STM32 прекрасен.
+
avatar
  • verboo
  • 24 мая 2017, 16:17
+1
Хорошо хоть питон туда еще не запихнули )))

запихнули =)
micropython.org
+
avatar
0
Хотите Питон в микроконтроллере пожалуйста — habrahabr.ru/post/205626/
:)
+
avatar
0
ну зато есть на ЕСП питон :) micropython.org/
+
avatar
0
Да нормально живут, многоядерно. Propeller P8X32A — микроконтроллер без прерываний.
+
avatar
-1
Делей в лупе — это один из страшнейших грехов. Страшнее только использование гоуту!
+
avatar
+7
Гоуту иногда являются самым простым и элегантным способом реализовать задачу :)
+
avatar
  • Dimon_
  • 24 мая 2017, 17:09
+1
Гоуту иногда являются самым простым и элегантным способом
В ассемблере — да. На любом ЯВУ — не убедите. Ничего алгоритмически стройного вы на гоуту не постоите. Скажи «Нет» гоуту. Только правильные while/until.
+
avatar
0
Я не говорю, что гоуту нельзя заменить другими операторами, но порой одним гоуту можно избавиться от весьма нестройной кучки if-else :)
Только правильные while/until
И for, и switch и все остальное :)
+
avatar
  • DJV
  • 28 мая 2017, 03:17
+1
Весь диалог прочел с удовольствием ;))
+
avatar
+4
Прибор, защищенный вставкой плавкой, при скачке напряжения успеет защитить эту вставку плавкую, перегорев первым…
+
avatar
  • kirich
  • 24 мая 2017, 16:22
+5
Всегда было любопытно, почему многие думают, что предохранитель защищает устройство, вообще у него несколько другая функция.
+
avatar
+3
Вообще, это была цитата из законов «Мерфи»…
А предохранитель имеет не несколько иную функцию. Он имеет несколько функций. И функция защиты устройства среди них тоже присутствует.
+
avatar
  • kirich
  • 24 мая 2017, 16:50
0
Вообще, это была цитата из законов «Мерфи»…
Я в курсе :)
+
avatar
  • Z2K
  • 24 мая 2017, 18:01
0
И у каждого был свой ИП?
+
avatar
  • sir0ta
  • 24 мая 2017, 19:22
0
Чего?
+
avatar
  • Z2K
  • 24 мая 2017, 22:59
0
Atmel 2560, marlin 1.1, встроенный ватчдог. Повис. И это все пару часов работы.
— так это все питалось в одном приборе с одним ИП, или разные приборы с разными ИП?
+
avatar
  • sir0ta
  • 25 мая 2017, 05:08
0
Какие разные? У меги нет раздельных входов для питания.
+
avatar
  • sim31r
  • 28 мая 2017, 04:23
0
На 99% ошибка в программе. Например, сброс WDT в прерывании!
+
avatar
  • sir0ta
  • 24 мая 2017, 14:38
+2
Если мне не изменяет память, то фильм «Большое дело»:
«У меня есть анти-анти-анти-анти определитель номера!»
+
avatar
0
Еще один вашдок на этого вашдока
+
avatar
+2
Сигнал с 555 таймера подавать на RESET, с периодическим перезапуском таймера. Правда задающий время конденсатор нужен большой.
Схема есть тут: www.freetronics.com.au/products/watchdog-timer-module
Либо у LTC есть специальная интегральная микруха TimerBlox LTC6995-1 — низкочастотный генератор с таймером до 5 секунд. Обвязка всего три резистора, но сама микруха дорогая, зараза…

шютка юмора
+
avatar
  • ksiman
  • 24 мая 2017, 16:26
0
Как быть если сам watchdog зависнет?)
Каскадное включение или резервирование в какой-то степени помогут
+
avatar
0
Как быть если сам watchdog зависнет?)
подключать парами, второй ресетит первый… и так можно до бесконечности
:) :) :)
+
avatar
  • NAgain
  • 24 мая 2017, 14:46
-4
Странный девайс. Вернее — его назначение.

1. Если вы используете устройство, которое переодически виснет, то:

— замените его на то, которое этим не страдает.
— разберитесь в причинах его зависания и устаните их (например внешние наводки и т.д.)

2. Если вы сами спроектировали устройство, которое может зависнуть, то:

— подумайте еще раз и перепишите управляющую программу к нему.
— если устройство вообще без прошивки и основано на какой-то дубовой логике, но все равно виснет, то найдите причину его зависания и устраните ее.
— не занимайтесь разработкой электроники вообще и поручите это более компетентным людям.

Приблизительно такие мысли приходят в голову сходу. А вот городить огород из таких вот костылей — это все равно, что протечки ремонтировать изолентой, а не заменой поврежденного узла.

И последнее — чем больше компонентов в устройстве, тем выше шанс его выхода из строя…
+
avatar
  • Dimon_
  • 24 мая 2017, 14:52
+16
Вы встречали микропроцессорное устройство, которое гарантированно никогда-никогда и ни при каких условиях не зависает без watchdog? Назовите, пожалуйста. Вечного нет ничего, даже игл для примусов, как говорил О.Бендер.

А если вы сумеете спроектировать такое вычислительное устройство, вы станете героем планетарного масштаба. Без шуток.
+
avatar
  • key31
  • 24 мая 2017, 16:44
+7
Зачем вы так про Осю? Все было по-другому…

— Вчера на улице ко мне подошла старуха и предложила купить вечную иглу для примуса. Вы знаете, Адам, я не купил. Мне не нужна вечная игла, я не хочу жить вечно.
+
avatar
0
Да уж, передернул мусью цитатку!
+
avatar
  • tokmin
  • 25 мая 2017, 20:37
0
Ну мусью, а ситуайен :)))
+
avatar
  • Gektor
  • 24 мая 2017, 16:46
0
Неистово +
+
avatar
+12
Отличный совет — «Если в Вашей программе есть баги, то разберитесь в их причинах и устраните их» :))
Только странно, что даже мировые софтверные гиганты не следуют этому совету, то и дело в их продукции находят баги и дыры :)
Вачдог — это не метод борьбы с зависанием, а метод минимизации возможного ущерба на тот случай если что-то пойдет не так и девайс зависнет.
+
avatar
+2
Да уж, человек предлагает научиться программировать без ошибок. И это при том, что сам человек создан с кучей багов и уязвимостей!
+
avatar
  • sav13
  • 24 мая 2017, 17:04
+5
Даешь сторожевой таймер для мозга.
Как только от мозга перестают поступать адекватные ответы — перезагрузка колотушкой по башке.
На сколько бы лучше мир бы стал!
+
avatar
0
Такая перезагрузка может в итоге стать сигналом выключения.
+
avatar
0
Мало того, что без ошибок, так еще и предусматривая абсолютно все случайности (в том числе и пользовательские) :)
+
avatar
+1
Вам нужно работать в НАСА — может вы им поможете с таким подходом. А то вроде серьезные люди с бюджетами, но даже у них техника иногда зависает)
+
avatar
  • Z2K
  • 24 мая 2017, 18:14
+1
чем больше компонентов в устройстве, тем выше шанс его выхода из строя
— Да, да. Напишите это разработчикам самолетов и ракетной техники, они к сожелению этого не знают и делают двойное и тройное резервирование понижая надежность.
+
avatar
+3
Не надо путать резервирование модуля и сложность самого модуля.
Абсолютно две разные сущности.

И в доказательство — практически на всех платформах watchdog — это отдельная схема, никак не связанная с ядром.
Сделано это специально.
+
avatar
  • Z2K
  • 24 мая 2017, 23:03
0
Это сарказм — прочитайте комент на который был ответ.
Автор коммента написал — «чем больше компонентов в устройстве, тем выше шанс его выхода из строя…» — хотел уточнить для него что это не всегда так.
+
avatar
0
Ну так программу шаттлов потому и закрыли, что излишняя сложность конструкции при всем ее резервировании обладали слишком низкой отказоустойчивостью и на предполетную диагностику тратили больше чем позволял сэкономить многоразовый полет.
+
avatar
  • Samman
  • 24 мая 2017, 18:37
+1
они к сожелению этого не знают и делают двойное и тройное резервирование понижая надежность
Он это не только знают, но и понимают. Поэтому и делают резервирование.
+
avatar
  • Z2K
  • 24 мая 2017, 23:03
0
Это сарказм — прочитайте коммент на который был ответ. mySKU.me/blog/aliexpress/52212.html#comment2071236
+
avatar
  • f1203
  • 24 мая 2017, 14:47
0
Не понял, его можно к вайфай роутеру подключить? Что бы перегружал при отсутствии пинга?
Хотя идея так себе. При пропадании интернета роутер уйдет в вечную перезагрузку, врядли это ему понравится
+
avatar
  • Dimon_
  • 24 мая 2017, 14:50
0
При отсутствии пинга — нет. Потому что это совсем другой уровень ОСИ. Не получится.
Если от зависаний внутренней ОС роутера — то да, вполне защититесь.
+
avatar
0
На кикстартере есть что-то похожее — WiReboot: www.kickstarter.com/projects/786298545/wireboot-keep-your-wifi-on-24-7-automatically-rebo
+
avatar
0
Купил себе самый простой микротик домой, взамен уставшего tp-link'а. Был приятно удивлён наличием в нем вачдога.
+
avatar
  • Asasl
  • 24 мая 2017, 14:48
-10
+
avatar
  • Dimon_
  • 24 мая 2017, 15:09
+4
Зря не читали обзор. Там и про это написано. И комментарии выше тоже.
+
avatar
+4
Вы не правы. У тех же STM32 есть абсолютно независимый вачдог со своим тактовым генератором. И работа с ним будет мало отличаться от работы с внешним вачдогом. Описанные Вами случаи — когда кусок программы со сбросом вачдога продолжают выполняться в цикле — так же применимы и ко внешнему вачдогу. Ну и в целом они не являются зависанием. Классически зависание — это прекращение выполнения основного кода вообще :)
+
avatar
  • Dimon_
  • 24 мая 2017, 16:40
0
В общем случае да. Я соглашусь.
+
avatar
  • Asasl
  • 24 мая 2017, 17:53
-1
Еще раз!
Статья называется
"«Сторожевая собака» для микропроцессорной техники"

У нормальных микропроцессоров имеется свой аппаратный ватчдог,
а другие использовать в ответственных приложениях не надо.
+
avatar
0
да и в аврах оно тоже тактируется отдельно, изнутри на 8кГц чтоль, если мне склероз не изменяет
+
avatar
0
Я с AVR уже очень давно не имел плотных дел, так что просто не помню как у них там :)
ЗЫ: посмотрел сейчас даташит на тиньки 24/44/84 (самый свежий из имеющихся у меня даташитов на AVR) — да, таки отдельный генератор на 128 кГц :)
+
avatar
  • sav13
  • 24 мая 2017, 14:51
0
А если повиснет микроконтроллер во время высокого уровня на ST?
Мне больше нравится сбрасывать сторожевик изменением уровня. Каждую секунду менять на противоположный.

Но позвольте с вами не согласится по поводу первой фразы.
Контроллер с хорошо вылизанной прошивкой и нормальной схемой не зависает.
Это вам не микропроцессоры с глючными операционками )))
А то что зависает, например кривая периферия, на 99% лечится встроенным таймером самого контроллера.
+
avatar
  • Dimon_
  • 24 мая 2017, 14:55
0
А если повиснет микроконтроллер во время высокого уровня на ST?
Проверено. Ресетится. Ему перепады нужны, а не сами уровни.

Контроллер с хорошо вылизанной прошивкой и нормальной схемой не зависает.
Это вам не микропроцессоры
Эх, Алексей… Ваши бы слова… :)
+
avatar
0
Миром правит вероятность, а не абсолют :)
+
avatar
  • sav13
  • 24 мая 2017, 16:50
0
Абсолют, это когда исключается все маловероятное )))
+
avatar
0
Этот процесс тоже подвержен вероятности… ;)
+
avatar
0
Абсолют, это когда исключается все маловероятное
Главное — не совершать распространенную ошибку: маловероятное=невозможное.
+
avatar
  • sav13
  • 25 мая 2017, 12:13
0
Не нужно подменять философские понятия и математичексие

Маловероятное принимается за невозможное
Поясняю
Есть вероятность зависания контроллера
Есть вероятность отказа сторожевого таймера.
Есть вероятность падения метеорита на голову или на контроллер

Когда я проектирую устройство, я рассчитываю надежность, то есть вероятность отказа за единицу времени.
И если вероятность отказа устройства (как единой системы всех компонентов) меньше требуемой — то я достиг требуемой надежности устройства.

Можно увеличивать надежность устройства снижая вероятность отказа основного контроллера (в том числе вылизыванием схемы им кода)
Можно ставить дублирующие узлы
Можно костыли вроде WDT

Все это приводит к увеличению надежности.
Кстати, если контроллер выйдет из строя, или будет входить в ошибочное состояние постоянно после загрузки, то никакой WDT не спасет
+
avatar
0
Когда я проектирую устройство, я рассчитываю надежность, то есть вероятность отказа за единицу времени.
Это в целом правильно и красиво. А где брать исходные данные по вероятности отказов ардуинщикам?

Можно увеличивать надежность устройства снижая вероятность отказа основного контроллера (в том числе вылизыванием схемы им кода)
И повышением качества компонентов, сборки, контроля и испытаний.
+
avatar
  • msp
  • 24 мая 2017, 21:22
+1
Контроллер с хорошо вылизанной прошивкой и нормальной схемой не зависает.
Есть еще такая штука, как электромагнитная совместимость (ЭМС) технических средств. Так как контроллеры часто гальванически связаны с различной периферией, то обеспечение ЭМС сложная и дорогая штука.
Иногда экономят на развязках, конденсаторах, экранах и др. технических методах обеспечения ЭМС.
Тут актуальность сторожевой собаки сильно растет.
+
avatar
  • skif31
  • 24 мая 2017, 14:56
0
Хочу
+
avatar
0
А что есть для компа по юсб? знаю есть готовые решения, дорогие, DIY интересно
+
avatar
  • Dimon_
  • 24 мая 2017, 15:07
0
Если программой туда что-то постоянно слать — почему нет. Собственно, можно под это использовать любой порт, хоть USB, хоть ненужный LPT, хоть COM (только уровни сопрячь). Пока туда что-то пишем, комп спокойно живёт. Слать можно бесконечным батником в отдельном окне.
+
avatar
  • rexen
  • 25 мая 2017, 09:38
0
Даже где-то статья была — самодельный ватчдог для сервера. То ли на оверклокерсах, то ли на каком-то сходном ресурсе.
+
avatar
0
Знатный барыга. С таким рейтингом ещё и цену задирает )))
+
avatar
+2
380 рублей за аппаратный watchdog? Кучеряво.
Там же по-сути только микросхема DS1232, которая стоит 15р в розницу без доставки.
А вообще можно на 2,5 рублевой NE555 сделать watchdog.
+
avatar
  • Dimon_
  • 24 мая 2017, 15:45
0
Зачем не читали обзора?
Прокрутите вверх. Вывод №4.
+
avatar
+1
Читал, не видел этого вывода.
В любом случае там нет ссылок на альтернативы.
+
avatar
0
Пожалуйста: альтернативы.
+
avatar
0
Я очень рад, что Вы тоже указали альтернативы в комментариях.
+
avatar
  • sav13
  • 24 мая 2017, 16:53
0
555 не гарантирует 100%
Он сбрасывается не сменой уровня, а каким то одним уровнем. Например, низким. И если зависание произойдет в этот момент, то вместе с таймером. Ну и время сброса для разрядки конденсатора тоже напрягает.
+
avatar
0
Я вот хочу собрать климатическую камеру для созревания колбасы, с управлением на ардуино+ESP или просто ESP, такой watchdog в этом случае отличная штука, ибо если контроллер зависнет то я потеряю несколько тысяч денег, что в сравнении с 3 баксами несопоставимо. Так что применения есть.
+
avatar
0
Именно из-за этих собак летели и летят навигаторы ( в основном на wince). Особенно Falk и прочая китайская хрень.
+
avatar
  • u3712
  • 24 мая 2017, 15:55
+5
Вообще-то, бывают еще «оконные» сторожевые собаки.
Программа может зависнуть в цикле дерганья ногой собаки, причем очень легко. При этом основной процесс может лежать. Так что — в программе ставят два watchdog — по времени и оконный. Смотрите не AVR, а ARM. ))
Программы, чаще всего, зависают при работе с аппаратурой. И исправлять свои ошибки должны сами модули обработки железа, а не какой-то внешний супервизор. И вообще, попытка свалить на watchdog сродни капитуляции — я программить не умею, сделайте это за меня. ))
Итак, два недостатка у subj:
1. девайсу требуется серьезная переработка программы микроконтроллера, чтобы дерганье ногой было в основном процессорном цикле, и с учетом всех нюансов исполнения модулей. После прочтения конца фразы становится ясно, что реализация обработчика нюансов исполнения (менеджер то бишь) практически устраняет нужду в watchdog. Неожиданно. ))))))))))))))))
Ну а без =серьезной= переделки программы, этот костыль будет только вредить.
2. девайс не спасает от слишком частых импульсов. Т.е. неправильная работа системы, понадеялись на watchdog и получили fail. Лучше уж без него. Халявы не будет — исправляйте код, без костылей.
Все сказанное IMHO, естественно.
Единственное применение subj — прилепывание его к устройствам, к которым нет доступа к правке firmware. Для остального — ручками, ручками, не ленитесь. ))
+
avatar
  • Dimon_
  • 24 мая 2017, 16:02
+2
ручками, ручками, не ленитесь.
А я где-то жаловался, что мой код виснет? :) На разработанных мной девайсах (на AVR) устойчивый аптайм годами :)
Первое моё серьёзное устройство на 90s2313 (не путать с Attiny2313) уже отпраздновало 15-летний юбилей и продолжает жить.
Я на кривость своего кода нигде по тексту не жаловался.
Смысл обзора — рассказать о существовании такого.
А уж кто и к чему его применит — дело каждого. Верно?
+
avatar
  • sav13
  • 24 мая 2017, 16:59
0
Ни для кого не секрет, что любая цифровая техника, рано или поздно, «зависает».
Так виснет или работает? )))
На самом деле есть куча мест, куда нельзя залезть программно/аппаратно. Когда железо/софт чужой и без исходников, а может быть и даташитов. А менять не целесообразно. Вот тогда и идут в ход костыли.
Помню народный DIR-340 у которого периодически подвисали USB 3G модемы. Причем простой перезагрузкой это не лечилось ни в какой прошивке. Только передергивание шины питания USB. Так я и собрал свой первый сторожевой таймер )))
+
avatar
+2
Так виснет или работает? )))
Скажем так: любая цифровая техника имеет совсем не нулевую вероятность в какой-то момент повиснуть, и чем она сложнее, чем больше и сложнее в ней программный код, тем вероятность выше :)
+
avatar
  • Lithe
  • 24 мая 2017, 15:55
0
Это как при сломавшемся моторе в машине вместо ремонта другой в багажник пристроить! Это шутка.
А вообще тема интересная. Прочитал с удовольствием.
+
avatar
  • kirich
  • 24 мая 2017, 16:01
+2
Много много лет назад, когда во всю собирали АОНы, еще на Z80, то товарищ производил «антизависаторы», на базе банального 555 таймера. Мониторинг питания был или нет уже не вспомню (вроде был), а в остальном примерно также. Один вход заводился на ногу процессора где всегда были импульсы, когда процессор зависал, импульсы пропадали. Если не появлялись в течении определенного времени, шла команда на перезагрузку, также нормированная.
Потом мы эту железку в других приложениях использовали, а потом вообще пошли микроконтроллеры с аппаратным ватчдогом.
+
avatar
  • sav13
  • 24 мая 2017, 17:03
+8
Самый крутой сторожевой таймер — на против сервера ставился комп с CD-ROM, который этот сервер пинговал.
Если пинг не проходил, компьютер открывал CD-ROM, а тот при открытии нажимал на ресет сервера )))
Админы, они такие ленивые
+
avatar
  • udavst
  • 26 мая 2017, 11:22
0
А кареткой матричника можно было вытащить шнур питания, если требовалось на выходные что-то оставить доделаться на компе, а к понедельнику отключить, как буд-то так и было.
А сервера у нас, почему-то никогда так не зависали (на NT4 были), поэтому до CD-ROMа, мы жаде и не дошли.
+
avatar
  • udavst
  • 26 мая 2017, 11:18
0
Да, для контроля по питанию там был стабилитрон. А подключался вачтог на управление любого сегмента индикатора, тк индикация там динамическая — импульсы там были всегда. Я парвда делал не на 555, а на ЛН2, уже и не помню, как из 4х инверторов делал, вроде как мультивибратор с большим временем задержки, практически по тому же принципу, что и в 555, просто 555 таймер я паталогически не любил, а 561 серия для меня была божественна ), позволяла на себе сделать что угодно.
+
avatar
  • Nobeus
  • 24 мая 2017, 16:47
-2
Прибор, защищаемый быстродействующим плавким предохранителем, сумеет защитить этот предохранитель, перегорев первым.
+
avatar
0
Дежавю
+
avatar
0
Он, па«анец, не только​ цену поднял, там ещё и доставка аж 2.58!
+
avatar
  • sav13
  • 24 мая 2017, 17:15
0
А тут как раз обсуждается, что и $3 за эту штуку многовато )))
Видимо муськоэффект — дофига народа в корзину это в корзину положили. Вот продавец и думает — нужно рвать!
+
avatar
  • Dimon_
  • 24 мая 2017, 17:18
0
Кстати, да. Мне тоже так показалось.
До сегодняшнего утра точно было так, как я указал в заколовке обзора — $3,08. Я точно проверял.
Он поднял цену уже потом.
+
avatar
+2
Эта собака предназначена для старых чипов атмел и пик.
Ядро ARM имеет аппаратную поддержку собаки. Чипы от st — имеют максимальное количество аппаратной поддержки на одном кристалле. Если к старому атмелу подключить все актуальные для современных мк внутри_кристальные технологии — то получится самая настоящая рождественская ёлка метровой высоты. Как побочный эффект — разбогатеет продавец шилдов.
Юзайте современное, хватит использовать костыли для старичков.
+
avatar
  • Dimon_
  • 24 мая 2017, 18:28
0
Вы знаете, ваша реплика читается так:
«ффу, бампер от Жигулей? Он же подходит только к Жигулям. Юзайте современные Бентли, они намного лучше».

Давайте, сделайте нам Кортексы М такими же доступными, как ардуины. Сделайте, чтобы готовая плата под STM32 стоила столько же, сколько ProMini, т.е. 2 бакса. Напишите море либ, подо всё, — от старого утюга до последнего космического корабля. Включительно. Напишите тучу туториалов, экзамплов, форумов и ресурсов. Сделайте всё это доступным и бесплатным. И мы все с радостью пересядем со старой Атмеги на что-то современное.
+
avatar
+1
Все новые ATMEGA имеют отличный watchdog, даже у tiny он есть.
И стоят они дешевле старых (если не про watchdog — пример attiny 13 и attiny13a).

Но коешн, лучше на старом все делать, чем учиться новому, ага? — ибо роднее. :D
+
avatar
0
дык blue pill на stm32f103 и стоит дешевле чем промини) меньше 2 с доставкой)
+
avatar
+1
Цена на платы с STM32 сейчас не сильно выше, чем на ардуины. В конце концов 2 и 4 бакса — разница совершенно непринципиальна если не закупать их тысячами :)
Но вот мозги с ними нужно поднапрячь посильнее, чем с ардуиной, это да. Придется думать, а не просто складывать кубики.
+
avatar
+1
Ваше — «Напишите море либ, подо всё, — от старого утюга до последнего космического корабля.»
Имеет настолько жёсткую привязку к архитектуре атмела — что просто неспособно работать на чём-то ещё кроме самого атмела. Ещё в самом начале пути была допущена одна громадная ошибка — слияние программной и аппаратной части кода в единое целое. Естественно — так код получается быстрее и проще, но работать он будет только на атмел.
Подобная ошибка повторилась с чипами st. Потом её безуспешно пытались исправить халом, а теперь уже и LL. Но проблема в другом — в старой школе программирования.
Есть простейший пример — рисование графики на экране жк.
Практически все существующие GL имеют жёсткую привязку к типу жк индикатора, как и к самому чипу мк. У них есть перечень устройств поддержки, который завсегда висит на главной странице проекта. Шаг в сторону — и весь проект бесполезен.

А между прочим есть простое решение — железо отдельно — код отдельно.
Код содержит стандартные функции, с жёстко закреплёнными аргументами и их типом. Совершенно никого не волнует, как железо будет выполнять полученные команды — важно наличие стандарта интерфейса.
Аппаратный уровень — наличие стандартных программных функций позволяет реализовать максимально быстрое выполнение простейших операций с внешним интерфейсом мк. Это может быть ногодрыг, может быть прямая запись в целый порт, может быть использование FMC, или даже DMA2D.
Суть в том что простейшую операцию для конкретного железа можно написать за десять минут.
Перелопачивать всю графическую библиотеку можно несколько дней.
+
avatar
  • rexen
  • 25 мая 2017, 09:49
0
Расскажите это разработчикам драйверов и причастным. А также всем любителям «стандартов» в виде библиотек, фреймворков и прочего.
То, что вы написали — палка о двух концах. Прямая работа с железом — это скорость и надёжность. А лишние прокладочные сущности облегчают работу, но ухудшают другие параметры.
И в конце концов «стандартные интерфейсы» всёравно устаревают.
+
avatar
  • Dimon_
  • 25 мая 2017, 10:05
0
Вот хотел автору реплики ответить что-то подобное. Абсолютно с вами согласен. Мы это на винде видим уже четверть века. Драйвера закрытые; нет драйверов под конкретный девайс — и всё, железяка абсолютно бесполезна. Всякие dll, api — хорошо, но если чего-то нет в api — можешь биться хоть головой об экран. И все эти прослойки тоже пишут неизвестные тебе индусские мальчики.
Нет уж, так тоже плохо.
+
avatar
+1
Наверное вас уже не вылечить, вы совершенно безнадёжны.
Вам просто трудно провести черту, разделяющую программный и аппаратный уровень.
Но я попробую.
Например есть функция которая рисует круг на дисплее, если она имеет прямое обращение к регистрам жк дисплея — то это стиль аурдино.
Однако если та-же функция будет обращаться к дисплею как к линейной памяти — то функция получится настолько гибкой, что способна работать абсолютно на любых мк и с абсолютно любыми дисплеями. Для стыковки с реальным железом необходима инлайн функция написанная для конкретного мк и дисплея. Инлайн функция уникальная, для конкретного проекта. Повторно применить на другом проекте — скорей всего уже не получится, да это и не требуется. В любом случае написание новой — дело 10 минут.

Кстати, алгоритмы с больших машин могут использоваться на мк, нужно просто уметь их готовить.
+
avatar
  • Dimon_
  • 25 мая 2017, 11:37
0
Будьте сдержанее. И вы, видимо, рассуждаете откуда-то с дивана. Жизнь устроена так, что ваши умозрительные теории разбиваются о действительность.
. Для стыковки с реальным железом необходима инлайн функция написанная для конкретного мк и дисплея
А вот для конкретной железки производитель её не написал. Забил. Забыл. А код — закрытый. Ваши идеи?

Вот хотите жизни?
У меня есть железяка. Плата с PCI разъёмом. Ей много лет. Она до сих пор рабочая и заменить её нельзя. Под неё есть драйверы на win3.1, win95, win98 и winNT. Больше производитель на неё забил.
Под Виндой 2000 она у меня работала с дровами под NT.
Под XP народ плясал с бубнами, нашлись энтузиасты, прикрутили какие-то неофициальные драйвера с извратами и костылями. Плата работает и по сегодняшний день.
Под чем-то новее, чем XP, она уже гарантированно не заработает. Никаких энтузиастов уже не найти. Никаких дров уже физически не найти. Она работает. Она исправна. Смена ОС по любой из причин — и всё, в помойку безальтернативно.

Ну, мистер ДиванныйТеоретик, что мне прикажете делать? Советы типа «поменяй железку на современную», «вложи денег и поменяй всё», «забей», «что за железка такая» и прочего не предлагать. Ответьте мне на конкретный вопрос. Есть железо, есть аппаратный интерфейс (PCI), есть ОС, есть софт. Нету программной прослойки низкого уровня, чтобы железку заставить работать. И я не уникален. Огромное количество железа выбрасывается исключительно из-за устаревания того, о чём вы тут красиво размышляете, а не из-за физического износа и поломок.

Так что ваша идея — тоже далеко не идеал. Не надо так форсить её.
+
avatar
-1
А вот для конкретной железки производитель её не написал.
Дак возьмите и напишите сами.
В чем проблема?
Я вот для WS2812 совсем недавно взял и написал, т.к. с тем, что «предлагает производитель» у МК ни прерываниями нельзя пользоваться ни вообще дышать, когда данные отправляются.

Слава Богу протоколы сейчас простые, а МК — умные.

Даже если проприетарщина — отреверсить сейчас с machine learning стало гораздо проще. Пример — работа с дисплеем на Kindle. Вообще нет ни какой документации. Сложный wave-режим, 7! источников напряжения. Ниче, собрался народ на хакадее, отреверсил и сделал.

А, конечно, сидеть и пространно рассуждать — тогда да, ничего нельзя поделать, ага.

Вот потом такие умельцы и выкладывают сови «раскривушки» и юзают аппартаный ватчдог, потому как ISP программатора у них нет, че это — они не знают и разбираться не хотят.

Пример про девайс Вы конечно привели ни к селу ни к городу, но отвечу.
Если уж сильно надо — можно в виртуалку, на которой система стоит, под которую есть дрова, прокинуть эту карту и завести ее там. А дальше запросы проксировать через эту виртуальную машину. Так и делают, когда вот никак нельзя заменить.
+
avatar
  • Dimon_
  • 25 мая 2017, 12:03
0
Я вот для WS2812 совсем недавно взял и написал,
Вот читаю вас. Всё больше улыбок ваши посты вызывают. У вас юношеский максимализм, подкреплённым пока ещё нешироким кругозором. Ну да это дело наживное, придёт. Все такими были.

Нет, молодой человек, это не мигалка на WS2812, с которой вы так геройски справились.
Это сложное технологическое оборудование со специально под него сделанным контроллером на PCI и специфическим софтом. И даже, не поверите, на ютубе про это нет уроков, совсем-совсем.
И уж конечно, нашли пути, всё работает и эксплуатируется. То, что я об этом тут написал для примера, ещё не значит, что в реальности все стоят вокруг этой железки, плачут, и не знают, что делать.

То, что я написал — лишь иллюстративный пример. Коих — море.
+
avatar
-1
Бгг :D А как у Вас докторская есть по определению возраста по тексту?

Мне, дедушка, уж 8 лет как за 30, за плечами куча программерской и железячной работы. В том числе — и в команде.
Откуда, собственно я и знаю про все эти костыли.

По этому Ваш старческий снисходительный тон как раз у меня вызывает улыбку.

Под любую железку — если она РЕАЛЬНО нужна можно написать или эмуляцию, или то, что выше обозначил.

В одном цеху стояла печь для литья, хитрая, старая. У нее было 8 различных датчиков температуры, 3 датчика аварийного состояния и система управления местами нагрева. Все это по RS485 (Вы, как дедушка, должны знать этот интерфейс) подавалась на хитрую платку, воткнутую в PCI. Дрова безнадежно устарели, а вот печь со своей работой справлялась, но надо было как-то воткнуть все это на новую машину и систему. У нас ушло 3 дня на реверс, потом еще пару дней на проработку концепции эмуляции и месяц на реализацию драйвера, который эмулировал платку на компе, чтобы родной софт не почуял разницы и контроллер с USB с обвязкой вместо PCI платки.

Так что если надо — все решается.
А если сидеть на заднице ровно — то да, можно бесконечно болтать да возраст по комментариям определять :D
+
avatar
  • rexen
  • 25 мая 2017, 17:27
0
Ну если так подходить к делу, то в конечном счёте сделать можно всё — вопрос лишь в цене.
+
avatar
0
Ах, да!
Забыл написать, что WS2812 была тоже для примера.

Надеюсь, литейная печь подходит под ваши «Это сложное технологическое оборудование» :D
+
avatar
+3
Изивините, а не подскажите на какой старой атмелке отсутствует WDT? Может она стара настолько, что её сейчас днём с огнём поискать. А то я как то еще ни одного кристалла от Атмел без WDT не встречал.
+
avatar
  • ewavr
  • 24 мая 2017, 19:20
0
В AVR WDT был везде, даже в AT90S1200. Это BOD'a в первых AVR не было.
+
avatar
  • sim31r
  • 28 мая 2017, 04:31
0
Еще есть вариант что WDT занят спящим режимом, там прерывание на нем висит для пробуждения…
+
avatar
-3
Ога, вместо того, чтобы перепрошить загрузчик в Arduino Вы предлагаете приконетелить туда аппаратный watchdog — это твердая пять!
Клево! Вот потом и рождается поколение, которое вместо того, чтобы разобраться с причиной подвисания и устранить, ставит ватчдог на перезагрузку — отличный вариант :)

Если делать что-то серьезное — программатор все равно рано или поздно покупается — с ним перепрошить загрузчик — раз плюнуть.
Watchdog у ATMEGA — абсолютно самостоятельное и отдельное устройство, просто находящееся на той-же подложке, что и кристалл.
И это вообще у большинства современных процессоров.

По-этому нужность отдельного аппаратного ватчдога в современной цифровой технике практически нулевая.
Единственное, где он сейчас может применяться — это у криволапых программистов-железячников, не желающих искать проблемное место и повсюду использующих костыли или же в очень сложной и модульной децентрализованной системе, где нет выделенного ядра — тогда да, этот watchdog будет просто одним из модулей.
+
avatar
  • Dimon_
  • 24 мая 2017, 19:13
+7
Ога, вместо того, чтобы перепрошить загрузчик в Arduino
Эк вы, одной строчкой. Всех, у кого нет ICSP-программатора, записали в людей второго сорта…
Думаю, я не очень ошибусь, если скажу, что несколько сот тысяч людей на планете не имеют даже UART-TTL конвертера, а чтобы вливать свои скетчи в Уны, Наны и Мега-ардуины, обходятся только USB-шнурками.
Они все недочеловеки и недостойны embeddeв области?

Вы предлагаете приконетелить туда аппаратный watchdog — это твердая пять!
Я, если не заметили, никому ничего не предлагаю. Я лишь потратил своё время, чтобы написать обзор и рассказать о таком устройстве, как сторожевой таймер. А уж решать, нужен он кому-то или нет, и вообще целесообразность приобретения я оставил на усмотрение читателей. Чем же я вызвал ваш праведный саркастический тон?

Не решайте за людей, что и как им надо делать. Рассказать и поделиться знаниями — да. А вот оценивать, какое рождается поколение и что оно должно делать — этого лучше не надо.
+
avatar
+2
Они все недочеловеки и недостойны embeddeв области?
Именно по-этому эта плата — зло для них. Страшный костыль. Я выше объяснил уже, почему.

Мало того — USB ASP программер стоит на Ali 1.25$, что почти в два раза дешевле вашей платки + человек разберется хоть чуть-чуть в предметной области.

Я лишь потратил своё время, чтобы написать обзор
А за обзор я Вам плюсик поставил — как раз за время и старание.
А уж решать, нужен он кому-то или нет, и вообще целесообразность приобретения я оставил на усмотрение читателей.
А вот это — как раз и есть зло :)
Возможно, Вы, как человек в предмете разбирающийся и применит эту плату и по назначению, но большинство — нет.

Не решайте за людей, что и как им надо делать.
Я не решаю, но если я потенциально вижу проблемы — я честно об этом предупреждаю.

У Вас-же тон статьи примерно такой «используйте это» ИМХО, конечно.
+
avatar
+1
Единственное, где он сейчас может применяться — это у криволапых программистов-железячников, не желающих искать проблемное место и повсюду использующих костыли
А представляете насколько криволапее разработчики особенно ответственной техники — авиационной, космической, военной — что они не только вачдоги используют везде где только могут, но еще и двойное-тройное резервирование модулей делают. Видимо их криволапость настолько сильна, что даже просто вачдоги от нее не спасают, да? :)
+
avatar
  • rexen
  • 25 мая 2017, 09:56
0
Дело, конечно, не в криволапости, а в целесообразности. Зачем убивать тысячи человекочасов на вылизывание рограммы до идеала, если проблему можно решить гораздо проще, дешевле и быстрее? Идеалисты обдумывают сверическую программу в вакууме, а реалисты в это время выкатывают на рынок сырой софт, а баги патчат по мере нахождения оных. Зато реалисты уже стригут бабло, в то время как идеалисты только сели что-то писать. Увы, мир таков.
+
avatar
+4
Я Вам открою еще один секрет этого мира — идеалисты никогда не закончат свою идеальную программу.
+
avatar
0
Что бы контролировать ардуину, проще купить еще одну дешевую ардуину и написать прошивку, что бы они друг друга контролировали от зависаний. Тогда ни основной контроллер не повиснет навечно, ни контроллер в роли вачдога. ;)
+
avatar
  • kirich
  • 24 мая 2017, 19:19
+1
что бы они друг друга контролировали от зависаний.
Придется тогда ставить третью, чтобы она контролировала две первых. :)
Хинт — правильная защита — аппаратная.
+
avatar
  • Sanja
  • 24 мая 2017, 19:45
+1
ардуины на ура виснут от электромагнитных возмущений — типа искрения контактов в реле поблизости. Так что легко могут зависнуть сразу две. Нет, строжем должно быть дубовое устройство
+
avatar
  • sim31r
  • 28 мая 2017, 04:28
0
У ардуины и так есть WDT. Другое дело, что второй микроконтроллер может на высоком уровне анализировать первый МК, не просто наличие импульсов, а содержание памяти, регистров, потребление и чуть что сразу перезагружать.
+
avatar
0
спасибо! я в схемотехнике и компонентах ноль, но было интересно почитать и теперь понимаю что это и с чем его едят… правда програмирование ардуин и даже 8266 для меня китайская грамота(
+
avatar
0
Я не понял зачем эта хрень нужна avr-ам и ардуино. У avr есть встроенный wdt. Он по-моему даже тактируется от собственного генератора, не трогая первый и второй таймер. Автор пределал собаке 5-ю ногу.
+
avatar
  • Dimon_
  • 25 мая 2017, 08:19
+1
Автор пределал собаке 5-ю ногу.
Где, что и к чему я приделывал?
Я рассказал о существовании таких устройств, я рассказал, как они работают. На простом коде из пяти строк я показал, что обозреваемое устройство действительно работает и работает правильно.
Где я показывал какую-либо конструкцию? Где я говорил, что я это куда-то впаивал? Где я говорил, что вообще планирую на базе предмета обзора что-либо делать?
Я лишь потратил время на написание и вылизывание обзора. Чем же я, по-вашему, виноват?
+
avatar
+1
вы не виноваты, вы просто очень сильно просчитались взяв для примера ардуино на avr — у которого уже есть встроенный watchdog timer. который очень легко использовать. вот пример где он используется для просыпания avr из глубокого сна — github.com/enjoyneering/Arduino_Deep_Sleep/blob/master/arduino_deep_sleep.ino

вам бы пример замутить как его к pc прикрутить, чтоб следить не завис ли комп — получили бы тысячу плюсов. а так приделали к avr то что у него из коробки есть. не правиль но это учить молодеж как делать не надо.

я вам минус не ставил.
+
avatar
0
Поймете когда будете делать малообслуживаемые устройства на микроконтроллерах. Даже неважно какого производителя микроконтроллер будет.
Даже прохождение испытаний по ЭМС не дает гарантий что изделия будут работать как надо. :)
+
avatar
  • sim31r
  • 28 мая 2017, 04:38
0
1. Есть только у Arduino Uno.
2. WDT может быть занят для пробуждения из спящего режима.
+
avatar
0
ищу вот такую штуку у китайцев, никто не видел?
shop.open-dev.ru/product/usb-watchdog-pro2
+
avatar
0
У китайцев стоит практически столько же и поддержка никакая наверно. Вот например: ru.aliexpress.com/popular/usb-watchdog.html
+
avatar
0
эту-то я видел, по сравнению с ней конечно лучше взять отечественный вариант
+
avatar
0
Отличный познавательный обзор на отличный девайс!
Есть ли такие-же только на 3.3V для ESP чипов?
+
avatar
0
еще один любитель костылей. зачем?! у ESP есть встроенный watchdog timer, научитесь им пользоваться.
+
avatar
+1
Про встроенные уже писали, я бы не стал им доверять.
+
avatar
  • IRAKLI
  • 28 мая 2017, 05:41
0
А возможно его каким либо образом к пк на винде прикрутить?
+
avatar
0
Вход подключить к COM порту (через согласователь уровней, или USB-COM). Выход на кнопку ресет. Написать простенькую программку, которая будет слать в порт переиодичкски. Только на время загрузки надо защиту от ресета. Вообще делали в своё время на сервере подобное, но микроконтроллером.
+
avatar
  • kiv69
  • 03 июня 2017, 13:23
0
Было бы полезно, но…
В МК ждунпёс уже есть, для компа особого смысла не вижу, надо искать и устранять проблему зависаний, а не костыли допаивать.
Так и не придумал, куда ЭТО можно использовать, лучше за эти деньги реально полезный какой модулёк купить.
+
avatar
  • uuuu
  • 16 августа 2017, 11:21
0
не подскажете, что делать, ардуино загружается дольше 1,2 секунды и из-за этого модуль постоянно его резетит
+
avatar
  • Suxovei
  • 02 января 2019, 14:01
0
Доброго!!! Как-то решили вы эту проблему?? У меня та же фигня… По скетчу от автора, собака резит уно и не успевает загрузить снова и так в цикле… еще и мои два модуля резят не 1200 милисекунд, а 600 и 650.
+
avatar
  • Dimon_
  • 02 января 2019, 14:35
0
А вы уверены, что этот модуль перезагружает именно по отсутствию импульсов дольше 1, 2 с?
Поясню вопрос. Модуль формирует сигнал перезагрузки, в том числе, и при падении напряжения ниже 4,5v. Посмотрите осциллографом, возможно, на старте у вас есть провалы по питанию.
Потому что загрузчик Уны а) не работает дольше секунды, б) модуль не начинает следить, пока не придёт первый импульс, а если загрузчик не отработал(сколько бы долго это не продолжалось), то и импульсы не начались.
+
avatar
  • Suxovei
  • 10 января 2019, 21:05
0
И снова здравствуйте! Так может быть всё таки поможете!? Куда на плате уно воткунть вход ST собаки???
+
avatar
  • Dimon_
  • 10 января 2019, 21:29
0
Э… Так в тексте обзора же:
— линия ST подключается к любому свободному пину, желательно без аппаратного ШИМ, — допустим, у меня это пин 2.
К пину D2 и подключайте…