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

 
 
> "Правильное" использование OS::message
Zeal0t
сообщение Aug 22 2016, 11:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 28-06-13
Пользователь №: 77 311



Добрый день.
Осваиваю scmRTOS.
Пробую простой пример.

Исходные данные:
Лишнее убрал.
Оставлена только суть.

CODE

struct tagMessageFQ {
uint16_t Value;
};

typedef OS::process<OS::pr0, 200> TProcessFQ;
typedef OS::process<OS::pr1, 200> TProcessAPP;

typedef OS::message<tagMessageFQ> TMessageFQ;


CODE

namespace OS
{
template <> OS_PROCESS void TProcessFQ::exec()
{
FOREVER {
// if (MessageFQ.wait(2)) { // вариант 1
if (MessageFQ.is_non_empty()) { // вариант 2
TP2.On();
{
MessageFQ.out(msgFQ);
MessageFQ.reset();
regFQPWM = msgFQ.Value;
}
TP2.Off();
}
sleep(1);
}
}
}



CODE


static tagMessageFQ msgFQ;

namespace OS
{
template <> OS_PROCESS void TProcessAPP::exec()
{
msgFQ.Value = 0;

FOREVER {

TP1.On();
msgFQ.Value = msgFQ.Value+1;
MessageFQ = msgFQ;
MessageFQ.send();
TP1.Off();

sleep(1);
}
}
}



TP1, TP2 - просто пины на процессоре, куда зацеплены щупы скопа.
TP1 - желтый
TP2 - синий

Процесс APP шлет для FQ новое значение через message.
Если проверку наличия сообщения делать через вариант [1] то получаем вот такую картинку:



Т.е. процесс увидел сообщение и его прочитал. Все верно. Но т.к. ожидание через wait идет с параметром
то получаем как бы задержку внутри желтого импульса.

Если используем вариант [2] то получаем следующее:



Т.е. сообщение было получено и на следующем витке планировщика процесс FQ "увидел" данные и их забрал.

Все работает корректно в обоих случаях.
Но если далее процесс FQ будет расти то и задержка для процесса APP будет расти.
В связи с чем вопрос: я неверно понял принцип использования сообщений или это нормально и можно использовать любой вариант?
Go to the top of the page
 
+Quote Post



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

 


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


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