реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
Harvester
сообщение Feb 1 2011, 09:04
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Добрый день.

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


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 2 2011, 05:24
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Это же хорошо, что тик равен 10 мс. Делайте в задаче OSTimeDly(1) и в цикле Touch_Exec(). А приоритет выставьте повыше, чтобы не глючило. В прерывании делать скорее всего не стоит - посмотрите что там делается внутри. Если там какая-то более-менее сложная логика или системные вызовы, например ожидание семафора, то получится очень плохо.
Go to the top of the page
 
+Quote Post
Harvester
сообщение Feb 2 2011, 06:49
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Цитата(andrewlekar @ Feb 2 2011, 08:24) *
... А приоритет выставьте повыше, чтобы не глючило.

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

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


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Feb 2 2011, 09:23
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Ну дело ваше. Если в Touch_Exec ничего хитрого не делается - просто считается что-то, то смело вызывайте из прерывания. Тут такая фича, что прерывание будет в любом случае более приоритетно, чем ваши "более приоритетные" задачи. Почему в таком случае не сделать этот вызов из задачи с хорошим приоритетом?
Go to the top of the page
 
+Quote Post
Harvester
сообщение Feb 2 2011, 09:40
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



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

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


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 13:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016