Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: uC/GUI - обработка тачскрина и RTOS
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > uC/OS-II
Harvester
Добрый день.

Подскажите пожалуйста, как выполнить периодический вызов функции GUI_Touch_Exec() при наличии RTOS. В доке на uC/GUI рекомендуется вызывать эту функцию 100 раз в сек, используя отдельную задачу. Меня смущает то, что период системного тика у меня равен тем же 10 мс. Не получится ли так, что более приоритетные задачи "забьют" обработчик тачскрина? Может лучше вызывать эту функцию в отдельном таймерном прерывании?
andrewlekar
Это же хорошо, что тик равен 10 мс. Делайте в задаче OSTimeDly(1) и в цикле Touch_Exec(). А приоритет выставьте повыше, чтобы не глючило. В прерывании делать скорее всего не стоит - посмотрите что там делается внутри. Если там какая-то более-менее сложная логика или системные вызовы, например ожидание семафора, то получится очень плохо.
Harvester
Цитата(andrewlekar @ Feb 2 2011, 08:24) *
... А приоритет выставьте повыше, чтобы не глючило.

В том то и дело, что есть намного более приоритетные задачи, которые выполняются по каждому тику.
Цитата(andrewlekar @ Feb 2 2011, 08:24) *
В прерывании делать скорее всего не стоит - посмотрите что там делается внутри.

В прерывании просто тикают различные счетчики. Это прерывание используется для формирования интервалов с дискретностью много меньшей системного тика (500 мкс).
andrewlekar
Ну дело ваше. Если в Touch_Exec ничего хитрого не делается - просто считается что-то, то смело вызывайте из прерывания. Тут такая фича, что прерывание будет в любом случае более приоритетно, чем ваши "более приоритетные" задачи. Почему в таком случае не сделать этот вызов из задачи с хорошим приоритетом?
Harvester
Цитата(andrewlekar @ Feb 2 2011, 12:23) *
Ну дело ваше. Если в Touch_Exec ничего хитрого не делается - просто считается что-то, то смело вызывайте из прерывания. Тут такая фича, что прерывание будет в любом случае более приоритетно, чем ваши "более приоритетные" задачи. Почему в таком случае не сделать этот вызов из задачи с хорошим приоритетом?

Как-то не пришло в голову laughing.gif Пожалуй, так и сделаю.
Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.