Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Watchdog
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Timofey
Добрый день.
Вобщем такая проблема. конфигурирую Watchdog Timer. В основной программе искуственно вызываю зависание (ухожу в бесконечный цикл, но срабатывания не происходит. Что не так?

Код
//Собественно сама функция конфигурирования
void CnfWDT (void) {
  AT91C_BASE_WDTC->WDTC_WDMR=((unsigned int) 0x00A <<  0) |
                             ((unsigned int) 0x1 << 13)   |
                             ((unsigned int) 0x0 << 12)   |
                              ((unsigned int) (0x0 << 14) |
                             ((unsigned int) 0x00A << 16) |
                             ((unsigned int) 0x0 << 15);

  
}



main
{

CnfWDT();
//плюс тут же конфигурирую другое оборудование

while (1)
{

//тут у меня выполняется программа, которая адекватно работает, связь с компом идет, все нормально
//И в её середине я делаю искуственное зависание. По пришествии события с компа ухожу в бесконечный цикл
   while (1){здесь я просто сделал что переменная равна сама себе и больше ничвго нету};
//Но вот именно тут контроллер виснет наглухо, пока питанием не моргнешь

//и где то в конце ставлю строку
AT91C_BASE_WDTC->WDTC_WDCR=((unsigned int) 0x1 <<  0) | ((unsigned int) 0xA5 << 24);
}

}

Бесконечный цикл в мэйне выполняется за 100 мксек (примерно), вобщем когда происходит событие и я ухожу в еще один бесконечный цикл, где я не сбрасываю таймер, то у меня контроллер зависает ... Почему? Правильно ли сконфигурировано? Или мне нужно организовывать прерывание и смотреть там, что достиг конца таймера? то бишь нуля ....
Timofey
Все .... разобрался ... скачала еррату за 13 ноября
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.