Handling Interrupts with same priority

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
KaS_3578976
Level 1
Level 1

Hi,

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 ?

Thanks,

Karthick S

0 Likes
1 Solution
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

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

Regards,

Rashi

Regards,
Rashi

View solution in original post

0 Likes
1 Reply
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

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

Regards,

Rashi

Regards,
Rashi
0 Likes