реклама на сайте
подробности

 
 
> Сторожевой таймер!..., быть ему ...или не быть?
MakFatum
сообщение Apr 18 2006, 09:16
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



Здравствуйте!
Два вопроса по сторожевому таймеру:

1. Обязательным (или желательным) требованием при написании программы является включение этого таймера?..
и чем руководствоваться при расставлении #asm("wdr") в программе?
расставлять так часто чтобы обнуление WDT происходило через промежутки времени ГАРАНТИРОВАНО меньшие чем время переполнения таймера WDT???
...или, если я пользуюсь VMlab он советует, куда поставить команду сброса обращать внимание на его инструкции??
2.
Мне непонятен код, который генерирует CVAVR при включении в визарде сторожевого таймера
что он означает? (строки с #)
Код
#pragma optsize-
WDTCR=0x1D;
WDTCR=0x0D;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


Спасибо...

Сообщение отредактировал MakFatum - Apr 18 2006, 09:17
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
era
сообщение Apr 18 2006, 19:21
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 16-12-05
Пользователь №: 12 321



Это выдержка скопирована из FAQ от fido7.ru.embedded, ИМХО так и надо.

Вопрос: Как выбрать момент сброса WDT?
Ответ: Обычно WDT требуют периода обращения к ним в течение 0,03-3 с. Причём внешние WDT имеют период более одной секунды. Встроенные в МК WDT могут настраиваться на различные периоды при помощи внутренних регистров контроллера. В общем случае, период сброса WDT должен всегда быть меньше его таймаута на генерацию сигнала "Сброс".
Программа обычно состоит из процедур обработки прерываний и фоновой программы. Сбрасывать WDT в процедуре прерывания крайне не рекомендуется, поскольку вполне может случиться так, что основная программа по каким-то причинам перестала выполняться, а процедура прерывания (например, от внутреннего таймера) продолжает работать. Сброс WDT в процедуре прерывания можно сделать лишь в том случае, если время выполнения этой процедуры может превысить таймаут самого WDT. В этом случае перед сбросом WDT неплохо проверить флаги, контролирующие работу фоновой программы. Например, можно ввести счётчик, который будет уменьшаться в прерывании, и при достижении значения "0" WDT перестанет сбрасываться. Основная программа будет устанавливать этот счётчик как признак её работы. Но такая ситуация скорее исключение, чем правило.
Обычно WDT сбрасывается в самом внешнем цикле программы (например, функция main(), если программа написана на языке Си). При необходимости перед сбросом WDT выполняется ряд контрольных проверок.
Во многих системах в том или ином виде используется отсчёт реального времени. Для этой цели обычно используется один из внутренних таймеров МК, переполнение которого вызывает прерывание. Для контроля работоспособности таймера реального времени в основной программе перед сбросом WDT выполняется проверка флага, установленного в прерывании от таймера:
disable_interrupt();
if (timer_int_flag) {
timer_int_flag = 0;
reset_wdt();
}
enable_interrupt();
Если в системе используются другие циклические прерывания, то в проверку перед сбросом WDT можно внести и их флаги.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MakFatum   Сторожевой таймер!...   Apr 18 2006, 09:16
- - ALexx   Желательно, конечно, защититься от зависаний, кото...   Apr 18 2006, 10:03
- - WHALE   wdr лучше всего ставить в коде,вызываемом в цикле,...   Apr 18 2006, 12:56
|- - BVU   Цитата(WHALE @ Apr 18 2006, 16:56) wdr лу...   Apr 18 2006, 14:13
- - Proton   В серийных устройствах надёжнее всего ставить внеш...   Apr 19 2006, 03:35
|- - defunct   Цитата(Proton @ Apr 19 2006, 06:35) В сер...   Apr 20 2006, 14:43
- - Kovrov   А что такое внешний WDT? если рассуждать лог-ки, ...   Apr 19 2006, 06:02
|- - iosifk   Цитата(Kovrov @ Apr 19 2006, 10:02) А что...   Apr 19 2006, 06:30
|- - BVU   Цитата(Kovrov @ Apr 19 2006, 10:02) А что...   Apr 19 2006, 06:37
|- - Igor26   Цитата(Kovrov @ Apr 19 2006, 10:02) А что...   Apr 19 2006, 06:44
- - Rst7   Да вообщем, в приложениях, которые требуют хорошей...   Apr 19 2006, 07:32
|- - plan   Цитата(Rst7 @ Apr 19 2006, 11:32) Да вооб...   Apr 19 2006, 10:11
|- - SasaVitebsk   Цитата(plan @ Apr 19 2006, 14:11) Цитата(...   Apr 22 2006, 20:38
||- - plan   Цитата(SasaVitebsk @ Apr 22 2006, 23:38) ...   Apr 25 2006, 05:15
||- - SasaVitebsk   Цитата(plan @ Apr 25 2006, 08:15) Полност...   Apr 25 2006, 18:49
|- - tag   Цитата(plan @ Apr 19 2006, 13:11) Цитата(...   May 3 2006, 14:43
|- - rezident   Цитата(tag @ May 3 2006, 20:43) А что мож...   May 3 2006, 15:43
- - _artem_   Кстати при тестировании этот таймер может вам боль...   Apr 20 2006, 12:12
- - vet   defunct И всё же... Бывают случаи - завис AVR, вкл...   Apr 20 2006, 14:59
|- - defunct   Цитата(vet @ Apr 20 2006, 17:59) defunct ...   Apr 20 2006, 15:09
- - Kovrov   кстати если есть разница в поведении программы как...   Apr 20 2006, 15:49
- - vaivai   Я имею дело с сигнализациями (DSC,Spectra) - очень...   Apr 22 2006, 18:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016