Обсуждаем контроллеры компании Atmel.
Ответить

Re: WatchDog Timer Сторожевой таймер в AVR

Ср ноя 26, 2014 11:38:27

PORTB ^= 0x01;
РВ.0 должен из 0 перейти в 0? "^" ведь отрицание (инверсия)?

Re: WatchDog Timer Сторожевой таймер в AVR

Ср ноя 26, 2014 12:00:21

Gudd-Head писал(а):РВ.0 должен из 0 перейти в 0?

Почему из 0 в 0? Из 0 в 1, из 1 в 0. Инверсия.

Re: WatchDog Timer Сторожевой таймер в AVR

Ср ноя 26, 2014 12:04:58

Ааа... Я СИ не на 100 % понимаю. Надо в железе пробовать :)

Re: WatchDog Timer Сторожевой таймер в AVR

Ср ноя 26, 2014 12:18:21

Да это я и сам понимаю :)) Железа пока нет, режем воздух :)

Re: WatchDog Timer Сторожевой таймер в AVR

Вс мар 08, 2015 15:21:44

Возникла проблема со сторожевым таймером. на mega328 Как только вместо
WDTCSR=0x1F;
WDTCSR=0x0F;
когда сторожевой таймер настроен на сброс МК бит WDRF регистра MCUSR не устанавливается. То есть я отправляю МК в сон он естественно перезагружается по сторожевому таймеру но регистр MCUSR =0 то есть нет ни одного флага показывающего причину перезагрузки.

Re: WatchDog Timer Сторожевой таймер в AVR

Ср июн 10, 2015 09:02:51

1

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 01:03:32

YS писал(а):Опять же, если 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)

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 10:16:56

и цена решения 3$ (на attiny13)


Это вы WDT внешний сделали на еще одном МК, что ли? :)))

Без WDT кстати что может быть?


Все, что угодно. В этом-то и проблема.

Допустим прилетела дурная заряженная частица и во всех регистрах и памяти образовался хаос.


Если говорить именно об эффектах от частиц, то это чаще всего сброс одного или нескольких битов, но никак не всей памяти. Ну и тиристорный эффект, конечно.

В микроконтроллере внешнего WDT простейшая программа, которая не может зависнуть


Так считать ошибочно. Например, та же самая частица попортит FLASH - и все, программа перестанет работать. Чем такой внешний WDT, лучше уж встроенный. Современные МК часто содержат прямо на кристалле совершенно независимый WDT, даже с отдельным генератором. Если уж применять внешние, так тогда уж ставить специально предназначенные для этого микросхемы.

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 15:50:20

если принимать в расчет "прилет частиц", то абсолютно надежного решения вообще не существует.

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 18:10:52

ARV писал(а):если принимать в расчет "прилет частиц", то абсолютно надежного решения вообще не существует.


Естественно у той частицы энергия может быть как у кувалды (0.999(9) скорости света), ни что не спасет, резервирование всего и то не факт. Ну и маленький размер кристалла ))

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 19:11:31

YS писал(а):
и цена решения 3$ (на attiny13)


Это вы WDT внешний сделали на еще одном МК, что ли? :)))


Да, основное устройство не конроллер, а программируемый логический контроллер, PC совместимый, у него отдельно процессор, отдельно память, отдельно флеш и сетевой интерфейс. Этот ПЛК имеет свой сторожевой таймер, но встроенный в процессор сторожевой таймер зависает, возможно переклинивает сетевой интерфейс на RTL xxxx какой-то и он блокирует шину или еще что-то аппаратное. ATtiny отслеживает этот момент и перезагружает всё.

Все, что угодно. В этом-то и проблема.


Всё что угодно не может быть. У ATtiny 64 байта памяти, 32 регистра и еще по мелочам, всё можно предусмотреть. Ни сбой памяти, ни регистров не может нарушить программу, нет там циклов в которых программа может застрять. Можно в отладчике прописать любые данные в регистры, зависания не будет.

Так считать ошибочно. Например, та же самая частица попортит FLASH - и все, программа перестанет работать.


Там того флеша 500 байт вся программа. Очень маловероятно. Если переживать за флеш, то объемы SDD на компах в 500 Гбайт и ничего не портится. Более вероятен тиристорный эффект тогда уже, без всяких заряженных частиц от помехи. При сертификации устройств их вроде как и проверяют ВЧ помехами от источника в 2кВ.

