I am working on a system which uses about 4 interrupts. I can clearly define a priority from one to the other. For example, I feed SPI transfers with DMA requests and operate a USB interface which drives the SPI data. To this end I have prioritized my interrupts as follows (ordered from highest to lowest priority)
- Systick
- EXTI for handshaking signals
- DMA streams
- USB
Everything works great for a while and then I start seeing some odd behavior that I have not been able to determine the cause of yet, but I am wondering/suspecting if its because I am allowing interrupts to pre-empt other ones at inopportune times.
So my question is, what sorts of issues should be considered when deciding if an interrupt should preempt another, or if it should just be given a high enough priority to tail-chain.