This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6678 why Low-priority interrupt can not be interruptted by high priority interrupts?

Hi:

I have two interrupt, INT_4() is high priority, INT_5()  is Low-priority interrupt . 

First I let my Program run into INT_5, then the  program can not jump to the INT_5,  because there is a while(1)  in INT_5. Then I another event happens, it can trigger the INT_4(),

But the program don't jump to the INT_4, Why??

interrupt void INT_4()

{

// process

}

interrupt void INT_5()

{

// process

while(1);

}

Best Regards

  • Hi,

    The priority is considered in case of simultaneous pending interrupts. When you are already under interrupt, by deault the interrupts are disabled so not other interrupts can be served.

    In your interrupt handler you have to reenable the GIE (Global Interrupt enable) and maybe set the IER so to serve only the high priority (SW managed, not HW managed).

    Note that nested interrupts requires some additional operation respect to a "first-level" interrupt. See sprugh7 (TMS320C66x DSP CPU and Instruction Set), para. 6.6.2 Nested Interrupts.