WatchDog Timer

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

WatchDog Timer

Сообщение щербатый (щербатый) » 27 мар 2013, 06:48

Приветствую друзья. Должен сказать большое спасибо людям создавшим и поддерживающим данный форум. Благодаря нему я освоил эту микропроцессорную технику и успешно использую ее под свои задачи. Счет на работающие устройства уже перевалил за сотню. Но вот возникла проблема.
В некоторых случаях микропроцессор зависает. Причин может быть к тому много. Помехи по питанию. Электромагнитные излучения, разряды и тд и тп. А решение наиболее простое в конце концов одно - перезагрузка. Наиболее удобно это сделать с помощью WatchDog Timer. Так как наибольшее число моих поделок было сделано на тини 2313. То рассмотрю пока ее.
Понятное дело что можно выставить программатором фьюз биты для срабатывания WatchDog Timer. В том числе можно их выставить таким образом что сброс процессора будет происходить при зависании через определенное. Строго заданное время. Скажем 0,5 секунды. Для каких либо задач это очень много. Для моих задач - оптимально.
Но есть вопрос который мне неясен. Микропроцессор сбрасывается сам по себе в случае зависания. Либо можно, или нужно писать подпрограмму (и скорее всего на СИ) которая будет сбрасывать процессор? Просмотрев форум поиском по запросу WatchDog Timer не нашел ответов на интересующие меня вопросы.
Так же интересен опыт коллег по этому вопросу. Какие еще есть методы и приемы повышения помехоустойчивости работы микропроцессора?

ПС. RC цепочка по сбросу и диод стоят. Все строго - как в дате.
Ник: щербатый
Имя: щербатый
Гуру
Гуру
Информация о пользователе

Re: WatchDog Timer

Сообщение mim (mim) » 27 мар 2013, 07:18

WDT

******Исправлено***********
(Admin)
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: WatchDog Timer

Сообщение щербатый (щербатый) » 27 мар 2013, 07:23

Слона то я и не заметил. МИМ спасибо за ссылку, прорабатываю.
Ник: щербатый
Имя: щербатый
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение щербатый (щербатый) » 29 мар 2013, 09:46

Приветствую друзья. Внимательно проработал ссылки любезно представленные МИМ. Громадное спасибо. Докладываю о проделанной работе. Все получилось, все работает отлично. Наибольшую пользу принесли примеры представленные Масимом и МИМ которые с удовольствием приложу. Для тех кто захочет найти это в одном месте по поиску WatchDog Timer.
1). Правильно ли я понял смысл рекомендаций ставить СИ вставку очистить ДОГА после каждой Delay?
2). Если Delay больше 2-х секунд. То по совету МИМ их нужно разбивать на несколько частей, но так что бы сумма была не более 2-х секунд. Тогда можно поставить только одну вставку СИ для очистки этих двух последовательно расположенных Delay.
3). Иначе говоря, как я понял. Ставить вставку СИ очистить WatchDog Timer нужно независимо от того какая длительность задержки Delay. Хоть одна микросекунда, хоть одна секунда. После каждой Delay нужно очищать.
4). Я так понимаю что больше нигде ставить подобную вставку на СИ очистить дога не нужно.
5). Вопрос, а нет ли исключений?
Ну и само собой как я проводил тест работоспособности WatchDog Timer. Был сделан макет. В него залита рабочая программа с обьекта. Во всех возможных режимах испытания делал так.
Взял электрошокер (китайский). Поднял ему питание с 9 до 12 вольт. Он так живее шевелится. Треск от разрядов конкретный. :D, и запах тоже. И производил разряд в непосредственной близости от макетки. Было явно видно по мигающему светодиоду (так специально была сделана вставка в начале программы). Как процессор зависал, и сразу стартовал. Испытания проводил так же и другим способом. Слегка послюнявил палец (извиняюсь за такие подробности, но так лучше тест проходит). И прикасался пальцем к выводам кварца. Было явно видно по светодиоду как программа останавливалась, и по убиранию пальца снова стартовала. Результаты экспериментов меня полностью устроили. Это то что надо.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: щербатый
Имя: щербатый
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение mim (mim) » 29 мар 2013, 10:33

щербатый писал(а):1). Правильно ли я понял смысл рекомендаций ставить СИ вставку очистить ДОГА ?

Команда wdt_reset() ставится каждый раз когда есть вероятность превышения установленного в опциях периода работы wdt.
Команда wdt_reset() расставляется по участкам или циклам программы так, чтобы временное расстояние между ними не превышало периода работы wdt.
Цель - не допустить срабатывания wdt - таймера при нормальной работе МК. wdt - таймер должен сработать только при зависании МК, в этом случае программа не дойдет до wdt_reset() и wdt не обнулиться - wdt перезагрузит МК.

ЗЫ в файле AVR_CAL_Delay.c есть специальные функции (подпрограммы, макросы...), которые работают с wdt_reset(). Например, Wdt_Delay_S(char delay). Смотри их устройство.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Don7272 (Олег) » 23 июн 2013, 23:45

Проверьте пожалуйста правильно ли я вставил WD и весь алгоритм программы.Думаю или догадываюсь, что что-то всё громоздко.Почему при компиляции вылазят какие-то кракозябры?
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Don7272
Имя: Олег
(Владивосток)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение mim (mim) » 24 июн 2013, 16:36

Олег писал(а):1. Правильно ли я вставил WD?
2. Проверьте пожалуйста... весь алгоритм программы.
3. Думаю или догадываюсь, что что-то всё громоздко.
4. Почему при компиляции вылазят какие-то кракозябры?

1. Ты прочел что на старом и новом форуме написано про WDT? После прочтения сам сможешь ответить...
2. Каким образом?
3. Ты уж определись - или думать, или догадываться... Вот и я смотрю на программу и догадываюсь - какой же алгоритм работы? "Проверьте..." говорит мой мозг (вместо меня) что же он там нафигачил этот мозг...
4. Покажи какие? У меня все нормально компилирует.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 27 янв 2014, 18:54

Как правильно выбирать время таймера вочдога,в документации указанно что вроде бы можно до 8 секунд выставить.Я что то понять не могу,тяжко с английским,да и переводчики не особо помогают.Хотя в железе отрабатывается защита и можно в конце концов отдать вот так вот,но хотя бы грамотно хотелось бы настроить этот вочдог.Версия Flowcode V4 for AVRs.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение mim (mim) » 27 янв 2014, 20:37

Ты читал на форуме wdt??? Протеус? :headbang:
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 27 янв 2014, 20:54

Да читал про WDT.Нашел примеры,но в основном про пики.Нашел на меге 8 и 32.стал сравнивать по своему даташиту.А протеус при чем?Или файл протеуса тоже скинуть?Извиняюсь если опять что то не так сделал.Я с этим вочдогом несколько дней мучаюсь. :(

В примере на атмеге 32 .было так
Код: выделить все
//WDTCR &=0xF8; // не обязательно
WDTCR |= 0x07;// установили период 2,2 сек ДАТА табл 17.
WDTCR |= (1<<WDTOE) | (1<<WDE); // включили


То есть в моем случае надо так:
Код: выделить все
//WDTCR &=0xF8; // не обязательно
WDTCR |= 0x05;// установили период 0.5 сек ДАТАШИТ табл 8-2.
WDTCR |= (1<<WDCE) | (1<<WDE); // включили



?????Так?Правда так не компилится.

Мне не понятна строчка //WDTCR &=0xF8; // не обязательно
И WDTCR |= (1<<WDCE) | (1<<WDE);
получается мы WDCE WDE включили?за что они отвечают? 1 в WDCE запрещает WDT , 1 в WDE разрешает ?

Или в атини13 биты WDTIE,WDE

Код: выделить все
//WDTCR &=0xF8; // не обязательно
WDTCR |= 0x05;// установили период 0.5 сек ДАТАШИТ табл 8-2.
WDTCR |= (1<<WDTIE) | (1<<WDE); // включили


В общем я запутался.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

След.

Вернуться в ПЕСОЧНИЦА

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей