[an error occurred while processing this directive]
Да все и не надо(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено abivan 09 августа 2002 г. 20:45
В ответ на: пользовал полгода назад... отправлено Михаил Евстафьев 09 августа 2002 г. 20:02

Нужно пока элементарное.
Вопросы можно позадавать? Можно в мыле, если другим не интересно.
1. есть у меня версия 2.2.0
пробую создать 4-ю задачу не получается код возврата 0xA

....
#define TASK1_P OSTCBP(1)
#define TASK2_P OSTCBP(2)
#define TASK3_P OSTCBP(3)
#define TASK4_P OSTCBP(4)

/* use _OSLabel() to create context-switching labels. */
_OSLabel(Task1a)
_OSLabel(Task2a)
_OSLabel(Task3a)
_OSLabel(Task4a)

...
// три нормально Dur=0, а 4-я dur=0xA
Dur =OSCreateTask(Task4, TASK4_P, 7);

подключил slp42Cab.LIB
salvocfg.h
#define OSUSE_LIBRARY TRUE
#define OSLIBRARY_TYPE OSL
#define OSLIBRARY_CONFIG OSA
#define OSLIBRARY_VARIANT OSB
#define OSTASKS 5
даже пробовал mem.c подключать.
что-то не пойму.
2.
Читая доку на 3 версию обнаружил макро замены одной задачи на другую
с тем же tcbP, а как это сделать в V2 не могу понять.
т.е. если я хочу
есть
task1{
...
for(;;){
OS_WaitBinSem(BSem_Key_P, KeyBoardLabel1);
if(Key1Pressed){
// сдесь я хочу в место задачи task1 запустить task2, и чтобы
// память не отводилась
// Просто написать OSCreateTask(task2, OScTcbP, PRIO_TASK2); return;
// в версии 2, не проходит
// Задача task2 не запускается
// OS_Replace(task2, PRIO_TASK2); // это макро V3 в нем вызывается
// OSCreateTask(task2, OScTcbP, PRIO_TASK2); return;
}
}
}
Использовать OS_Destroy не получилось не понял как потом
OSCreateTask(task2...) запустить
С уважением, Иван.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru