Доброго всем вечера ! Опять вопрос по сторожевому таймеру. ОЖИЛ по сравнеию с прошлым вопросм в этой ветке чата. Но я запрограммировал время сброса 2 секунды (что соответствует |(1<<WDP2)|(1<<WDP1)|(1<<WDP0) ) а на работе на осциллографе посмотрел там стоит 15 мс, что соответствует НУЛЯМ на этих трех битах. Но уже сбрасывает. Вопрос. Почему он не через 2 секунды сбрасывает ?
CODE:#include <util/delay.h>
#include <avr/stdint.h>
#include <avr/wdt.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
void main(void)
{
DDRB=0xff;
DDRA=0xff;
DDRC=0xff;
DDRD=0xff;
PORTA=0xff;
PORTB=0xff;
PORTC=0xff;
PORTD=0xff;
_delay_us(1);
MCUCSR= (1<<WDRF);// разрешаю сброс от WDT
WDTCR=(1<<WDCE)|(1<<WDE);// разрешаю строжевой
WDTCR=(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);// разрешаю сторожнвой и 2 sec время сброса
while(1)
{
PORTA=0x0;
PORTB=0x0;
PORTC=0x0;
PORTD=0x0;
_delay_ms(100);
}
}
PS: фьюз биты WDTON и S8535 выставлены(Отредактировано автором: 26 Апреля, 2010 - 19:06:10) |