1 Reply Latest reply on Sep 18, 2019 5:31 AM by RashiV_61

    Handling Interrupts with same priority




      I'm trying to read current value of the Complex GPIO timer (GPIO [25]) whenever i get the Strobe signal from the sensor. One of the GPIO pin (GPIO[19]) is configured as interrupt to Strobe signal. The issue here is whenever the camera exposure is changed, GPIO Interrupt is not invoked for both positive edge or negative edge of the Strobe signal. Also Interrupt is missing for only one strobe signal and after that interrupt for next strobe signal is received properly. Upon debugging I have found that CY_U3P_DMA_CB_PROD_EVENT in the DmaRead Callback function is pre-empting the GPIO Interrupt. I have tried changing the interrupt priority for USB Dma Block and GPIO block using CyU3PVicIntSetPriority(vectorNum,priority) API but this API function doesn't seems to have any effect in the interrupt priority. Please let me know whether setting priority in this API changes the priority of the interrupts.


      Is there any other ways to handle priorities between Interrupts or Callback functions ?



      Karthick S

        • 1. Re: Handling Interrupts with same priority

          Hello Karthick,


          As per the FX3APIGuide, there are two types of interrupts:


          The high priority (non pre-emptable interrupts) are:

          USB interrupt

          DMA interrupt for USB sockets

          DMA interrupt for GPIF sockets

          DMA interrupt for Serial peripheral sockets

          The low priority (pre-emptable interrupts) are: System control interrupt (used for suspend/wakeup)

          OS scheduler interrupt (timer based)

          GPIF interrupt

          SPI interrupt

          I2C interrupt

          I2S interrupt

          UART interrupt

          GPIO interrupt


          Some interrupts in the FX3 system need to be prioritized over others to ensure that the application can meet all the USB spec

          requirements and transfer rates. In particular, the USB core interrupt must be handled at the highest priority , and all the DMA interrupts should be allotted the next high priority level.


          So, it not advisable to change the priority of these interrupts.


          Also, CyU3PVicIntSetPriority() function is not used in the library and is not expected to be called