Forum Discussion
Altera_Forum
Honored Contributor
15 years agoHi,
Are you using the ENHANCED Interrupt API or the LEGACY (old one)? Are you using an EIC(external interrupt controller) or IIC (internal interrupt controller)? Maybe the problem is that your PIO-ISR isn't INTERRUPTIBLE. At least with the LEGACY API an ISR (even if it is low priority) couldn't be interrupted unless you have told the system to do it. So in your case, you are waiting inside the PIO-ISR for the DMA to interrupt. But for the LEGACY API (maybe for the ENHANCED with IIC too) it is not possible, because you didn't declare the ISR as interruptible. With LEGACY API you can do it by calling alt_irq_interruptible() at the beginning of your PIO-ISR and alt_irq_non_interruptible() at the end. Now it should be interruptible for IRQs with higher priority. I don't know if there are any similar functions for the ENHANCED API using IIC. Didn't find any yet. But maybe you don't need to, I am not sure.... Regards Philipp