Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
Добавлено: Ср ноя 26, 2014 11:38:27
Друг Кота
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
PORTB ^= 0x01; РВ.0 должен из 0 перейти в 0? "^" ведь отрицание (инверсия)?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
Добавлено: Ср ноя 26, 2014 12:04:58
Друг Кота
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Ааа... Я СИ не на 100 % понимаю. Надо в железе пробовать
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Возникла проблема со сторожевым таймером. на mega328 Как только вместо WDTCSR=0x1F; WDTCSR=0x0F; когда сторожевой таймер настроен на сброс МК бит WDRF регистра MCUSR не устанавливается. То есть я отправляю МК в сон он естественно перезагружается по сторожевому таймеру но регистр MCUSR =0 то есть нет ни одного флага показывающего причину перезагрузки.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Опять же, если WDT обнуляется каждый раз в конце главного цикла, а в том же конечном автомате что-то пошло не так, но не привело к зависанию, WDT снова не поможет. Мораль - надо вводить затычки-циклы в места отлова ошибок, чтобы МК гарантированно зависал, и т.п. То есть, определенная работа мысли необходима.
Можно поставить внешний WDT, и каждые xxx часов перезагружать микроконтроллер. Или не перезагружать, но после веских доказательств что всё хорошо, например если он прочитает все регистры, память и решит что всё в норме.
Без WDT кстати что может быть? Допустим прилетела дурная заряженная частица и во всех регистрах и памяти образовался хаос. Процессор скорее всего перейдет в пустую часть флеша и перезагрузится, дойдя до адреса 0. Менее вероятно что произойдет зацикливание бесконечное, например вместо
Код:
a=1 (1 ms) Delay a
окажется
Код:
a=$FF FF FF FF (это влияние помехи) Delay a
и программа встрянет на 49 часов неожиданно, обычный WDT это прервет.
ну и конечно может застрять в цикле внутри которого WDT reset, можно перед тем как сделать reset проверить множество условий это всё в разы снизит вероятность зависания. Но круче всего внешний WDT. В микроконтроллере внешнего WDT простейшая программа, которая не может зависнуть или ПЛИС. Я такой делал, всетаки остановился на безусловной перезагрузке "большого" коммуникационного контроллера раз в 24 часа, и ежеминутный контроль СОМ портов, нет данных - перезагрузка. Причина зависания в моем случае нагрузка в большой локальной сети, на которую контроллер не расчитан, а с внешним WDT всё работает как часы и цена решения 3$ (на attiny13)
Это вы WDT внешний сделали на еще одном МК, что ли?
Цитата:
Без WDT кстати что может быть?
Все, что угодно. В этом-то и проблема.
Цитата:
Допустим прилетела дурная заряженная частица и во всех регистрах и памяти образовался хаос.
Если говорить именно об эффектах от частиц, то это чаще всего сброс одного или нескольких битов, но никак не всей памяти. Ну и тиристорный эффект, конечно.
Цитата:
В микроконтроллере внешнего WDT простейшая программа, которая не может зависнуть
Так считать ошибочно. Например, та же самая частица попортит FLASH - и все, программа перестанет работать. Чем такой внешний WDT, лучше уж встроенный. Современные МК часто содержат прямо на кристалле совершенно независимый WDT, даже с отдельным генератором. Если уж применять внешние, так тогда уж ставить специально предназначенные для этого микросхемы.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
если принимать в расчет "прилет частиц", то абсолютно надежного решения вообще не существует.
Естественно у той частицы энергия может быть как у кувалды (0.999(9) скорости света), ни что не спасет, резервирование всего и то не факт. Ну и маленький размер кристалла ))
Это вы WDT внешний сделали на еще одном МК, что ли?
Да, основное устройство не конроллер, а программируемый логический контроллер, PC совместимый, у него отдельно процессор, отдельно память, отдельно флеш и сетевой интерфейс. Этот ПЛК имеет свой сторожевой таймер, но встроенный в процессор сторожевой таймер зависает, возможно переклинивает сетевой интерфейс на RTL xxxx какой-то и он блокирует шину или еще что-то аппаратное. ATtiny отслеживает этот момент и перезагружает всё.
Цитата:
Все, что угодно. В этом-то и проблема.
Всё что угодно не может быть. У ATtiny 64 байта памяти, 32 регистра и еще по мелочам, всё можно предусмотреть. Ни сбой памяти, ни регистров не может нарушить программу, нет там циклов в которых программа может застрять. Можно в отладчике прописать любые данные в регистры, зависания не будет.
Цитата:
Так считать ошибочно. Например, та же самая частица попортит FLASH - и все, программа перестанет работать.
Там того флеша 500 байт вся программа. Очень маловероятно. Если переживать за флеш, то объемы SDD на компах в 500 Гбайт и ничего не портится. Более вероятен тиристорный эффект тогда уже, без всяких заряженных частиц от помехи. При сертификации устройств их вроде как и проверяют ВЧ помехами от источника в 2кВ.
Цитата:
Чем такой внешний WDT, лучше уж встроенный. Современные МК часто содержат прямо на кристалле совершенно независимый WDT, даже с отдельным генератором. Если уж применять внешние, так тогда уж ставить
Нормальный вариант, и не дорого. Но именно в моем случае бы не подошло. DS1232 максимум позволяет 1.2 секунды ожидания, у меня минута, и раз в 24 часа обязательная перезагрузка на всякий случай, например, если сигнал о нормальной работе к WDT ложный. Такого не наблюдал ни разу, но на всякий случай указал 24 часа, может можно и больше. Микроконтроллер что осуществляет функцию внешнего WDT использует встроенный WDT, там всё нормально, хоть и сложно для понимания, WDT второго уровня
у меня минута, и раз в 24 часа обязательная перезагрузка на всякий случай
Ну, я бы это уже не назвал сторожевым таймером... Скорее, блок контроля.
Насчет частиц это я чего-то правда переборщил, на земле такие сбои вряд ли возможны. Видимо, уже переклинивает - сейчас волею судеб проектирую девайс, который должен будет работать на низкоорбитальном спутнике, и вот там эти эффекты доставляют столько головной боли, что они мне уже везде мерещатся.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Считается [1], что проблема сбоев вследствие попадания одиночных частиц в микросхемы стала широко обсуждаться после выхода статьи [5] в 1979 г., в которой описывались результаты исследования причины сбоев микросхем производства Intel Corporation. В статье доказывалось, что причиной наблюдаемых сбоев были альфа-частицы, которые испускали при распаде ядра урана, содержавшиеся в керамических корпусах. Керамику для их изготовления получали из старой урановой шахты. .... ....
Всем привет. Возник вопрос касательно целостности данных в оперативке после перезапуска МК сторожевым таймером. Мое устройство хранит данные собранные за продолжительный период времени в оперативке. Вот и думаю, что с ними будет если ВачДог перезапустит проц. Если я их потеряю, то мне их ни когда не вернуть и в таком случае лучше делать резервную копию в ЕЕПРОМ. Но по сути ВачДог перезапустит только проц. Питание с оперативки не пропадет и данные должны сохранится. Мне конечно же не сложно поставить эксперимент. ( Но проверять придется всю оперативку - каждую ячейку ! ) Хочется знать мнение спецов - можно-ли будет таким данным доверять? Не попадет ли в них ошибка? И на сколько надежна такая манипуляция?
_________________ не зная броду не лезь к вольтмоду
Мое устройство хранит данные собранные за продолжительный период времени в оперативке.
Долго хранить важные логи в оперативке не стоит. Для этого есть EEPROM, или даже внешняя EEPROM.
Перезапуск МК сторожевым таймером - аварийный режим (за редким исключением). Если это случилось, значит что-то пошло не так, и верить уже ничему нельзя.
Если очень сильно хочется, данные можно защитить кодами FEC (и надеяться на то, что сбоя по питанию не будет), но я бы сказал, что это некоторое извращение. Я бы просто писал в EEPROM...
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Спасибо! Но ЕЕПРОМ ведь не вечный - не могу я каждый раз в него данные писать. Как минимум нужно один раз в сутки записать данные, а как максимум, то - каждый раз ( каждый час ).
Внешняя ЕЕПРОМ конечно же может выручить в этом вопросе. Но возможно я не смогу ее подключить - согласно тех заданию, или по нехватке ножек или из-за огромной программы, которая будет выжимать все ресурсы МК..
Знаю, что кто-то умудрялся пользоваться данными после рестарта сторожевым таймером. Но где и когда это было ... ( какое железо я не знаю )..
_________________ не зная броду не лезь к вольтмоду
Последний раз редактировалось uwrtey Вс ноя 08, 2015 14:33:48, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения