Jump to content

    
Sign in to follow this  
Harvester

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

Recommended Posts

Добрый день.

 

Подскажите пожалуйста, как выполнить периодический вызов функции 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this