Чем такой внешний WDT, лучше уж встроенный. Современные МК часто содержат прямо на кристалле совершенно независимый WDT, даже с отдельным генератором. Если уж применять внешние, так тогда уж ставить


Нормальный вариант, и не дорого. Но именно в моем случае бы не подошло. DS1232 максимум позволяет 1.2 секунды ожидания, у меня минута, и раз в 24 часа обязательная перезагрузка на всякий случай, например, если сигнал о нормальной работе к WDT ложный. Такого не наблюдал ни разу, но на всякий случай указал 24 часа, может можно и больше.
Микроконтроллер что осуществляет функцию внешнего WDT использует встроенный WDT, там всё нормально, хоть и сложно для понимания, WDT второго уровня :)

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 22:22:37

у меня минута, и раз в 24 часа обязательная перезагрузка на всякий случай


Ну, я бы это уже не назвал сторожевым таймером... Скорее, блок контроля.

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

Re: WatchDog Timer Сторожевой таймер в AVR

Вс сен 27, 2015 23:34:34

YS писал(а):Насчет частиц это я чего-то правда переборщил, на земле такие сбои вряд ли возможны


Счетчик гейгера же показывает щелчками не что попало, а количество пробоев газа, на глазок такая же частица может сбросить бит в регистре.

Поискал материалы, много всего интересного, правда мне бесполезного )))

http://www.russianelectronics.ru/leader ... doc/46313/
Считается [1], что проблема сбоев вследствие попадания одиночных частиц в микросхемы стала широко обсуждаться после выхода статьи [5] в 1979 г., в которой описывались результаты исследования причины сбоев микросхем производства Intel Corporation. В статье доказывалось, что причиной наблюдаемых сбоев были альфа-частицы, которые испускали при распаде ядра урана, содержавшиеся в керамических корпусах. Керамику для их изготовления получали из старой урановой шахты.
....
....

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 00:28:59

Всем привет.
Возник вопрос касательно целостности данных в оперативке после перезапуска МК сторожевым таймером.
Мое устройство хранит данные собранные за продолжительный период времени в оперативке.
Вот и думаю, что с ними будет если ВачДог перезапустит проц.
Если я их потеряю, то мне их ни когда не вернуть и в таком случае лучше делать резервную копию в ЕЕПРОМ.
Но по сути ВачДог перезапустит только проц. Питание с оперативки не пропадет и данные должны сохранится.
Мне конечно же не сложно поставить эксперимент.
( Но проверять придется всю оперативку - каждую ячейку ! :shock: )
Хочется знать мнение спецов - можно-ли будет таким данным доверять? Не попадет ли в них ошибка? И на сколько надежна такая манипуляция?

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 13:04:40

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


Долго хранить важные логи в оперативке не стоит. Для этого есть EEPROM, или даже внешняя EEPROM.

Перезапуск МК сторожевым таймером - аварийный режим (за редким исключением). Если это случилось, значит что-то пошло не так, и верить уже ничему нельзя.

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

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 14:00:35

Спасибо! Но ЕЕПРОМ ведь не вечный - не могу я каждый раз в него данные писать.
Как минимум нужно один раз в сутки записать данные, а как максимум, то - каждый раз ( каждый час ).

Внешняя ЕЕПРОМ конечно же может выручить в этом вопросе. Но возможно я не смогу ее подключить - согласно тех заданию, или по нехватке ножек или из-за огромной программы, которая будет выжимать все ресурсы МК..

Знаю, что кто-то умудрялся пользоваться данными после рестарта сторожевым таймером. Но где и когда это было ... ( какое железо я не знаю )..
Последний раз редактировалось uwrtey Вс ноя 08, 2015 14:33:48, всего редактировалось 1 раз.

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 14:05:11

Кольцевой буфер, тогда надолго хватит. Люди столько не живут. :)

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 14:37:46

Понял, спасибо за совет! :beer:

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 14:39:06

Даже если писать в одну и ту же ячейку, на 11 лет хватит. Оптимистично, однако. Вы уверены, что устройство проработает столько времени?

Re: WatchDog Timer Сторожевой таймер в AVR

Вс ноя 08, 2015 20:50:33

Спасибо!
Ответить