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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> RL-ARM USB Device, Проблемы конфигурации
cinema_effect
сообщение Jun 4 2012, 08:47
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 20-08-09
Пользователь №: 51 964



Разносторонние ответы... Ладно, спасибо, буду дальше разбираться
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 4 2012, 09:04
Сообщение #17


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(cinema_effect @ Jun 4 2012, 11:47) *
Разносторонние ответы... Ладно, спасибо, буду дальше разбираться

Флаги сама ОС сбрасывает после того, как задача их дождалась.
Поэтому сбрасывать их нужно в какой-то особой ситуации, если почему-то уже стали не нужны.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 4 2012, 09:08
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Jun 4 2012, 13:04) *
Флаги сама ОС сбрасывает после того, как задача их дождалась.
Поэтому сбрасывать их нужно в какой-то особой ситуации, если почему-то уже стали не нужны.

здесь может возникнуть ситуация, когда одна задача постоянно генерит эти флаги, а вторая ловит
но, наверное, проще в генерящей задаче проверять, ждет ли кто-то флаг, и если да, то выставлять его
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 4 2012, 09:24
Сообщение #19


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(toweroff @ Jun 4 2012, 12:08) *
здесь может возникнуть ситуация, когда одна задача постоянно генерит эти флаги, а вторая ловит

Так для этого они и предназначены. Одна задача устанавливает флаг, когда ей нужно, а другая ждет их. Если вторая задача не успевает реагировать на каждый флаг, значит, не судьба.
Go to the top of the page
 
+Quote Post
cinema_effect
сообщение Jun 4 2012, 09:31
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 20-08-09
Пользователь №: 51 964



Цитата(toweroff @ Jun 4 2012, 16:08) *
здесь может возникнуть ситуация, когда одна задача постоянно генерит эти флаги, а вторая ловит
но, наверное, проще в генерящей задаче проверять, ждет ли кто-то флаг, и если да, то выставлять его

А как проверить в генерящей задаче ждет ли кто то флаг?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 4 2012, 10:05
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(cinema_effect @ Jun 4 2012, 13:31) *
А как проверить в генерящей задаче ждет ли кто то флаг?

можно завести глобальную переменную, в которую будет заноситься ID текущей задачи

Код
OS_TID  otask;


//
//
//

__task void task1 ()
{
otask = os_tsk_self ();
os_evt_wait_or(FLAG_MASK, TIMEOUT);
otask = 0xFFFFFFFF;
}

__task void task2 ()
{
//
//
//
if (otask != 0xFFFFFFFF) os_evt_set(FROM_TASK2_FLAG, otask);
}


примерно так
Go to the top of the page
 
+Quote Post
cinema_effect
сообщение Jun 4 2012, 10:07
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 20-08-09
Пользователь №: 51 964



Цитата(toweroff @ Jun 4 2012, 17:05) *
можно завести глобальную переменную, в которую будет заноситься ID текущей задачи


Интересно, буду пробовать, спасибо Вам
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 4 2012, 10:18
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Для синхронизации двух задач можно (нужно) использовать два флага. В каждой задаче по одному.
Go to the top of the page
 
+Quote Post

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

 


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


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