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

 
 
> Подскажите со сторожевым таймером, При сбросе от сторожевого таймера программа виснет
StasAga
сообщение Sep 4 2007, 08:11
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 19-04-07
Пользователь №: 27 165



Использую процессор ATmega2560. Инсталяция сторожевого таймера написана в соответствии с мануалом:

void instal_wdt(void)
{
asm("cli"); //запрет прерываний
asm("wdr"); //сброс сторожевого таймера

MCUSR &= ~0x80; //Clear WDRF
WDTCSR |= 0x18; //Write logical one to WDCE and WDE
WDTCSR = 0x0F; //WDE=1; WDCE=0; 2c

asm("sei"); //разрешение прерываний
return;
}

Для проверки из программы стираю сброс сторожевого таймера. При переполнении сброса не происходит, а программа просто зависает...

Подскажите пожалуйста, в чем может быть проблема? (или может я что-то упустил из виду)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Igor26
сообщение Sep 4 2007, 08:20
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(StasAga @ Sep 4 2007, 12:11) *
Использую процессор ATmega2560. Инсталяция сторожевого таймера написана в соответствии с мануалом:

void instal_wdt(void)
{
asm("cli"); //запрет прерываний
asm("wdr"); //сброс сторожевого таймера

MCUSR &= ~0x80; //Clear WDRF
WDTCSR |= 0x18; //Write logical one to WDCE and WDE
WDTCSR = 0x0F; //WDE=1; WDCE=0; 2c

asm("sei"); //разрешение прерываний
return;
}

Для проверки из программы стираю сброс сторожевого таймера. При переполнении сброса не происходит, а программа просто зависает...

Подскажите пожалуйста, в чем может быть проблема? (или может я что-то упустил из виду)

Замените строку WDTCSR |= 0x18; на WDTCSR |= 0x1F;
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 18:36
Рейтинг@Mail.ru


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