Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19714 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Итак, товарищи. Все темы непосредственно о стороже я собрал в одну и прилепил, благо они не пересекаются по времени.
Хотелось бы чтобы кто-нибудь поделился опытом использования САБЖа по "прямому" назначению, т.е. контроль за зависанием МК, а не вывод из спящего режима или ещё что, как то: — как часто пользуется; — на каком этапе написания кода / разработки алгоритма он продумывается; и т.д. и т.п.
Делаю приборчик с автоотключением питания и боюсь что если МК зависнет, то аккумы сядут в ноль
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
есть, т.к. зависает очень часто, скорее всего из-за помех от релюшек. да выключает, тогда почему работает? как его правильно тогда инициализировать? фьюз то я активировал как сказано в даташите. MCUSR WDTCR оба регистра надо выставлять или только последний?
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
аааа, если фьюз активирован, то программно счетчик уже не вырубить, вот поэтому то он и работает, правда предделитель на минимальном значении 16ms так как в WDTCR у битов предделителя должны быть все нули после WDTCR=0х00;. а сброс счетчика получается я правильно реализовал?
Я бы сказал что он обязательно нужен в устройствах, работающих непрерывно.
Зависит от критичности устройства. Если устройство неответственное (от него не зависят жизни) и стоит рядом с человеком, то проще в случае чего тыкнуть сброс/передернуть питание. Вообще, мне крайне редко встречались такие отказы.
Ну а если устройство стоит где-то на чердаке или в скважине, до него лезть два часа чтобы перезагрузить, оно работает круглосуточно и необслуживаемо, то там, конечно, стоит заморочиться на watchdog (может даже внешний).
В любом случае, простое включение watchdog'а и его тупое обнуление в цикле не принесет пользы. Всегда надо тщательно думать, как оптимальнее расположить команды сброса оного, чтобы таймер обеспечивал надежность, а не просто был включен. Это отдельная задача, и не всегда имеет смысл над ней думать, учитывая частоту таких отказов.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19714 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
YS писал(а):
В любом случае, простое включение watchdog'а и его тупое обнуление в цикле не принесет пользы.
Почему же... Вы, коллега, видимо не сталкивались с таким явлением, когда из десятка одновременно круглосуточно работающих одинаковых устройств примерно раз в неделю кто-то из них зависает. И отвисает обычным ресетом (не по питанию) МК.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Если функционал расположен (бывает такое, конечный автомат, например) в главной программе, а WDT циклически обнуляется в прерывании (есть любители такое делать), то как бы по факту все ни висело, WDT не поможет... Это самое первое, что приходит в голову.
Опять же, если WDT обнуляется каждый раз в конце главного цикла, а в том же конечном автомате что-то пошло не так, но не привело к зависанию, WDT снова не поможет. Мораль - надо вводить затычки-циклы в места отлова ошибок, чтобы МК гарантированно зависал, и т.п. То есть, определенная работа мысли необходима.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
ну право же, это крайность Согласен, что ресет собаки надо делать осмысленно. Использовать его ведь ничего не стоит. Почему ж не поставить, если это повышает стабильность работы устройства? Хотя бы теоретически. Приведу пример - электронные счетчики, электроэнергии, воды, газа... Что будет если он зависнет? Плохо будет А если рестартанет, то и фиг с ним. В Швеции ребята рассказывают, на группу счетчиков стоит большой "ресеттер" раз в сутки их перезапускающий, но это уже конечно крайность и криворукость в изготовлении. Второй момент это использование собаки в сложных системах из десятков-сотен модулей, порой сторонних. Ничего не стоит использовать эту штуку, а опять же, стабильность повышает. Если быть аккуратным с прерываниями и многопоточными системами. Одно дело писать кривой код, другое дело защитится от возможных помех и прочей ерунды. Жалко что-ли его включить
Я только "за". Просто я акцентирую внимание на том, что просто включение таймера - не панацея. Это лишь инструмент, сам по себе он ничего не улучшит, если не продумать архитектуру в соответствующем ключе. Факт очевидный, но важный.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Народ, подскажите пожалуйста. Устройство на tiny25 работает от батареек. Функционал маленький, поэтому основное время контроллер будет спать. А просыпаться бы хотелось от сторожевого таймера. Накрапал код:
Симулирую в proteus. Ничего с выводом PB0 не происходит. Перечитал несколько раз даташит, вроде все логично сделал. Может действительно я чего-то не догоняю или протеус не моделирует собаку?
Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
Добавлено: Ср ноя 26, 2014 11:07:51
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19714 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Там вроде где-то задаётся что будет от переполнения собаки — сброс или прерывание.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
И я о том же. Если верить табл. 8-2 на стр.45 даташита, то получается что при установленных битах WDE и WDIE собака работает и по переполнению вызывается прерывание. У меня эти биты установлены.
Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
Добавлено: Ср ноя 26, 2014 11:15:20
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19714 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
А помимо глобального, от самой собаки прерывание разрешено? А если не прерывание, а ресет?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения