LPC2368 + Rowley + FreeRTOS V6 ISR problem

raedbenz wrote on Sunday, November 29, 2009:

Hi,
i have enabled the UART0 receiver interrupt.
i installed interrupt using :

ctl_set_isr(UART0_INT, 0, CTL_ISR_TRIGGER_FIXED, vUART0ISR_Wrapper, 0);
ctl_unmask_isr(UART0_INT);    /UART0_INT = 6

then the wrapper saves context, calls the handler and just blinks an led (LED2), then VICVectAddr =  0, then restore context.
the only task is running is LED1blink.
i open the terminal and i type a character and the LED2 emmits but the LED1 task freezes. it seems the whole scheduler freezed. Hints plz. thanks in advance.

edwards3 wrote on Sunday, November 29, 2009:

>Hints plz

First hint - try doing it the way the documentation says to do it, and the examples show it being done.  Don’t use ctl anything.

Look at the Interrupt Service Routines section of this page http://www.freertos.org/portlpc2106.html but note with the compiler that Rowley have been using (I think it changed recently) the call to vASwitchCompatibleISR_Handler() should be made from assembler as __asm volatile(“bl vASwitchCompatibleISR_Handler”); to stop it ever getting inlines. Also vASwitchCompatibleISR_Handler() should be written in ARM mode as ARM to THUMB interworking from naked functions is broken in <i>some</i> GCC versions.

raedbenz wrote on Sunday, November 29, 2009:

Hi,
do u mean to use, VICIntSelect , VICIntEnable, VICVectAddr, VICVectCntl1 registers to set the interrupt?

raedbenz wrote on Tuesday, December 01, 2009:

Please check the C file. What is wrong in it? thanks

  : http://www.mediafire.com/?n3zwo4dny3q

raedbenz wrote on Wednesday, December 02, 2009:

any help guys……it will be much appreciated.

davedoors wrote on Thursday, December 03, 2009:

I have not read your C file, but the LPC2138 Rowley demo in the FreeRTOS download includes at least one ISR you can copy.

raedbenz wrote on Saturday, December 05, 2009:

sorted….thank you all…