В продолжение...
Разбирался тут с родными семафорами в FreeRTOS. Выяснилась неприятная вещь: ежели шлю сигнал через семафор от прерывания, а в некторой задаче жду его время N тиков операционки, например так:
Код
ISR:
....
xTaskWoken=xSemaphoreGiveFromISR(CalcSem,xTaskWoken);
....
Task:
....
if(xSemaphoreTake(CalcSem,N) == pdTRUE)
{
....
}
....
то семафор реально захватывается задачей через N тиков операционки, а не сразу после того, как он был послан... В общем по-любому похоже надо свои семафоры заканчивать. Если кому интересно - думаю через месяц закончу, попробую заслать автору FreeRTOS. Если кто хочет потестировать - милости просим.