Вопрос по Watchdog

Kruppa
Offline
Зарегистрирован: 18.12.2015

Добрый вечер!

Прошу подсказать, что-то никак не могу разобраться в сторожевом таймере на атмега8.

Вроде как прерывания срабатывают, но как только включаю тестовый таймер - всё бесполезно...

Вот код

 

#define F_CPU 8000000UL //8MHz
#include <avr/io.h>
#include <avr/wdt.h>


void detected();
void pult();
void edem();
void vniz(int x);
void vverh(int x);

int etazh=1;

int main(void)
{
//wdt_enable(WDTO_30MS); //-альтернативный вариант включения...
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = (1<<WDE) | (1<<WDP2) | (1<<WDP1)|(1<<WDP0) |(0<<WDCE);
 
 
 DDRB=0xFF;  //Порт B на вывод
 DDRC=0x00; //Порт С на ввод
 DDRD=0x00; //Порт D на ввод 

    while (1) 
    {
  //--------------------ТЕСТОВОЕ ЗАВИСАНИЕ----------------------
  if((PINC&(1<<1))!=0)
  {
   while(1){}
  }
  //------------------------------------------------------------
       

// detected();  //определение позиции на этажах
 
 
 //pult();  // Определение нажатой кнопки
 asm("wdr");

 //wdt_reset(); - как альтернатива
 
 }
   
    
     
   

  }

 

Kruppa
Offline
Зарегистрирован: 18.12.2015

* "тестовое зависание", простите за ошибку

Kruppa
Offline
Зарегистрирован: 18.12.2015

Блин, сам нашел причину.

Надо было в цикле включать заново WatchDog.

Всем спасибо за ответы!