I´m having a problem regarding interrupts on MCF52233. I´m using code warrior 6.3 and i have an external INT (IRQ4 from EPORT) starting a data aquisition process on my application. It triggers about 240 times per second and after filling a buffer it starts a DMA transfer to my digital filter. When the DMA completes, it´s isr starts a digital filter calculations. All the scheme is working fine, except while the filter routine (in the DMA0 isr) is performing calculations the mcu doesn´t recognize the external IRQ4. Right after the filter finishes, the IRQ4 start flowing again and this cycle goes on.
I want to detect IRQ4 while the filter is running, eg, while the DMA0 isr is calculating the filter, the IRQ4 can be detected and it´s isr can continue to fill the buffer.
I think it´s an interrupt priority and level issue.
I know that IRQ4 is a fixed priority IRQ (midpoint priority) but even when i set the DMA0 interrupt level to 1 and interrupt priority to 1, the IRQ4 detection still can´t take the cpu while the DMA0 isr is still running.
The following line was supposed to set level and priority fro DMA0 to 1 (lowest priority).
MCF_INTC0_ICR9 = (MCF_INTC_ICR_IL(1) | MCF_INTC_ICR_IP(1)); // DMA interrupt level and priority 1
What i´m forgetting to do? Any hints are welcome.
Alban Edit: mention part number in subject line
Message Edited by Alban on 2007-03-14 06:29 PM