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