ADI BF533 программируемый флаг прерывания - PullRequest
1 голос
/ 25 октября 2011

Когда я нажимаю кнопку PF8, я хочу, чтобы blackfin перешел в ISR, а счетчик увеличился на 1. Я должен очистить или установить бит, который указывает, что процессор вошел в ISR, но я не знаю, как его очистить.

Мой процессор BF533.

Вот мой код:

    // prototype
EX_INTERRUPT_HANDLER(FlagA_ISR);

volatile int count = 0;

void main(void)
{

     // Register FlagA ISR to interrupt vector group 12
     register_handler(ik_ivg12, FlagA_ISR);

     // set direction of programmable flag PF8 to input
     *pFIO_DIR &= ~PF8;
     ssync();

     // interrupt enable PF8
     *pFIO_INEN |= PF8;
     ssync();     

     // give interrupt when FIO_FLAG_D PF8 changes
     *pFIO_MASKA_D |= PF8;
     ssync();


     // Bind FlagA interrupt to IVG12
     *pSIC_IAR2 |= 0x00005000; // flag A IVG12
     ssync();


     // Enable PFA in system interrupt mask register
     *pSIC_IMASK = 0x00080000;
     ssync();

     // enable IVG12 in core interrupt mask register
     *pIMASK |= 0x00001000;
     ssync();

     // wait for interrupt
     while(count < 5);
        printf("5 interrupts received");
}

EX_INTERRUPT_HANDLER(FlagA_ISR)
{     
     count++;

     // Needed to clear or set a bit to indicate that the processor has entered the ISR
}

1 Ответ

1 голос
/ 25 октября 2011

Я только что понял, как решить этот вопрос.

PFx подключены к FIO_FLAG. Мы можем очистить наш статус прерывания, очистив FIO_FLAG.

Вот код:

*pFIO_FLAG_D &= ~PF8;
ssync();
//or, you can try:
*pFIO_FLAG_C |= PF8; 
ssync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...