Hello,
We have an application that requires minimum interrupt latency, and we are trying a Concerto kit (Cortex processor inside it).
Based on the datasheets, we understand that the interrupt latency should be 12 cycles between the interrupt is generated and the first instruction of the ISR is executed.
Unfortunately, we running a simple test and the interrupt latency is much longer (around 25 CPU cycles). These are the details:
1) We generate interrupts with an GPIO interrupt (we also did it with an UART_INT_RX interrupt and the latency looks identical). There is no other interrupt enabled.
2) The ISR toggles a GPIO output, we measure with an oscilloscope the time between the signal that triggers the external interrupt and the GPIO output that is toggled by the ISR.
4) To change the GPIO output we use the fastest way: HWREG(GPIO_PORTE_AHB_BASE + (GPIO_O_DATA + (GPIO_PIN_3 << 2))) = 0;
5) The whole project is very simple, has only this interrupt and almost no other code. The main() function is just toggling LED, identical to the blinky example. The rest of the code is also the same as the blinky example.
Can somebody please help us understand why the interrupt latency is so long?
Thanks,
Max