Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: eCos alarm cyg_thread_delay
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
grishkin
В функции обработчике события от будильника нужно сделать задержку, cyg_thread_delay не работает, есть ли ещё вызовы с помощью которых можно сделать задержку?
axle
Цитата(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 и естественно потоки. Лучше в обработчике будить какой-нибудь поток и в нем уже выполнять всю работу.
grishkin
Цитата(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 и естественно потоки. Лучше в обработчике будить какой-нибудь поток и в нем уже выполнять всю работу.


Спасибо. А то я начал делать всю обработку в обработчике будильника.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.