roboforum.ru

Технический форум по робототехнике.

WDT Как понять сторожевого пса?

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

WDT Как понять сторожевого пса?

Сообщение wolly » 17 ноя 2007, 12:50

После запуска VMLAB во время опроса входов
Код: Выделить всёРазвернуть
if(!PINC.1 && PINC.2) {delay_ms(5); PORTB=step_mx[i]; i++;  if(i>7) i=0;}
Watchdog прерывает процедуру:
Код: Выделить всёРазвернуть
[PC = $02D8, Time =   14.25 ms, {WDT}]: Watchdog will produce a reset here. Use WDR instruction before this point

Точно также он "лает" после изменения состояния входов. Что за инструкцию он требует? Что ему может не нравится? :(
Последний раз редактировалось Digit 17 ноя 2007, 18:39, всего редактировалось 2 раз(а).
Причина: Поправил "WDG" на "WDT", т.к. это WatchDogTimer ;)
wolly
 
Сообщения: 43
Зарегистрирован: 06 ноя 2007, 22:16
Откуда: Кохтла-Ярве

Re: WDT Как понять сторожевого пса?

Сообщение avr123.nm.ru » 17 ноя 2007, 13:00

VMLAB слишком умный и дает советы. Не обращай внимания если не включал WDT и не используешь его. Жми светофор.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: WDT Как понять сторожевого пса?

Сообщение wolly » 17 ноя 2007, 23:00

Нет, не зря видимо собака лает..
У меня по взведенному биту прога должна заходить в цикл while(bit) внутри цикла while(1). Заходить, то она заходит, но пробежав его 1 раз улетает неизвестно куда. В while(bit) то уж точно не заходит, это видно по строкам в VMLAB.
В очень урезанном виде код выглядит так:
Код: Выделить всёРазвернуть

void step_x(void)
        {
         i++;
          if(i>7)        i=0;             //esli matrica step_ proidena vozvrat v na4alo matricy   
        PORTB=step_mx[i];       //zapis shaga v port PORTC elementa matricy step_mx
        }

void main(void)
{
init();

while (1)
      {
       if(st_x) step_x();                   //vyzov funkcii shagov po "X"
       if (!PINC.0)   on=1;
while (on)   
                 {
                    if(st_x) step_x();                     //vyzov funkcii shagov po "X"
                   if (!PINC.5)  on=0;
                  }
        }
}

Никак не понять, почему он на задерживается в цикле и почему ему заново в него не войти, ведь условие входа выставлено??????
avr123.nm.ru писал(а):...если не включал WDT и не используешь его.

В каких случаях и как используют инструкцию WDT???
wolly
 
Сообщения: 43
Зарегистрирован: 06 ноя 2007, 22:16
Откуда: Кохтла-Ярве

Re: WDT Как понять сторожевого пса?

Сообщение avr123.nm.ru » 17 ноя 2007, 23:08

WDT - используют для сброса сторожевого таймера, но по умолчанию он не активирован.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: WDT Как понять сторожевого пса?

Сообщение wolly » 19 ноя 2007, 14:01

А если WDT -собака лает во время опроса PIN-ов, и выставляет мне на этой строчке "!"
Это значит, что программа где то зависает на опросах?????
wolly
 
Сообщения: 43
Зарегистрирован: 06 ноя 2007, 22:16
Откуда: Кохтла-Ярве

Re: WDT Как понять сторожевого пса?

Сообщение Master » 19 ноя 2007, 15:06

Все что VMlab пишет про WDT послылаешь в далекое эротическое путешествие.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24