I am facing a quite strange issue.
I am developping a project with a K64 (with MQX and SDK) connected through the UART 5 to a modem with AT commands. When the K64 sends a request and the modem replies with at least 27ms between the last byte of request and the first byte of reply, then the K64 triggers the interrupt (UART 5 seems to have no FIFO) and all my data is correctly received.
But if the modem replies faster (in 18 ms or less, based on the oscilloscope) between the last byte of request and the first byte of reply, then the K64 triggers no interrupt, or sometimes one at the end, so I am facing a overrun condition and my data is lost.
This change of delay in the reply is based on which command I send. One of them is handled faster than the others. The same issue happens with events sent by the modem that are not conditionned by the K64 (user event, call received etc), and it creates also some data loss and overrun.
I have no idea of who is preventing the interrupt to be triggered. All my interrupts are fixed with a priority of 6 (
NVIC_SetPriority(RTC_IRQn, 6U) for example). I have tried to set a higher priority without success.
I have also tried to set a pin when entering each other interrupt (rtc, gpio, I2C, DMA, other UART, SPI), and clear the pin when leaving the interrupt, and check with the oscilloscope if one of them was called when my UART 5 was not available, but no success.
How could I investigate about who is working or preventing my interrupt working in this particular window frame ?
By the way the NMI pin is not connected.
Thanks for your help !
Yes, it is strange. Could you please specify the priority of your tasks and the baud rate you are using?
I would suggest you change the baud rate and task priority and ISR priority to see whether it helps.