Jump to content

    

uC/GUI - обработка тачскрина и RTOS

Добрый день.

 

Подскажите пожалуйста, как выполнить периодический вызов функции GUI_Touch_Exec() при наличии RTOS. В доке на uC/GUI рекомендуется вызывать эту функцию 100 раз в сек, используя отдельную задачу. Меня смущает то, что период системного тика у меня равен тем же 10 мс. Не получится ли так, что более приоритетные задачи "забьют" обработчик тачскрина? Может лучше вызывать эту функцию в отдельном таймерном прерывании?

 

Share this post


Link to post
Share on other sites

Это же хорошо, что тик равен 10 мс. Делайте в задаче OSTimeDly(1) и в цикле Touch_Exec(). А приоритет выставьте повыше, чтобы не глючило. В прерывании делать скорее всего не стоит - посмотрите что там делается внутри. Если там какая-то более-менее сложная логика или системные вызовы, например ожидание семафора, то получится очень плохо.

Share this post


Link to post
Share on other sites
... А приоритет выставьте повыше, чтобы не глючило.

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

В прерывании делать скорее всего не стоит - посмотрите что там делается внутри.

В прерывании просто тикают различные счетчики. Это прерывание используется для формирования интервалов с дискретностью много меньшей системного тика (500 мкс).

 

Share this post


Link to post
Share on other sites

Ну дело ваше. Если в Touch_Exec ничего хитрого не делается - просто считается что-то, то смело вызывайте из прерывания. Тут такая фича, что прерывание будет в любом случае более приоритетно, чем ваши "более приоритетные" задачи. Почему в таком случае не сделать этот вызов из задачи с хорошим приоритетом?

Share this post


Link to post
Share on other sites
Ну дело ваше. Если в Touch_Exec ничего хитрого не делается - просто считается что-то, то смело вызывайте из прерывания. Тут такая фича, что прерывание будет в любом случае более приоритетно, чем ваши "более приоритетные" задачи. Почему в таком случае не сделать этот вызов из задачи с хорошим приоритетом?

Как-то не пришло в голову :laughing: Пожалуй, так и сделаю.

Спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this