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

 
 
> Двоичный семафор, ядро Cortex-M3
MiG-3
сообщение Apr 8 2013, 05:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 23-01-12
Пользователь №: 69 823



Добрый день!
Возникла проблемка, которую пока не могу решить. Может кто-то с такой сталкивался.
Пока код не буду постить.
Делаю прием данных из UARTa в оброботчике прерывания. По приему всего пакета отдаю из обработчика двоичный семафор в задачу. В задаче принимаю семафор с ограниченным ожиданием. Все работает нормально, но через какое-то время (1 час, 12 часов, сутки - по разному) происходит зависон задачи. Из отладки выяснил, что этот двоичный семафор не ждет ни прием семафора, ни отдачи, его длинна 1 элемент. Т.е., как я понимаю, он уже получил из обработчика прерывания семафор, но отдавать в задачу не хочет (даже по таймауту задача не продолжается). Что это??? Как это???
Т.е. вроде все класически, но...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Apr 9 2013, 08:45
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(MiG-3 @ Apr 8 2013, 08:16) *
Делаю прием данных из UARTa в оброботчике прерывания. По приему всего пакета отдаю из обработчика двоичный семафор в задачу. В задаче принимаю семафор с ограниченным ожиданием.

FreeRTOS не использую. Но - зачем ограниченное ожидание? Если семафора нет, нечего делать в задаче. Поставьте бесконечное ожидание.
Go to the top of the page
 
+Quote Post
MiG-3
сообщение Apr 11 2013, 12:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 23-01-12
Пользователь №: 69 823



Цитата(ViKo @ Apr 9 2013, 12:45) *
FreeRTOS не использую. Но - зачем ограниченное ожидание? Если семафора нет, нечего делать в задаче. Поставьте бесконечное ожидание.


Проблема решилась - именно приоритет прерывания, если из него есть вызовы функции API оси. Теперь почему не бесконечное ожидание семафора. Тут просто в коде задачи не хватает строчек для WDT. Т.е. задача переодически должна говорить, что она не зависла.
Go to the top of the page
 
+Quote Post



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

 


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


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