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

 
 
> Подскажите со сторожевым таймером, При сбросе от сторожевого таймера программа виснет
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
Ответов
StasAga
сообщение Sep 5 2007, 07:03
Сообщение #2





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



Замена строки WDTCSR |= 0x18; на WDTCSR |= 0x1F;

ни к чему не приводит. В регистр WDTCSR первый раз все равно записывается 0x18... Установка битов WDCE и WDE для изменения конфигурации сторожевого таймера... После в течение четырех тактов записывается новая конфигурация таймера, что делает следующая строка.
По крайней мере так написано в мануале на мегу2560.

Причем в прошлом своем топике я не точно выразился. Процессор не зависает, а переходит в "спящий" режим. И при первом выключении/включение питания проц не выходит из "сна". Выходит в нормальный режим только при повторном выключении/включении...

И это не смотря на то, что "спящий" режим вообще запрещен сбросом бита SE регистра SMCR в 0.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:57
Рейтинг@Mail.ru


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