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.

TMS570LC4357: FIQ and IRQ interrupt handling

Part Number: TMS570LC4357

Dear Sir,

I have two interrupt subroutine in my application code. One is periodic timer interrupt of 2ms. The other one is UART receive interrupt. I am not sure whether both are working. I think the timer interupt is working fine but UART receive interrupt is not working everytime as the LED that should be ON once UART interrupt occures which is written in  scinotification().  Though the LED is glowing but not everytime. How to solve. I know the timer interrupt is having highest priority as FIQ. The UART interrupt should not be skipped. I want UART interrupt ISR to be served once timer interrupt subroutine complete(if in any case both are overlapping).

How to solve ??

Regards,

Deepak

  • Hello Deepak,
    The ARM CPU provides two vectors for interrupt requests—fast interrupt requests (FIQs) and normal interrupt requests (IRQs). FIQs are higher priority than IRQs, and FIQ interrupts may interrupt IRQ interrupts.
    Assuming you are using RTI module to generate interrupt in every 2ms, then RTI interrupt could be IRQ of FIQ, depending on your settings.
    The same is valid for UART interrupt. IRQ mapped to channel with lower number have higher priority than IRQ mapped to channel with higher number. It is possible to change Channel mapping in VIM module . Please refer to Chapter 19 in device TRM for more of how interrupts are handled.
    It is possible the LED is lit but for very short interval and may be you are missing it. You could put breakpoints in your code and check whether interrupt is generated. Another approach is toggle pin in ISR and use oscilloscope to monitor this pin. You can add counter for register interrupts and then check counter while debugging and so on.

    Best regards,
    Miro