I'm working on a DSP system that will be interrupt-driven, with a "stack" of prioritized interrupts. I've used this exact architecture before on a Blackfin DSP, but I'm new to the C55x DSP and want to make sure this is possible.
Here's what I've got in mind for the interrupt stack, in decreasing priority:
SINT3/INT1 (priority 5) - external interrupt, used to capture a timer with high precision
SINT6/UART (priority 9) - peripheral interrupt
SINT8/DMA (priority 11) - incoming DMA transfer interrupt, 2 channels. Depending on which DMA channel fired, it will will raise either SINT30/SINT31 and exit.
SINT19/SPI (priority 16) - peripheral interrupt
SINT30 (priority 17) - software interrupt, used for "higher priority" DMA handling
SINT31 (priority 18) - software interrupt, used for "lower priority" DMA handling
All of this will sit on top of a "while(1) sleep();" main loop.
Now, I'm wondering if the "raised interrupt" thing will work. If I execute "TRAP #30" from the SINT8 handler, will the code immediately begin executing SINT30, or will SINT8 continue running until it finishes, with control then going to SINT19 (if SPI interrupt pending) and then SINT30? The latter is what I want.
Thanks!