Системный тик - 1Hz.
Проц - cortexM3 (stm32).
В программе зажигаю два светодиода и жду семафор. Дождавшись тушу один светодиод.
Через единицы миллисекунд после вызова tn_sem_acquire вызывается прерывание, в котором тушу второй светодиод и вызываю tn_sem_isignal.
Кусок кода:
Код
void func (void)
{
Board_Led1Set();
Board_Led2Set();
tn_sem_acquire(Semaphore, 1000);
Board_Led1Clear();
}
void IRQ (void)
{
Board_Led2Clear();
tn_sem_isignal(Semaphore);
}
Вижу, что второй(который тушится из прерывания) как ему и положено загорается на очень короткое время.
Зато первый горит секунду.
Таск самый высокоприоритетный (единственный

Получается что tnkernel переключает контекст не сразу после освобождения семафора, а дожидается системного тика?