Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Во прос по работе в режиме эмуляции быстрого прерывания (Fast Forcing)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Bulat
Я бы хотел ускорить работу контроллера с помощью режима эмуляции быстрого прерывания 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 для всех прерываний?
aaarrr
Цитата(Bulat @ Dec 8 2009, 09:01) *
Я бы хотел ускорить работу контроллера с помощью режима эмуляции быстрого прерывания Fast Forcing, так как работа контроллера заключается в непрерывной обработке 4 прерываний.

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

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

Режим Fast Forcing имеет смысл только для одного прерывания, т.к. регистр AIC_FVR всегда возвращает значение регистра AIC_SVR0, никакой векторизации нет.
Aurochs
Если у Вас все 4 источника прерываний внешние, то этот вопрос можно решить генерацией FIQ, а не эмуляцией. Для этого нужно все источники прерываний завести по ИЛИ на ножку FIQ процессора, ну и соответствующим образом настроить эту ножку в контроллере PIO.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.