Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено abivan 30 июня 2003 г. 16:15
В ответ на: Что делать? - Расслабиться... отправлено Михаил Евстафьев 30 июня 2003 г. 14:06

>1.Если одна задача долго не отает управления - то все другие задачи
>будут задержаны.
Да пусть они задерживаются на здоровье. Задержки начинают расти.
время как бы останавливается.

>2.Если система простаивает - то задержки будут отрабатываться
>правильно.
Да. И это понятно

>В целом же, кооперативная RTOS предполагает, что все задачи
>выполняются быстрее чем период системных часов. Вызывай из долгой
>задачи OS_Yield() почаще...
Это естественно решит проблему.

>Может я чего-то не понял в вопросе?
Попробую объяснить на примере.
Есть задача АЦП.
...
//Запуск АЦП
OS_Delay(D_500mS, ADCLabel20);
// чтение результата.
Так вот я хочу чтобы эта задержка была 500mS, а не 1.5 секунды.
Для этого я должен в существующей версии сальвы отдавать управление ядру каждый цикл таймера(2mS). А это существенно усложнит(затруднит) написание программы в виде вызовов процедур и функций. В общем это изменит мой стиль от которого не хотелось бы отказываться.
Например пишется функция обсчета датчика. Она может занимать время больше системного тика. Напрашивается вывод увеличить время системного тика. Тогда мы теряем в возможности отрабатывать небольшие задержки. Например при отправки посылки и получении ответа от некого внешнего устройства, которое может сформировать ответ лишь через 3mS.
а написав
OS_Delay(1+1, Labelxx);
при тике = 10mS я получу задержку от 10 до 20mS
если написать
OS_Delay(1, Labelxx);
то задержка вообще будет <10mS. И может случиться так, что и <3mS? а это не допустимо.

Как выше правильно заметил <Дисбалансер>
мне нужен сервис присутствующий в 3 версии сальвы
OsDelayTs да где ж ее взять то 3-ю сальву.

Вот я и думаю, мож сальву поправить или задержки меньше системного тика на цикле из нопов отработать и управление не отдавать.

В общем чего я хочу: Чтобы при написании задачи не особо задумываться сколько по времени она будет выполняться. И не втыкать везде где непоподя OS_Yield(). Наверное слишком много от кооп захотел, но аппетит он как известно во время еды приходит.
С уважением, Иван.



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

Ответы



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

E-mail: info@telesys.ru