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

 
 
> опрос флагов в РТОС, общий вопрос
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
megajohn
сообщение Jun 9 2014, 02:17
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



когда не пришло прерывание, этот task находится в Event_pend в заблокированном состоянии, и дает возможность выполнятся более низкоприоритетным задачам.

Если же тупо опрашивать бит, то процессор впустую будет молотить на одном месте


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post



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

 


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


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