Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Инструментарий

Инструментарий Тестеры, паяльники, осциллографы, программаторы, IDE.

Ответ
 
Опции темы Опции просмотра
Старый 01.09.2010, 01:04   #276
AlexPv
Senior Member
 
Регистрация: 02.03.2009
Адрес: Russia
Сообщений: 1,800
Вес репутации: 565/63
AlexPv is a name known to allAlexPv is a name known to allAlexPv is a name known to allAlexPv is a name known to allAlexPv is a name known to allAlexPv is a name known to all
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от tester Посмотреть сообщение
Я понял, что есть третья задача. Вот эта третья задача и должна отсылать сразу два сообщения через отдельные дескрипторы.

В этой же теме как-то давал подобный совет: http://www.microchip.su/showthread.p...3&postcount=15
Спасибо Вам за пояснение, идею понял.
AlexPv вне форума   Ответить с цитированием
Старый 01.09.2010, 04:32   #277
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
А можно еще и для очередей, если не затруднит
OS_Queue_Get
OS_Queue_Get_I
OS_Queue_Delet
OS_Queue_Delet_I
Сделал (100901). Детально проверять, к сожалению, сейчас нет времени. Сервисы, как и говорил, документировать не буду, иначе потом запарюсь людям объяснять, почему у них сообщения по пять раз принимаются.

Также в новой версии есть поддержка extended режима для MCC18.
tester вне форума   Ответить с цитированием
Старый 01.09.2010, 12:16   #278
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от tester Посмотреть сообщение
Сделал (100901).
Цитата:
OS_Msg_Get
OS_Msg_Get_I
OS_Smsg_Get
OS_Smsg_Get_I
Там то же включены?
maxNTF вне форума   Ответить с цитированием
Старый 01.09.2010, 13:02   #279
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Там то же включены?
Да.
tester вне форума   Ответить с цитированием
Старый 06.09.2010, 15:05   #280
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

В целях экономии памяти (там где это необходимо) было бы очень удобно иметь описание какие сервисы могут повлиять на значение локальных (не static) переменных, а какие нет.
Цитата:
a=3;
OS_Flag_Clear(F_MYFLAG, MYMASK);
b=a;
К примеру значение переменной "a" не изменится в таком коде. Зачем тогда тратить лишнюю память?
А вот в следующем коде не понятно можно ли использовать локальную переменную "i" не static
Код:
for(i=0; i<SIZE; i++)
	{
	OS_Qtimer_Create(qtim1[i]);
	OS_Qtimer_Create(qtim2[i]);
	}

Последний раз редактировалось maxNTF; 06.09.2010 в 15:12.
maxNTF вне форума   Ответить с цитированием
Старый 06.09.2010, 15:09   #281
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
В целях экономии памяти (там где это необходимо) было бы очень удобно иметь описание какие сервисы могут повлиять на значение локальных (не static) переменных а какие нет.
Влияют только сервисы, переключающие контекст. Об этом Урок 2.
tester вне форума   Ответить с цитированием
Старый 06.09.2010, 16:00   #282
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Ясно, спасибо!
maxNTF вне форума   Ответить с цитированием
Старый 06.09.2010, 16:07   #283
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Еще один вопрос, что быстрее бутет работать?
Код:
MyTask(void)
{
for(;;)
{
if(OS_Bsem_Check(BS_TASK_PE)) OS_Task_Replace(7, Task_Programming);
if(OS_Queue_Check(InQueue))
{
...
}
OS_Yield();
}
}
или
Код:
MyTask(void)
{
for(;;)
{
OS_Wait(OS_Bsem_Check(BS_TASK_PE) || OS_Queue_Check(InQueue));
if(OS_Bsem_Check(BS_TASK_PE)) OS_Task_Replace(7, Task_Programming);
else
{
...
}
}
}
maxNTF вне форума   Ответить с цитированием
Старый 06.09.2010, 16:10   #284
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Еще один вопрос, что быстрее бутет работать?
Одинаково. Но это не равнозначная замена. Первый вариант концептуально неправильный, т.к. не даст выполниться ни одной задаче с более низким приоритетом, чем текущая (пока не произойдет OS_Task_Replace).
tester вне форума   Ответить с цитированием
Старый 06.09.2010, 16:19   #285
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от tester Посмотреть сообщение
Одинаково. Но это не равнозначная замена. Первый вариант концептуально неправильный, т.к. не даст выполниться ни одной задаче с более низким приоритетом, чем текущая (пока не произойдет OS_Task_Replace).
Разве сервис OS_Yield() не отдаст контекст другим задачам?
maxNTF вне форума   Ответить с цитированием
Старый 06.09.2010, 16:21   #286
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Разве сервис OS_Yield() не отдаст контекст другим задачам?
Отдаст, но оставит задачу Готовой. Т.е. она будет участвовать в сравнении приоритетов со всеми остальными задачами. См. Эксперимент 3 из Урока 1.
tester вне форума   Ответить с цитированием
Старый 07.09.2010, 14:26   #287
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Если в сервисе OS_Qtimer_Run задать время равное 0 тогда таймаут данного таймера не наступит ни когда.
Это не есть гуд!
Или я ошибаюсь?
maxNTF вне форума   Ответить с цитированием
Старый 07.09.2010, 15:56   #288
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Еще почему то не устанавливается флаг bRun в дескрипторе таймера после выполнения сервиса OS_Qtimer_Run, даже если время задано не 0.
Или ни этот флкаг для сервиса OS_Qtimer_IsRun а bActive?
maxNTF вне форума   Ответить с цитированием
Старый 07.09.2010, 16:05   #289
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Еще почему то не устанавливается флаг bRun в дескрипторе таймера после выполнения сервиса OS_Qtimer_Run, даже если время задано не 0.
Или ни этот флкаг для сервиса OS_Qtimer_IsRun а bActive?
bRun - это рудимент (от динамических таймеров), он не используется. Проверяться должен bActive, и делать это лучше сервисом OS_Qtmer_IsRun
tester вне форума   Ответить с цитированием
Старый 07.09.2010, 16:23   #290
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

На счет нулевого времени для таймера, таймаут наступает, когда счетчик Timer в дескрипторе таймера достигает максимального значения и обнуляется.
Но все равно должно если время задать 0, то таймер должен сразу устанавливать флаг таймаута.
maxNTF вне форума   Ответить с цитированием
Старый 07.09.2010, 16:48   #291
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
На счет нулевого времени для таймера, таймаут наступает, когда счетчик Timer в дескрипторе таймера достигает максимального значения и обнуляется.
Но все равно должно если время задать 0, то таймер должен сразу устанавливать флаг таймаута.
Вроде исправил. Попробуй эти файлы:
Вложения
Тип файла: rar qtimer.rar (4.5 Кб, 4 просмотров)
tester вне форума   Ответить с цитированием
Старый 25.09.2010, 13:39   #292
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Можно ли в качестве параметра функции передать указатель на очередь сообщений, а в самой функции выполнить сервис OS_Queue_Send_Now
Код:
OST_QUEUE  InQueue;
OST_MSG   InQueueBuf[GSA_IN_QUEUE_SIZE];

void Task1 (void)
{
OS_Queue_Create(InQueue, InQueueBuf, GSA_IN_QUEUE_SIZE);
AddMsg(&InQueue);
}

AddMsg (OST_QUEUE *CurQueue)
{
OS_Queue_Send_Now(*CurQueue, MessBuf);
}
maxNTF вне форума   Ответить с цитированием
Старый 25.09.2010, 13:42   #293
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Можно ли в качестве параметра функции передать указатель на очередь сообщений, а в самой функции выполнить сервис OS_Queue_Send_Now
Сервис OS_Queue_Send_Now не переключает контекст, и его можно вызывать из любого места в программе.
tester вне форума   Ответить с цитированием
Старый 28.09.2010, 12:59   #294
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Можно ли инициализировать переменные среды ОС через структуру?
Код:
typedef struct
{
uchar *link_buf_com;
OST_QUEUE  ComQueue;
OST_MSG   ComQueueBuf[GSA_COM_QUEUE_SIZE];
uchar MessBufCom[GSA_COM_QUEUE_SIZE][GSA_COM_SIZE];
OST_FLAG16	F_COM_MSG;
}ComQueueStr;
ComQueueStr ComQueue[GSA_EXE_SIZE];

