Перейти к содержанию
    

Захват/освобождение мьютексов

Приветствую. Позволяет ли FreeRTOS такое, что захват мьютекса происходит в задаче, а освобождение - в прерывании? Например, я в задаче захватываю мьютекс, защищающий АЦП и запускаю преобразование. Затем в прерывании я читаю значение преобразования и освобождаю мьютекс. Прокатит ли такое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую. Позволяет ли FreeRTOS такое, что захват мьютекса происходит в задаче, а освобождение - в прерывании? Например, я в задаче захватываю мьютекс, защищающий АЦП и запускаю преобразование. Затем в прерывании я читаю значение преобразования и освобождаю мьютекс. Прокатит ли такое?

прокатит -- смотрите описание функции

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость nill

В описании на xSemaphoreGiveFromISR сказано следующее:

Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) must not be used with this macro.
Так что используйте бинарный семафор. Там же приводтся нужный Вам пример использования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

nill, спасибо за совет. Действительно, оказывается мьютексы нельзя использовать из прерываний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...