[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Задача ждет а прерывание постит. И ничего не может быть красивее. Именно для этого бинарные семафоры и предназначены. Так что не надо и искать.
Если система может находиться в двух состояниях, когда надо запускать задачу или нет, то устроить обход OSSemPost в обработчике прерывания простой проверкой условия. Подмена обработчика дает тот же эффект. Разве что можно немного выиграть по скорости.
Если нужно передавать данные от ISR к Task то для этого есть MailBox. Если события могут происходить чаще, чем их успевает обработать Task, то подойдет очередь (Queue) и динамическое выделение памяти под хранение информации о каждом событии (в UCOS-II есть динамическое выделение без фрагментации, но можно и стандартный malloc пользовать).
Флаги предназначены для пробуждения задачи по совокупности условий. Т.е. возможно пробуждение когда произошло одно из множества событий, либо все одновременно. Для описанной задачи это перебор.
IMHO
E-mail: info@telesys.ru