I’m using Eclipse, yagarto gcc, olimex jtag and LPC2388.
My project is using at last 12 tasks and uses binaries somaphores to synchronizate tasks and ISRs.
Apparently the problem appears when the ISR gives the semaphore through xSemaphoreGiveFromISR when the scheduler is currently suspended. In this case the portYIELD_FROM_ISR() does not work. Under this condition the task that is waiting for the somaphore through xSemaphoreTake will never be waked up by the scheduler.
What am I doing wrong?
if( xSemaphoreTake(xI2cSemaphore, portMAX_DELAY )== pdPASS )
xSemaphoreGiveFromISR( xI2cSemaphore, &xHigherPriorityTaskWoken );
if( xHigherPriorityTaskWoken == pdTRUE )