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

 
 
> Прерывание PIO AT91SAM7A3
Balaganoff
сообщение Sep 17 2008, 14:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 24-08-07
Пользователь №: 30 034



Помогите разобраться, что не так. Хочу разобраться с прерываниями по изменению уровня на PIOA, прерывание должно наступать по нажатию джойстика. Код брал из примера,немного переработав для удобства. Не входит в прерывание и все тут.


Код
void main (void)
{
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW3_MASK | SW4_MASK);


AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PIO_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW4_MASK);
//* set the interrupt by software
AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);

for (;;)
{}
}


// обработчик

void pio_c_irq_handler ( void )
{
int dummy;
count_int_pio++;

    
    AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2);
    delay_t (2000000);
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2);
    delay_t (2000000);
  
    dummy =AT91C_BASE_PIOA->PIO_ISR;
    


}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Balaganoff
сообщение Sep 19 2008, 13:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 24-08-07
Пользователь №: 30 034



Подключил <intrinsics.h> и вставил
функцию __enable_interrupt().


Вот текст программы
Код
void pio_c_irq_handler ( void )
{
int dummy;

  

    count_int_pio++;

    
    
    AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED2);
    delay_t (2000000);
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED2);
    delay_t (2000000);
  
    dummy =AT91C_BASE_PIOA->PIO_ISR;
    dummy=AT91C_BASE_AIC->AIC_ISR;
    dummy=AT91C_BASE_AIC->AIC_IECR;  

}




void main( void )

{


       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
        
       AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
       AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );

    

       AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW4_MASK);
    
       AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_PIOA,PIO_INTERRUPT_LEVEL,            AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, pio_c_irq_handler);
    
        AT91C_BASE_AIC->AIC_EOICR = 0;
        
        __enable_interrupt();
        
        AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,SW4_MASK);
    
       AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA);  
      


for (;;)
    {

    }


}


Вот, то что в окне дизасемблерра
Код
IRQ_Handler_Entry:
  00000090  E24EE004  SUB          LR, LR, #0x4
  00000094  E92D4000  STMDB        SP!, {LR}
  00000098  E14FE000  MRS          LR, SPSR
  0000009C  E92D4000  STMDB        SP!, {LR}
  000000A0  E92D0001  STMDB        SP!, {R0}
  000000A4  E59FE048  LDR          LR, [PC, #+72]          ; [_?2 (0xF4)] =AIC_SMR (0xFFFFF000)
  000000A8  E59E0100  LDR          R0, [LR, #+256]
  000000AC  E58EE100  STR          LR, [LR, #+256]
  000000B0  E321F013  MSR          CPSR_c, #0x13
  000000B4  E92D500E  STMDB        SP!, {R1,R2,R3,R12,LR}
  000000B8  E1A0E00F  MOV          LR, PC
  000000BC  E12FFF10  BX           R0
  000000C0  E8BD500E  LDMIA        SP!, {R1,R2,R3,R12,LR}
  000000C4  E321F092  MSR          CPSR_c, #0x92
  000000C8  E59FE024  LDR          LR, [PC, #+36]          ; [_?2 (0xF4)] =AIC_SMR (0xFFFFF000)
  000000CC  E58EE130  STR          LR, [LR, #+304]
  000000D0  E8BD0001  LDMIA        SP!, {R0}
  000000D4  E8BD4000  LDMIA        SP!, {LR}
  000000D8  E16FF00E  MSR          SPSR_cxsf, LR
  000000DC  E8FD8000  LDMIA        SP!, {PC}^
AT91F_Default_FIQ_handler:
  000000E0  EAFFFFFE  B            AT91F_Default_FIQ_handler; 0xE0
AT91F_Default_IRQ_handler:
  000000E4  EAFFFFFE  B            AT91F_Default_IRQ_handler; 0xE4
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Balaganoff   Прерывание PIO AT91SAM7A3   Sep 17 2008, 14:21
- - Сергей Борщ   Цитата(Balaganoff @ Sep 17 2008, 17:21) К...   Sep 17 2008, 15:23
- - VSt&   можно просмотреть ассемблерный обработчик, начиная...   Sep 18 2008, 02:43
|- - aaarrr   Цитата(VSt& @ Sep 18 2008, 06:43) AT9...   Sep 18 2008, 07:52
- - Balaganoff   Не сердитесь, если что не так, я хочу разобраться....   Sep 18 2008, 08:52
|- - Сергей Борщ   Ну вот. Зная компилятор можно продолжать.Цитата(Ba...   Sep 18 2008, 09:30
- - Balaganoff   по Адрессу irgvec : 0x18 содержится IRQ_Handler_...   Sep 18 2008, 15:05
|- - aaarrr   Цитата(Balaganoff @ Sep 18 2008, 19:05) п...   Sep 18 2008, 15:36
|- - Сергей Борщ   Цитата(Balaganoff @ Sep 18 2008, 18:05) А...   Sep 18 2008, 15:49
|- - Сергей Борщ   Цитата(Balaganoff @ Sep 19 2008, 16:39) П...   Sep 19 2008, 14:30
- - Balaganoff   При том же исходном тесте , если комментирую в осн...   Sep 22 2008, 12:56
|- - Сергей Борщ   Цитата(Balaganoff @ Sep 22 2008, 15:56) П...   Sep 22 2008, 13:56
- - Balaganoff   В состоянии покоя на входах джойстика уровни ...   Sep 23 2008, 08:25
|- - Сергей Борщ   Цитата(Balaganoff @ Sep 23 2008, 11:25) В...   Sep 23 2008, 09:29
|- - aaarrr   Цитата(Сергей Борщ @ Sep 23 2008, 13:29) ...   Sep 23 2008, 10:58
- - Balaganoff   Прерывания же от PIO считаются внутренними, а ...   Sep 23 2008, 12:02
|- - Сергей Борщ   Цитата(Balaganoff @ Sep 23 2008, 15:02) П...   Sep 23 2008, 12:26
- - Balaganoff   Ух! Все заработало. Сразу хочу сказать большое...   Sep 23 2008, 14:53
- - aaarrr   Цитата(Balaganoff @ Sep 23 2008, 18:53) В...   Sep 23 2008, 15:01


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

 


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


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