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

 
 
> Прерывания от WDT, Как правильно организовать?
Мур
сообщение Jun 18 2007, 15:21
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



У AT91SAM7 архитектурно предусмотрена возможность организации прерываний от WDT. По сути ,-дополнительный таймер с низкой опорной частотой на входе. (Следует ожидать меньшего потребления!)
Подскажите, корефаны, как эти прерывания организовать, ведь у WDT нет своего ID? Скорее всего это относится к SYS... SYS это ведь не только WDT!!!
В общем, хочу услышать, как их все разрулить? На одном висят векторе голубки. smile.gif
Может какие подводные камни? Спасибо заранее за ответ! tort.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Мур
сообщение Jun 19 2007, 12:44
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Очень неудобная штука,-один вектор для системных рессурсов!... Ваши впечатления, корефаны?
Как красиво использовать эту возможность WDT-прерывания? Кто пробовал?
...Я чего-то не понимаю?
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 19 2007, 13:59
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Мур @ Jun 18 2007, 18:21) *
У AT91SAM7 архитектурно предусмотрена возможность организации прерываний от WDT. По сути ,-дополнительный таймер с низкой опорной частотой на входе. (Следует ожидать меньшего потребления!)
Подскажите, корефаны, как эти прерывания организовать, ведь у WDT нет своего ID? Скорее всего это относится к SYS... SYS это ведь не только WDT!!!
В общем, хочу услышать, как их все разрулить? На одном висят векторе голубки. smile.gif
Может какие подводные камни? Спасибо заранее за ответ! tort.gif

Нужно просматривать статус регистры всех устройств на системном прерывании и обрабатывать все произошедшие.

// ------------------------------------------------------------------------------
// Обработчик системного прерывания (ID_SYS=1)
void SYSIRQ_Handler(void)
{
DWORD status;

status = *AT91C_PITC_PIVR;
if (status & AT91C_PITC_PICNT) // Если системное прерывание от PIT таймера
{
OSTimeTick();
}
status = *AT91C_WDTC_WDSR;
if (status & AT91C_WDTC_WDUNF) // Если системное прерывание по переаолнению WDT
{
//
}
AT91C_BASE_AIC->AIC_EOICR = 0; // Признак завершения обработчика
}
Go to the top of the page
 
+Quote Post

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

 


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


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