[an error occurred while processing this directive] [an error occurred while processing this directive]
Внедрение uCOS-2 - для AndyMozzevilov'a и не только(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Romario 19 августа 2001 г. 17:01

Смысл вопроса: как синхронизировать действия ISR и Task
;---------------------------------------------------------------
Есть Задача (T), которая анализирует сигнал(S) от некоего железа(h/w),
который устанавливается в ISR. T в априори должна работать так:
1) Настройка h/w используя S.
2) h/w настроена.
3) Заснуть и ждать S.
4) Если есть S, проснуться и goto 1).

Средствами uCOS:
если использовать TaskSuspend после 2), a в ISR TaskResume то неполучается - S может возникнуть после 2) и до 3) - T заснет навечно.

Вариант:
после 2) установить на вектор ISR другую ISR где есть процедура
SemPost, а 3) заменить на процедуру SemPend. Процесс замены ISR
можно "обрамить" OS_ENTER/EXIT CRITICAL, так что потеря INT н%

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru