[an error occurred while processing this directive]
Ответ: это тебе пригодится в любом коммерческом проекте... Применительно к твоей задаче - если ты ничего не делаешь кроме чтения АЦП и расчета, то многозадачность тут действительно не нужна, ОДНАКО СИТУАЦИЯ МЕНЯЕТСЯ КОРЕННЫМ ОБРАЗОМ ЕСЛИ ТЕБЕ КРОМЕ ЭТОГО НУЖНО ДЕЛАТЬ ЕЩЕ ЧТО-ЛИБО, НАПРИМЕР ОТВЕЧАТЬ НА ЗАПРОСЫ ПО RS232...(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Допустим время обработки запроса 1...2сек, а тебе нужно считывать АЦП 100 раз в секунду, а между оцифровками производить расчет...
когда призойдет событие инициирующее обработку запроса, произойдет следующее
1. процедура расчета прервется
2. процессор будет занят обработкой запроса
3. оцифровок в это время (1...2сек) либо не будет совсем, либо они будут (по прерываниям), но не будет расчета (т.к. расчет прерван задачей обработки запроса)
Обмануть начальников, сказав что на самом деле моя программа всегда читает и делает расчет с частотой 100 smp/s не выйдет, т.к. если запросы с компьютера будут следовать один за другим без пауз, то основная задача, которую решает твой контроллер ВООБЩЕ НЕ БУДЕТ РЕШАТЬСЯ, т.к. ей будет отводится 5...10 секунд в час в лучшем случае, таким образом получаем вместо 360000 выборок твоя прога с сальвой (или вообще без ядра - разницы никакой) будет читать максимум 1000 выборок.
Результат - без вытесняющей многозадачности потеря составит 99% важной информации...
При использовании uCOS потеря составит 0% за счет уменьшения времени реакции на запрос по RS232 (это не критично)...
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Нда-а-а, пример показательный - ничего не скажешь... — mse (02.04.2003 14:47, 238 байт)
- Ответ: Дело не во вводе/выводе, он может быть и быстрым, а в том что если есть другие задачи, то чтобы они не отнимали процессор у основной задачи нужно придумывать гемор (расставлять по коду длительной задачи вызовы к разбитой на части основной задаче, высчитывать сколько времени выполняется участок кода, и т.д.)... работать то может и будет (если очень сильно постараться и иметь хороший опыт), но зачем весь этот гемор, если все это решается с помощью uCOS - легко, красиво и что самое главное переносимо и платформонезависимо - не нужно высчитывать время выполнения кусков кода (uCOS сам прервет задачу в нужное время), ломать голову с максимальной скоростью обработки прерывания (в uCOS просто освободил семафор и делов...), мучаться с расстановкой битов разрешения прерываний в зависимости от приоритета и потом бояться что какое-либо прерывание не обработается (в uCOS прерывания почти все время разрешены, запрещаются на очень короткий период...). Так что нужен uCOS или лучше с сальвой гемор зарабатывать? — SOIC (02.04.2003 15:30, пустое)
- Нда-а-а, пример показательный - ничего не скажешь... — mse (02.04.2003 14:39, 238 байт)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru