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

 
 
> eCos alarm cyg_thread_delay, сделать задержку
grishkin
сообщение Mar 14 2008, 14:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 22-01-08
Пользователь №: 34 302



В функции обработчике события от будильника нужно сделать задержку, cyg_thread_delay не работает, есть ли ещё вызовы с помощью которых можно сделать задержку?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
axle
сообщение Mar 14 2008, 15:30
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(grishkin @ Mar 14 2008, 20:37) *
В функции обработчике события от будильника нужно сделать задержку, cyg_thread_delay не работает, есть ли ещё вызовы с помощью которых можно сделать задержку?

cyg_thread_delay в контексте DSR вызывать нельзя. А именно в нем вызывается обработчик будильника если он завязан с системным таймером. Я так понимаю, что раз cyg_thread_delay не работает, то в качестве счетчика используется системный таймер.

Для задержки в DSR можно использовать CYGACC_CALL_IF_DELAY_US() или HAL_DELAY_US(). Задержка в микросекундах.

Но вообще-то не рекомендую делать задержку в DSR (тем более такую большую как при cyg_thread_delay). Пока работает эта задержка не будут выполнятся другие DSR и естественно потоки. Лучше в обработчике будить какой-нибудь поток и в нем уже выполнять всю работу.
Go to the top of the page
 
+Quote Post
grishkin
сообщение Mar 15 2008, 10:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 22-01-08
Пользователь №: 34 302



Цитата(axle @ Mar 14 2008, 18:30) *
cyg_thread_delay в контексте DSR вызывать нельзя. А именно в нем вызывается обработчик будильника если он завязан с системным таймером. Я так понимаю, что раз cyg_thread_delay не работает, то в качестве счетчика используется системный таймер.

Для задержки в DSR можно использовать CYGACC_CALL_IF_DELAY_US() или HAL_DELAY_US(). Задержка в микросекундах.

Но вообще-то не рекомендую делать задержку в DSR (тем более такую большую как при cyg_thread_delay). Пока работает эта задержка не будут выполнятся другие DSR и естественно потоки. Лучше в обработчике будить какой-нибудь поток и в нем уже выполнять всю работу.


Спасибо. А то я начал делать всю обработку в обработчике будильника.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 05:54
Рейтинг@Mail.ru


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