Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Надежный и дешевый watchdog таймер на 30 сек
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
turnon
Подскажите пожалуйста, на чем можно сделать таймер для реализации аппаратного вочдога.
Суть работы таймера - выдавать на МК сигнал ресета (прижимать ногу ресета), если с МК в течении 30 сек не поступил сигнал сброса таймера.

Готовые типа STM6822 не устравивают по причине малого времени, в течении которого таймер должен быть сброшен (1.6 сек), надо минимум 30 сек.

А на 555 все что видел требует электролита немаленького. Как вариант - поставить tinyAVR, но существенный недостаток - его прошивать нужно, и (включив паранойю) - он тоже МК, потенциально тоже может зависнуть.
Сергей Борщ
Когда-то делали на рассыпухе примерно так:
Нажмите для просмотра прикрепленного файла
С2, R2 определяют длительность импульса сброса, С2, R3 - максимальный период "встряхивания".
iosifk
Цитата(turnon @ Aug 30 2015, 13:25) *
Подскажите пожалуйста, на чем можно сделать таймер для реализации аппаратного вочдога.

У Рамтрона кажется есть такие. "Компаньон процессора" называется...
Defin
Есть же полно микросхем - аппаратных ватчдогов, у которых время сброса задаётся внешним конденсатором.
Например, http://www.ti.com/product/tps3813j25 - первое, что выдал гугл.
_pv
Цитата(Сергей Борщ @ Aug 30 2015, 18:30) *
Когда-то делали на рассыпухе примерно так:

мелкий МК PIC10F200/attiny4/msp430g2210 в sot23-6 или soic8 корпусе будет меньше и возможно даже дешевле sm.gif
единственная печаль - дополнительно прошивать надо.
turnon
Цитата(Сергей Борщ @ Aug 30 2015, 14:30) *
С2, R2 определяют длительность импульса сброса, С2, R3 - максимальный период "встряхивания".

Спасибо, вариант. При 10 uF * 1 МОм выйдет ~10 сек. А 1 МОм не много для надежной работы? (исключить ложные срабатывания от помех).

Цитата(_pv @ Aug 30 2015, 14:47) *
мелкий МК PIC10F200/attiny4/msp430g2210 в sot23-6 или soic8 корпусе будет меньше и возможно даже дешевле sm.gif
единственная печаль - дополнительно прошивать надо.

Да. А еще (включив паранойю) он сам в свою очередь может зависнуть. Потому схема без тактирования вроде как надежнее.
_pv
Цитата(turnon @ Aug 30 2015, 22:09) *
Да. А еще (включив паранойю) он сам в свою очередь может зависнуть. Потому схема без тактирования вроде как надежнее.

на этот случай у выше перечисленных контроллеров свой встроенный watchdog есть.
Ruslan1
Я в свое время тоже RC генератор на 561ЛН2 применял.

Но лучше бы поменять условия так, чтобы уменьшить период до нескольких секунд. При производстве замучаетесь проверять работоспособность такой длинной собаки (это увеличение время тестирования увеличивает конечную стоимость продукта).
turnon
Цитата(Ruslan1 @ Aug 31 2015, 08:37) *
Но лучше бы поменять условия так, чтобы уменьшить период до нескольких секунд. При производстве замучаетесь проверять работоспособность такой длинной собаки (это увеличение время тестирования увеличивает конечную стоимость продукта).

Собаку хотелось бы дергать программно, а не каким-нибуль таймером. А в программе есть ситуации пауз секунд на 10, например при автообновлени и заливке новой прошивки, или при старте FreeRTOS пока задача дергающая вочдог не создана.
turnon
Цитата(Plain @ Aug 31 2015, 22:29) *

Бомба. TPL5110 то что надо, время до 7200(!) сек, без конденсаторов. Дороговатый правда, на пике выйдет раза в три дешевле.
esaulenka
Цитата(turnon @ Aug 31 2015, 16:50) *
Собаку хотелось бы дергать программно, а не каким-нибуль таймером. А в программе есть ситуации пауз секунд на 10, например при автообновлени и заливке новой прошивки, или при старте FreeRTOS пока задача дергающая вочдог не создана.


Для автообновления (и прочих спецрежимов) я делал специальные костыли - отдельно дёргал ватчдог.
И freertos обычно стартует несколько :-) быстрее.
Ватчдог, правда, был бесплатный - внутренний.

Это я к тому, что условие задачи выглядит слегка надуманным.
turnon
Цитата(esaulenka @ Sep 2 2015, 16:21) *
Ватчдог, правда, был бесплатный - внутренний.
Это я к тому, что условие задачи выглядит слегка надуманным.

