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

 
 
> опрос флагов в РТОС, общий вопрос
Dubov
сообщение Jun 9 2014, 01:40
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Недавно задался вопросом, как лучше организовать опрос флага в ОСРВ(FreeRTOS, SYSBIOS... др.)

Поясню задачу: контроллер DMA по заполнению буфера выставляет один бит в регистре готовности данных. Прочитать этот бит должна т.н. background подпрограмма.
Вопрос: как осуществляется решение подобной задачи в ОСРВ?

Пока на ум приходит только опрос через

CODE
while(1)
{
if(flag == 1)
data_proc();
}



Есть более грамотные решения?

Сообщение отредактировал Dubov - Jun 9 2014, 02:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dubov
сообщение Jun 9 2014, 02:12
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Сколько не смотрю примеры, а от while(1) всё равно никуда не деться, хоть выставляй семафор в прерывании, хоть опрашивай флаг регистра напрямую...

Пример из SYSBIOS:

CODE
task()
{
UInt events;
while (TRUE) {
/* Wait for ANY of the ISR events to be posted *
events = Event_pend(myEvent, Event_Id_NONE,
Event_Id_00 + Event_Id_01 + Event_Id_02,
BIOS_WAIT_FOREVER);
/* Process all the events that have occurred */
if (events & Event_Id_00) {
processISR0();
}
if (events & Event_Id_01) {
processISR1();
}
if (events & Event_Id_02) {
processISR2();
}
}
}


Сообщение отредактировал Dubov - Jun 9 2014, 02:13
Go to the top of the page
 
+Quote Post



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

 


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


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