реклама на сайте
подробности

 
 
> TNKERNEL 2.7, переключение контекста после tn_sem_isignal
Intel4004
сообщение Feb 20 2015, 10:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 7-09-07
Из: Наб.Челны
Пользователь №: 30 364



Системный тик - 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);
}


Вижу, что второй(который тушится из прерывания) как ему и положено загорается на очень короткое время.
Зато первый горит секунду.
Таск самый высокоприоритетный (единственный sm.gif

Получается что tnkernel переключает контекст не сразу после освобождения семафора, а дожидается системного тика?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016