///
for(i=0; i<GSA_EXE_SIZE; i++)
	{
	OS_Queue_Create(ComQueue[i].ComQueue, ComQueue[i].ComQueueBuf, GSA_COM_QUEUE_SIZE);
	OS_Flag_Create(ComQueue[i].F_COM_MSG);
	}
maxNTF вне форума   Ответить с цитированием
Старый 28.09.2010, 13:02   #295
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Можно ли инициализировать переменные среды ОС через структуру?
Можно.
tester вне форума   Ответить с цитированием
Старый 22.10.2010, 14:59   #296
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Что за вызов сервиса itemp=OS_DI() в osa_qtimer.c
Он у меня отключает прерывания, еще не разобрался в какой ситуации, и не где его не включает.
Из моих функций я OS_DI() не где не вызываю.
Вроде бы это происходит в сервисе OS_Qtimer_Run, но в какой ситуации еще не выяснил
maxNTF вне форума   Ответить с цитированием
Старый 22.10.2010, 15:43   #297
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Возможно из за того, что я использую один и тот же дескриптор таймера?
То есть происходит следующее
Код:
OS_Qtimer_Run(mytmr1, 100);
//ля-ля-ля
OS_Qtimer_Run(mytmr1, 100);//при этом не факт, что был таймаут по предыдущему запуску
maxNTF вне форума   Ответить с цитированием
Старый 25.10.2010, 13:40   #298
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Держи исправленный файл.

Сервис OS_Qtimer_Run можно запускать два раза подряд (я и забыл совсем). При этом выполняется сперва его удаление из очереди, а потом добавление с новым значением. Так что лишние Break'и можно не ставить.

Сегодня выложу полное обновление на сайте (там еще PIC16 затрагивается).

Еще раз спасибо за помощь в поиске ошибок OSA!
Вложения
Тип файла: rar osa_qtimer.rar (2.3 Кб, 3 просмотров)
tester вне форума   Ответить с цитированием
Старый 25.10.2010, 23:28   #299
maxNTF
Senior Member
 
Регистрация: 12.07.2007
Возраст: 36
Сообщений: 908
Вес репутации: 287/57
maxNTF is a jewel in the roughmaxNTF is a jewel in the roughmaxNTF is a jewel in the rough
По умолчанию Re: Вопросы по OSA

Виктор такой вопросик.
Локальные переменные в функциях задач необходимо объявлять с квалификатором static чтобы данные не терялись.
Есть функция fun1 не являющеяся задачей, то есть не имеет сервисов переключающих контекст, но так сказать контекст у нее может забрать только прерывание, а в нем вызов сервиса OS_Timer() который наверняка использует какие то локальные данные. Не может это изменить локальные данные функции fun1?
maxNTF вне форума   Ответить с цитированием
Старый 26.10.2010, 10:36   #300
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Вопросы по OSA

Цитата:
Сообщение от maxNTF Посмотреть сообщение
Виктор такой вопросик.
Локальные переменные в функциях задач необходимо объявлять с квалификатором static чтобы данные не терялись.
Есть функция fun1 не являющеяся задачей, то есть не имеет сервисов переключающих контекст, но так сказать контекст у нее может забрать только прерывание, а в нем вызов сервиса OS_Timer() который наверняка использует какие то локальные данные. Не может это изменить локальные данные функции fun1?
Нет, не может. Если она и будет использовать локальные переменные, то только свои.
tester вне форума   Ответить с цитированием
Ответ

Метки
osa, rtos, сторожевой таймер


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все вопросы по MikroC shnitz Инструментарий 971 23.09.2016 13:22
Статья по RTOS OSA tester Продукция MICROCHIP 12 24.02.2009 12:04
16F690, вопросы по timer1 и встроенному 32кГц-генератору e_glu Продукция MICROCHIP 3 29.01.2009 17:14
Есть вопросы по алгоритму работы устройства на пике. 40grad Продукция MICROCHIP 9 27.10.2007 15:55
Пишу руководство по RS485 и есть вопросы pvl2000 Cетевые протоколы и технологии 2 16.04.2007 00:57


Часовой пояс GMT +3, время: 04:36.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot