saeed_p61
13-02-2010, 14:23
سلام
من ext int0 رو به صورت زیر Init کردم:
//* define switch SW3 at PIO input for interrupt IRQ loop
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, INP_ENC1_F1 | INP_ENC2_F1);
// open external IRQ interrupt
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, INP_ENC1_F1, 0);
// open external IRQ0 interrupt
AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_IRQ0, PIO_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, InterruptEnc1);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_IRQ0);و روتین رو به صورت زیر نوشتم :
void InterruptEnc1 ( void ) {
int dummy;
ctcEnc1++;
PORTA->PIO_PER = 0x00000008; /* Enable PIO for LED1..4 */
PORTA->PIO_OER = 0x00000008; /* LED1..4 are Outputs */
PORTA->PIO_SODR = 0x00000008;
PORTA->PIO_SODR = 0x00000008; /* Turn on LED's ("1") */
// printf ("%u--%u\n",ctcEnc1,ctcEnc2);
//* enable the next PIO IRQ
dummy =AT91C_BASE_PIOA->PIO_ISR;
//* suppress the compilation warning
dummy =dummy;
}
ولی فقط یکبار وارد روتین میشه و بعد از خروج از روتین میره داخل باقالی ها و حتی به while هم بر نمی گرده و یه جورایی هنگ میکنه ؟!
انگار آدرس برگشت گم میشه!
کسی میدونه مشکل کار من کجاست؟
من ext int0 رو به صورت زیر Init کردم:
//* define switch SW3 at PIO input for interrupt IRQ loop
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, INP_ENC1_F1 | INP_ENC2_F1);
// open external IRQ interrupt
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, INP_ENC1_F1, 0);
// open external IRQ0 interrupt
AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_IRQ0, PIO_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, InterruptEnc1);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_IRQ0);و روتین رو به صورت زیر نوشتم :
void InterruptEnc1 ( void ) {
int dummy;
ctcEnc1++;
PORTA->PIO_PER = 0x00000008; /* Enable PIO for LED1..4 */
PORTA->PIO_OER = 0x00000008; /* LED1..4 are Outputs */
PORTA->PIO_SODR = 0x00000008;
PORTA->PIO_SODR = 0x00000008; /* Turn on LED's ("1") */
// printf ("%u--%u\n",ctcEnc1,ctcEnc2);
//* enable the next PIO IRQ
dummy =AT91C_BASE_PIOA->PIO_ISR;
//* suppress the compilation warning
dummy =dummy;
}
ولی فقط یکبار وارد روتین میشه و بعد از خروج از روتین میره داخل باقالی ها و حتی به while هم بر نمی گرده و یه جورایی هنگ میکنه ؟!
انگار آدرس برگشت گم میشه!
کسی میدونه مشکل کار من کجاست؟