Часто вижу высказываания, что в ответсвенные изделия ставят внешний. Придерживаюсь такого же мнения. Не хочется делать безответственные девайсы.
ViKo
При обновлении программы сторожевой таймер не нужен в принципе.
Сергей Борщ
Видимо у меня принципы другие - мне нужен. Правда на куда меньшее время, порядка секунды.
ViKo
Цитата(Сергей Борщ @ Sep 3 2015, 09:52) *
Видимо у меня принципы другие - мне нужен. Правда на куда меньшее время, порядка секунды.

А что он контролирует?
А если произойдет сбой, обновление начнется сначала само, как ни в чем не бывало? Я с компьютера вручную пересылку прошивки запускаю. И старт обновления в приборе тоже вручную даю.
Сергей Борщ
Цитата(ViKo @ Sep 3 2015, 10:49) *
А что он контролирует?
Сбой связи.
Цитата(ViKo @ Sep 3 2015, 10:49) *
А если произойдет сбой, обновление начнется сначала само, как ни в чем не бывало?
Да.
Цитата(ViKo @ Sep 3 2015, 10:49) *
И старт обновления в приборе тоже вручную даю.
А я - нет. Мне не нужно лезть в прибор, чтобы запустить обновление. Достаточно запустить программу обновления на компе.
ViKo
Цитата(Сергей Борщ @ Sep 3 2015, 14:14) *
Мне не нужно лезть в прибор, чтобы запустить обновление. Достаточно запустить программу обновления на компе.

То есть, при подключенном к компу приборе запускаете программу обновления, о процесс пошел. Если произошел сбой связи или программирования флэш-памяти, прибор перезапускается, "вспоминает", что должен обновляться, посылает в комп сигнал, и программа перезапускает обновление? Или программа не дожидается подтверждения завершения, и сама перезапускается обновлять по-новой?

На обрыв связи обычного программного таймаута не хватит?
Сергей Борщ
Цитата(ViKo @ Sep 3 2015, 14:43) *
Или программа не дожидается подтверждения завершения, и сама перезапускается обновлять по-новой?
Не дождавшись подтверждения программа завершается с сообщением об ошибке. Человек может запустить ее снова.
Цитата(ViKo @ Sep 3 2015, 14:43) *
На обрыв связи обычного программного таймаута не хватит?
Хватит. Но собакой значительно проще.
esaulenka
Цитата(turnon @ Sep 3 2015, 08:26) *
Часто вижу высказываания, что в ответсвенные изделия ставят внешний. Придерживаюсь такого же мнения. Не хочется делать безответственные девайсы.

Практика показывает, что безответственными девайсы получаются сами собой.
Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

Цитата(ViKo @ Sep 3 2015, 09:06) *
При обновлении программы сторожевой таймер не нужен в принципе.

Спасибо за ценные сведения. Но на практике проще сбрасывать единократно запущенный ватчдог постоянно, чем его включать-выключать.
Это если выключение ватчдога вообще предусмотрено.
ViKo
Цитата(esaulenka @ Sep 4 2015, 08:45) *
Практика показывает, что безответственными девайсы получаются сами собой.
Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

Вот именно. Некоторые умельцы считают, что если они дергают сторожевой таймер везде, куда только фантазия ни заведет (например, в прерываниях), то их программа станет супернадежной. Таймером нужно пользоваться очень аккуратно, чтобы гарантировать, что основной цикл или планировщик задач выполняется.
ViKo
Цитата(esaulenka @ Sep 4 2015, 08:45) *
Но на практике проще сбрасывать единократно запущенный ватчдог постоянно, чем его включать-выключать.
Это если выключение ватчдога вообще предусмотрено.

Вот и включите его в основной программе, а не в загрузчике. Я бы делал так. Сейчас вообще отказался от него, закомментировал инициализацию. Потому что попробовал всунуть его сброс в idle задачу в RTX RTOS, но что-то не получилось, не помню... забил.
turnon
Цитата(esaulenka @ Sep 4 2015, 08:45) *
Практика показывает, что безответственными девайсы получаются сами собой.
Например, если недостаточно хорошо продумать условия сброса ватчдога, половина freertos'а виснет, в живых остаётся только "малозначимые" задачи, одна из которых продолжает дёргать ватчдог.

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

Цитата(ViKo @ Sep 4 2015, 10:32) *
Вот именно. Некоторые умельцы считают, что если они дергают сторожевой таймер везде, куда только фантазия ни заведет (например, в прерываниях), то их программа станет супернадежной. Таймером нужно пользоваться очень аккуратно, чтобы гарантировать, что основной цикл или планировщик задач выполняется.

Согласен. Дергать собаку в аппаратном таймере крайне ненадежно. С большей вероятностью зависнет программа, а таймер продолжит тикать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.