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

 
 
 
Reply to this topicStart new topic
> Во прос по работе в режиме эмуляции быстрого прерывания (Fast Forcing), at91sam7s
Bulat
сообщение Dec 8 2009, 06:01
Сообщение #1


Местный
***

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



Я бы хотел ускорить работу контроллера с помощью режима эмуляции быстрого прерывания Fast Forcing, так как работа контроллера заключается в непрерывной обработке 4 прерываний. Вот пример настройки одного из прерываний - прерывание от порта PIO:
Код
void Receiver_ini()
{
  unsigned int REC_MASK = 0x780;
  
      
    AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PIOA] = (unsigned int)irq_Receive;
    AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PIOA] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | PORT_INTERRUPT_LEVEL;
    
    //AT91C_BASE_AIC->AIC_FFER = (0x1 << AT91C_ID_PIOA);  // FAST
    
    AT91C_BASE_AIC->AIC_IECR = (0x1 << AT91C_ID_PIOA);
    AT91C_BASE_SYS->PIOA_IER = REC_MASK;

}

Строку включения режима Fast forcing я закомментил, так как в противном случае девайс вообще отказывается определяться ПК. Как правильно настроить режим Fast forcing для всех прерываний?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 8 2009, 11:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Bulat @ Dec 8 2009, 09:01) *
Я бы хотел ускорить работу контроллера с помощью режима эмуляции быстрого прерывания Fast Forcing, так как работа контроллера заключается в непрерывной обработке 4 прерываний.

Ну и чем вам поможет один FIQ?

Цитата(Bulat @ Dec 8 2009, 09:01) *
Как правильно настроить режим Fast forcing для всех прерываний?

Режим Fast Forcing имеет смысл только для одного прерывания, т.к. регистр AIC_FVR всегда возвращает значение регистра AIC_SVR0, никакой векторизации нет.
Go to the top of the page
 
+Quote Post
Aurochs
сообщение Dec 27 2009, 00:08
Сообщение #3


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Если у Вас все 4 источника прерываний внешние, то этот вопрос можно решить генерацией FIQ, а не эмуляцией. Для этого нужно все источники прерываний завести по ИЛИ на ножку FIQ процессора, ну и соответствующим образом настроить эту ножку в контроллере PIO.
Go to the top of the page
 
+Quote Post

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

 


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


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