Using interrupts before kernel starts

trialogy wrote on Wednesday, December 12, 2012:

Hi everybody,

i need to use the RX interrupt before starting the RTOS
( Polling is not a solution because i need to flash a external memory while data should received at the background).

calling   portENABLE_INTERRUPTS() not works,   i can’t receive any interrupts before the RTOS (vTaskStartScheduler) starts. Anybody faced the same problem?

King regards.

rtel wrote on Wednesday, December 12, 2012:

You have not said which port you are using, or which RX interrupt you are using.

Note that some ports never globally enable or globally disable interrupts, but instead just modify the priority level interrupt mask.  Therefore, if interrupts are globally disable, calling portENABLE_INTERRUPTS() will only set the interrupt mask level down without actually enabling interrupts.

There is no problem using interrupts before the scheduler starts *provided* the interrupts don’t make use of the FreeRTOS API.  To protect against the possibility of an interrupt that does use the FreeRTOS API executing during initialisation most FreeRTOS API functions will leave interrupts disabled (or the mask level up) when they exit if the kernel is not running (interrupts becoming automatically enabled/unmasked when the scheduler starts).


trialogy wrote on Wednesday, December 12, 2012:

Many thanx