Nesting interrupts on ARM7 is horrendous. NXP have an application note telling you how to do it, but if you can, write your interrupts to be very quick by deferring the real interrupt processing to a high priority task.
Thank’s for your reply DaveDoors!
well my problem is that I have an interrupt timer @1ms always on, seems that the uart interrupt is delaying the timer interrupt. My idea was to nest the uart interrupt. I’m trying to not wrap the uart interrupt as freertos says and declare the function with the keywords of IAR as: __irq __nested.
In this way seems to me that the timer interrupt should be able to nest the uart isr.
I’ll try tommorrow at work and se if it work. If you wish some feedback on it. Just tell.
Interrupt service routines
An interrupt service routine that does not cause a context switch has no special requirements and can be written as per the normal IAR syntax. For example:
/* End the interrupt in the VIC. */
VICVectAddr = 0;
}
Often you will require an interrupt service routine to cause a context switch. For example a serial port character being received may wake a high priority task that was blocked waiting for the character. If the ISR interrupted a lower priority task then it should return immediately to the woken task. Limitations in the IAR inline assembler necessitate such interrupt service routines include an assembly file wrapper.
at this point i can declare the uartisr as
static __arm __irq __nested void uartISR( void )
{
}
and this should enable the nesting of the uart isr.
Of course in uart ISR no RTOS calling.
Is there something wrong?