Other Parts Discussed in Thread: AM1808
Presently, I have GPIO bank 8 interrupt set to channel priority 2. I have the USB interrupt set to 4. The UART is set to priority 7. I am doing this with the command IntChannelSet(). What I am seeing with a logic analyzer is that for some reason the USB interrupt is not being interrupted by the GPIO interrupt. This is bad because the GPIO interrupt needs to occur on a 10hz cycle because I have an ADC using it to signal a conversion completion. I am testing this with the logic analyzer by toggling a memory location when I enter and exit each interrupt. I have a memory location toggle in the GPIOIsr() and one in the USB0DeviceIntHandler() functions. When I monitor the memory locations and compare them to the GPIO pin toggle from the ADC, I am seeing that sometimes the USB interrupt takes a while to finish. During these long stretches, a GPIO trigger occurs but the CPU waits until the USB interrupt finishes before it services the GPIO interrupt.
I searched my project for IntChannelSet and found the following:
IntChannelSet(SYS_INT_TINT12_0, 3);
IntChannelSet(SYS_INT_TINT34_0, 5);
IntChannelSet(SYS_INT_GPIOB8, 2);
IntChannelSet(UART_INT, 7);
IntChannelSet(SYS_INT_USB0, 4);
If I understand the architecture properly, this should mean that my GPIO8 interrupt service routine should preempt any of the other interrupts. Has anyone seen this issue or have advice as to why this might happen? I am using the AM1808 and coding with StarterWare 1_10_03_03, TMS470 5.0.1 compiler, and CCS5.
Thanks!