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

Отправлено proxy 22 апреля 2002 г. 16:05

Господа,кто-то в конфе уже поднимал подобный вопрос но тогда помоему общую стратегию никто не предложил.Вот и у меня встала похожая проблема.Фоновая задача имеет очень большой период ~1...2 секунды(инерционный обьект управления,накопление данных...),а реакцию устройства на команды с клавиатуры хотелось бы сделать как можно меньше.Если исполнять команды непосредственно в п/п сканирования то при возврате в фоновую задачу будет дорабатываться прерваный процесс(а состояние обьекта изменилось!)и будет принято не правильное решение в конце цикла.Если исполнять команды в конце цикла(что логично) то долго ждать.Самый правильный способ был бы наверное тот,при котором из п/п обработки клавиатуры выход был бы не в то место откуда пришёл из фона,а сразу в конец цикла где стоит исполнитель команд.Если этого не делать,придётся в каждой функции ставить проверку флага клавиатуры, и если флаг взведён идти мимо функции к концу цикла.Если функций несколько десятков становится тоскливо.На ассемблере нет никаких препятствий выполнить это в лоб модификацией стека ,а вот как на С? Может кто знает ещё какието решения поделитесь,плиз.

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

Ответы



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

E-mail: info@telesys.ru