Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Правильно ли я активизирую собаку для авр?

Непрочитано 25.06.2003, 20:27  
junior
Гость
 
Сообщений: n/a
По умолчанию Правильно ли я активизирую собаку для авр?

WDTCR=0x0f;
....
...
...
_WDR();


Реклама:
 
Непрочитано 26.06.2003, 00:08  
Andrey
Временная регистрация
 
Регистрация: 22.05.2003
Сообщений: 55
Сказал спасибо: 0
Сказали Спасибо 18 раз(а) в 18 сообщении(ях)
Andrey на пути к лучшему
По умолчанию

http://www.fulcrum.ru/cgi-bin/bbs/start.pl -спроси
Andrey вне форума  
Сказали "Спасибо" Andrey
warel (24.06.2019)
Непрочитано 31.03.2008, 02:09  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию

Я делаю это так:

void WDOG_Init()
{
WDTCR = (1 ‹‹ WDP1);
#asm("WDR");
WDTCR |= (1 ‹‹ WDE);
}

И потом в каком-то прерывании которое выполняется постоянно или в основном цикле пишу:

#asm("WDR");

естественно в начале проги в разделе инициализаций нужно прописать
WDOG_Init();

Установка битов WDTCR влияет на время реакции собаки на зависание. См. Datasheet.
alex28411 вне форума  
Сказали "Спасибо" alex28411
warel (24.06.2019)
Непрочитано 31.03.2008, 08:20  
urry1
Временная регистрация
 
Регистрация: 11.12.2007
Сообщений: 79
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
urry1 на пути к лучшему
По умолчанию

сбрасывать собаку в прерывании - это моветон, оно может не наступить. Вот обсуждение в тему
http://www.microchip.su/showthread.p...&highlight=wdt
urry1 вне форума  
Сказали "Спасибо" urry1
warel (24.06.2019)
Непрочитано 31.03.2008, 13:00  
Don_Ambrosio
Вид на жительство
 
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Don_Ambrosio на пути к лучшему
По умолчанию Re: Правильно ли я активизирую собаку для авр?

Сообщение от junior
WDTCR=0x0f;
....
...
...
_WDR();


Дык прошей прогу в твой девайс и убедись правильно или нет. Или в симуляторе прогони
__________________
Дон Амброзио благодарит алфавит за любезно предоставленные буквы
Блин!! Морковь в 2,5 раза подорожала!!!
Don_Ambrosio вне форума  
Сказали "Спасибо" Don_Ambrosio
warel (24.06.2019)
Непрочитано 02.04.2008, 02:53  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию

Если у меня прерывание по переполнению таймера управляет динамической индикацией, то поверьте, что это прерывание вызывается 200 раз в с. И оно наступает всегда. Иначе на сесисегментный индикатор ничего не будет выводиться. А если вы не используете прерывание, то бросать кость собаке можно и в основном бесконечном цикле, как я уже говорил. Смотря по какому алгоритму вы строите свою прогу.
alex28411 вне форума  
Сказали "Спасибо" alex28411
warel (24.06.2019)
Непрочитано 02.04.2008, 02:55  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию

А при таком алгоритме:


WDTCR=0x0f;
....
...
...
_WDR();


собака вообще никогда не проснется. Читайте Datasheet!
alex28411 вне форума  
Сказали "Спасибо" alex28411
warel (24.06.2019)
Непрочитано 02.04.2008, 12:39  
mike7815
Прописка
 
Регистрация: 16.03.2005
Сообщений: 244
Сказал спасибо: 78
Сказали Спасибо 85 раз(а) в 55 сообщении(ях)
mike7815 на пути к лучшему
По умолчанию

to Junior, если _WDR(), тоже, что и #asm("WDR") то упринципе пойдёть. Маленькое замечание. Собака нужна для защиты от сбоев это как говориться прописная истина. Но давайте посмотрим что убивает нормальную работу контроллера: 1.-остановка тактового генератора.
2.- запись в регист счетчика команд "неверного" адреса. 3.- сбой стековой памяти.и т.д. и т.п. список можно продолжать и продолжать. кстати ни кто не запрещает таймеру собаки остановиться от помехи. Короче говоря, чем дольше работаю с АВР тем больше убеждаюсь- сделана эта часть контроллера через это как его ну вы поняли. И вобще помехозащищенность у АВР никуда, хотя сам контроллер имет очень много преимуществ главные из которых цена и доступность. Теперь маленький простенький совет по использованию собаки: если вы сбрасываете собаку при выполнении прерывания считайте, что в 90% случаев при возникновении сбоя работы программы контроллер будет работать работать работать аки батарейки энейджайзер. Для того чтобы исключить такого рода ситуацию я делаю следующее: объявляю глобальную пременную, которую использую отдельно для флагов "нормальной работы программы" которые устанавливаю в разных местах программы- прерывания там всякие вычисления прочие, короче говоря во всех местах где надо проверить правильную работу и затем в укромном месте проверяю именно эту переменную, ее обнуляю и сбрасываю сабаку. Вот так вот- мааленький советик.
P.S. огромная радость объяла меня, когда узнал, что новые меги могут выполнять прерывание при переполнении собаки а не тупо все сбрасывать
mike7815 вне форума  
Сказали "Спасибо" mike7815
warel (24.06.2019)
Непрочитано 03.04.2008, 14:19  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию

Цитата:
to Junior, если _WDR(), тоже, что и #asm("WDR") то упринципе пойдёть.
Эта команда только сбрасывает сторожевой таймер. Но его еще нужно правильно запустить. Привожу цитату из книги:

"Для запуска сторожевого таймеранеобходимо в ходе программы выполнить команду WDR и затем установить в единичное состояние разряд WDE регистра WDTCR.
Для остановки сторожевого таймера необходимо установить в единичное состояние разряд WDTOE регистра WDTCR и одновременно повторно установить в единичное состояние разряд WDE, затем не позднее, чем через четыре такта после этого сбросить в нулевое состояние разряд WDE. Разряд WDTOE сбрасывается в нулевое состояние аппаратно через четыре такта после установка его в единичное состояние.
Программа, в которой предусмотрено использование сторожевого таймера, должна периодически с интервалом меньшим, чем период формирования запроса прерывания WDT Reset, с использованием команды WDR перезапускать сторожевой таймер. Если при появлении сбоя команда WDR своевременно не выполняется, происходит перезапуск микроконтроллера."

---------------------
Читайте книжки, господа!
alex28411 вне форума  
Сказали "Спасибо" alex28411
warel (24.06.2019)
Непрочитано 03.04.2008, 16:11  
mike7815
Прописка
 
Регистрация: 16.03.2005
Сообщений: 244
Сказал спасибо: 78
Сказали Спасибо 85 раз(а) в 55 сообщении(ях)
mike7815 на пути к лучшему
По умолчанию

инициализация зависит от типа контроллера так, что книжку в печку
mike7815 вне форума  
Сказали "Спасибо" mike7815
warel (24.06.2019)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сигнатура в АВР Tolstopuz Микроконтроллеры, АЦП, память и т.д 3 19.05.2009 22:20
Новый Баском АВР Kabron Микроконтроллеры, АЦП, память и т.д 42 15.02.2008 11:17
помогите с кодом для АВР. язык си. Curt_atmel-proger Микроконтроллеры, АЦП, память и т.д 13 23.08.2007 20:53
ключ для Микробейсик под АВР aleksandr-zh Proteus, KiCAD и другие ECAD 0 25.04.2007 21:48
массивы в АВР Limit Микроконтроллеры, АЦП, память и т.д 9 02.05.2006 13:55


Часовой пояс GMT +4, время: 17:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.