Какой из этих подходов подходит для сторожевого таймера?

8

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

Основываясь на некоторых исследованиях, мне кажется, что существует около четырех вариантов:

  1. Подключите мой микроконтроллер с внешней выделенной микросхемой для сторожевого таймера .
  2. Подключите мой микроконтроллер с дополнительным микроконтроллером (какой-то очень простой, недорогой), последний закодирован для единственной цели - сторожевого таймера.
  3. Выложите мою собственную схему сторожевого таймера на 555 таймеров и подключите ее к моему микроконтроллеру.
  4. Используйте встроенный сторожевой таймер моего микроконтроллера.

,

Какой из вышеперечисленных подходов вы бы оценили выше и почему?

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

Небольшое примечание : я бы предпочел вариант 1, для простоты, однако, исходя из пары, которую я нашел, эти части либо кажутся дорогими (я бы предпочел решение не более 1,25 доллара США), либо разрешали только меньше чем 2 секунды для периода времени сторожевого таймера.

boardbite
источник
1
4) это дешево и просто. Ваше возражение только в том, что вы не можете установить его на 6 секунд? Это довольно длительное время по стандартам микроконтроллеров
pjc50
1
@ pjc50: Это определенно дешево :) И даже 6-секундное время возможно, я верю. Тем не менее, статьи, подобные этой, предполагают, что внутренний сторожевой таймер может быть не таким надежным, как выделенный внешний. И причина 6-секундного времени состоит в том, что на моем микроконтроллере у меня есть загрузчик Arduino, который включает время ожидания 4 секунды при первом запуске. (Я мог бы научиться
перепрограммировать
1
Вы обязательно должны исправить загрузчик. 4 секунды ожидания - это 4 дополнительные секунды потребления батареи, от которых вы можете избавиться. Вместо того, чтобы ждать, сделайте, например, выборочный штифт, который снимается при развертывании.
Игорь Скочинский

Ответы:

14
  1. Дороже, как вы уже узнали. Но это должно обеспечить вам высочайший уровень надежности: поскольку сторожевой таймер полностью независим от микроконтроллера, он все равно будет продолжать работать и сбрасывать микроконтроллер, когда он, так сказать, горит. См 4)
  2. Брайан против, но в небольшом корпусе есть дешевые микроконтроллеры, такие как PIC10F200 в SOT-23, который вы можете использовать в качестве переключаемого MMV (моностабильного мультивибратора), которым на самом деле является сторожевой таймер. Если рассмотреть 555, лучше 10F200: нет внешних деталей и более точные временные характеристики (точность 1%).
  3. 555? Шутки в сторону?
  4. Внутренний сторожевой таймер сработает, если выделенная микросхема слишком дорога. Если вы действительно параноик, вы можете вспомнить сценарий, в котором какая-то аппаратная ошибка блокирует микроконтроллер и сторожевой таймер. Я никогда не знал, что это произойдет, но я не знаю, насколько хорошо вы спите.

Мне нравится pjc50говорит 6 секунд это долго. Типичный микроконтроллер выполнит десятки миллионов инструкций за это время, и тогда многое может пойти не так. Предположим, вы управляете некоторой нагрузкой с помощью ШИМ, а низкий рабочий цикл 10% поддерживает низкое рассеивание. Микроконтроллер выходит из строя и выходной сигнал застревает на высоком уровне, рабочий цикл 100%. Нагрузка не нравится, и умирает. Вы не хотите ждать 6 секунд, чтобы это произошло. Там должна быть какая-то часть вашего кода, где вы проходите гораздо чаще. Основной цикл может составлять всего 10 мс, тогда вы можете, например, установить тайм-аут сторожа на 100 мс. Если вы пинаете собаку один раз каждые 10 мс, то тайм-аут означает, что вы пропустили ее 10 раз! Один раз, хорошо, но десять раз это катастрофа, и вы должны принять меры. Нагрузка будет отключена через 100 мс вместо 6 секунд,

stevenvh
источник
2
@Nick - Приятно , что вам нравится, но на самом деле я так и тратить больше времени на написание остальную часть ответа :-).
Стивенвх
1
Что не так с 555 таймерами? :)
Джастин ᚅᚔᚈᚄᚒᚔ
3
@Justin - Есть люди, для которых 555 - это религия: вы можете решить все мировые проблемы, а некоторые - с помощью 555. Ну, 555 достаточно универсален, типичные приложения - моностабильные и нестабильные мультивибраторы, ШИМ, но это не самое лучшее для все. В этом вопросе / ответе OP потратили пару недель на разработку схемы 555 для задачи, для которой она не предназначена. Такую же работу можно запрограммировать в микроконтроллер за час. Я не подвергаю сомнению навыки OP здесь ни его подход, поскольку я понимаю, что он должен был использовать 555 ...
stevenvh
2
Каждый раз, когда кто-то использует слова типа «абсолютно», я чувствую необходимость найти контрпример. В этом случае: микроконтроллер более чувствителен к космическим лучам и излучению, чем 555, поэтому IMO в некоторых приложениях 555 будет предпочтительнее с точки зрения надежности.
Апалопохапа
2
@apalopohapa - я исправлен. В космическом корабле 555-е могут быть лучшим выбором, чем микроконтроллеры. Конечно, компьютеры, сделанные из 555-х годов (примерно) на 15 порядков менее точные , большие, более энергоемкие и не так легко программируемые на C ++ или Ada ... :-)
stevenvh
5
  1. Сторожевой таймер прост, работает, дешево. Грозный выбор.
  2. Дополнительный микроконтроллер лишний. Это не полезно, так как вы должны программировать, это дороже, больше места.
  3. Это имеет смысл. Но я бы сделал 1 вместо этого. Более современный.
  4. Я бы использовал это, если это работает. У них только вопрос в том, может ли он быть установлен на 6 секунд.
Брайан Карлтон
источник
Спасибо за сравнение. Но единственное, что # 1, кажется, не дешево! Как я уже упоминал, я не нашел ни одной интегральной микросхемы, поддерживающей сторожевой таймер, с количественной ценой менее доллара, тогда как, как вы, наверное, знаете, существует много микроконтроллеров (для варианта № 2), стоимость которых меньше 0,50 доллара США.
Boardbite
2

Если ваша схема / устройство не управляет критически важным для жизни оборудованием, вы, вероятно, можете избежать использования внутреннего сторожевого таймера. В противном случае (или на самом деле, в любом случае) посмотрите эти две замечательные статьи от Джека Гэнсле:

http://www.ganssle.com/watchdogs.htm

http://www.ganssle.com/articles/watchdogsredux.htm

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

Игорь Скочинский
источник