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

 
 
> Работа с прерываниями в at91sam7s, не вызывается повторное прерывание
Bulat
сообщение Jul 7 2009, 03:57
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



Конфигурация прерываний происходит следующим образом:
Код
void RT()
{
AT91F_AIC_ConfigureIt( AT91C_BASE_AIC, AT91C_ID_PIOA, 0x06, AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, irq_RT);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW2_MASK);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW3_MASK); //Маска прерываний на PA23, PA24
//* set the interrupt by software
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_PIOA);
  while(1); //Ожидание прерывания
}


Обработчик прерываний:
Код
__ramfunc void irq_RT()
{  
  //Определение источника прерывания и запрет прерываний
  int i_status = AT91F_PIO_GetInterruptStatus(AT91C_BASE_PIOA);
  if(i_status&0x800000) AT91F_PIO_InterruptDisable(AT91C_BASE_PIOA,SW3_MASK);   //Прерывание пришло от PA23
  if(i_status&0x1000000) AT91F_PIO_InterruptDisable(AT91C_BASE_PIOA,SW2_MASK);   //Прерывание пришло от PA24
  AT91F_AIC_DisableIt(AT91C_BASE_AIC, AT91C_ID_PIOA);
  ...
  //программа обработки прерывания
  ...
  //Разрешение прерываний
  if(i_status&0x800000) AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW3_MASK);
  if(i_status&0x1000000) AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW2_MASK);
  AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_PIOA);


Первое прерывание нормально обрабатывается, но второе прерывание не обрабатывается, хотя источником является тот же вывод (PA24). Чтобы обработать следующее прерывание, приходится презагружать устройство и заново вызывать прерывание. То есть больше одного прерывания подряд не обрабатывает. Почемутак происходит, я ведь правильно конфигурирую прерывания?
Заранее благодарен!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Bulat   Работа с прерываниями в at91sam7s   Jul 7 2009, 03:57
- - SergeiCh   Тему не в том разделе создали, надо в помощь начин...   Jul 7 2009, 04:37
- - dimka76   Цитата(Bulat @ Jul 7 2009, 07:57) Первое ...   Jul 7 2009, 08:35
- - Troll   Цитата(dimka76 @ Jul 7 2009, 14:35) Перед...   Jul 7 2009, 09:07
- - aaarrr   Ну, добавим еще традиционную и очевидную ошибку - ...   Jul 7 2009, 11:32
|- - SergeiCh   Цитата(aaarrr @ Jul 7 2009, 18:32) Если п...   Jul 7 2009, 12:49
|- - aaarrr   Цитата(SergeiCh @ Jul 7 2009, 16:49) Как ...   Jul 7 2009, 12:53
|- - SergeiCh   Цитата(aaarrr @ Jul 7 2009, 19:53) (и кто...   Jul 7 2009, 15:43
|- - aaarrr   Цитата(SergeiCh @ Jul 7 2009, 19:43) Надо...   Jul 7 2009, 15:49
|- - Bulat   Цитата(aaarrr @ Jul 7 2009, 21:49) Да, на...   Jul 8 2009, 08:47
- - Troll   Не сильно хорошо разбираюсь в Ассемблере. Но на пе...   Jul 8 2009, 09:34
|- - Bulat   Цитата(Troll @ Jul 8 2009, 15:34) Не силь...   Jul 8 2009, 09:48
- - Troll   Цитата(Bulat @ Jul 8 2009, 15:48) Так вот...   Jul 8 2009, 10:49
- - aaarrr   Цитата(Troll @ Jul 8 2009, 13:34) Команда...   Jul 8 2009, 11:47
|- - Bulat   Цитата(aaarrr @ Jul 8 2009, 17:47) Команд...   Jul 9 2009, 10:38
- - Troll   Цитата(aaarrr @ Jul 8 2009, 17:47) Но я б...   Jul 8 2009, 11:59
|- - aaarrr   Цитата(Troll @ Jul 8 2009, 15:59) aaarrr ...   Jul 8 2009, 12:13
|- - singlskv   Цитата(aaarrr @ Jul 8 2009, 16:13) Связан...   Jul 9 2009, 23:26
- - Troll   Цитата(aaarrr @ Jul 8 2009, 18:13) а в сл...   Jul 8 2009, 12:46
|- - aaarrr   Цитата(Troll @ Jul 8 2009, 16:46) Что в э...   Jul 8 2009, 12:51
- - Bulat   Прерывание вызывается по внешнему сигналу от порта...   Aug 5 2009, 05:37
|- - sergeeff   Цитата(Bulat @ Aug 5 2009, 08:37) if(i...   Aug 5 2009, 05:46
- - Troll   Отключать прерывания не нужно. КодAT91F_AIC_Disab...   Aug 5 2009, 06:20
- - Bulat   спасибо за ответы, но это не решает основной пробл...   Aug 5 2009, 07:25
- - sergeeff   В конце обработчика прерывания сбросьте флаг перыв...   Aug 5 2009, 07:55
|- - Bulat   Цитата(sergeeff @ Aug 5 2009, 13:55) В ко...   Aug 5 2009, 09:39
|- - zltigo   Цитата(sergeeff @ Aug 5 2009, 10:55) Кодv...   Aug 5 2009, 12:08
|- - singlskv   Цитата(sergeeff @ Aug 5 2009, 11:55) В ко...   Aug 5 2009, 20:09
- - Troll   Цитата(sergeeff @ Aug 5 2009, 11:55) В ко...   Aug 5 2009, 10:48
|- - aaarrr   Цитата(Troll @ Aug 5 2009, 14:48) А я реш...   Aug 5 2009, 11:52
- - sergeeff   Уважаемый Гуру! Я прекрасно помню про вашу не...   Aug 5 2009, 12:36
|- - zltigo   Цитата(sergeeff @ Aug 5 2009, 15:36) Ваши...   Aug 5 2009, 14:14
- - sergeeff   Вы же сами признавались в топике (http://electroni...   Aug 5 2009, 16:35


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

 


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


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