Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выдернуть задачу из состояния задержки по таймауту
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
klen
в общес задача стоит в нормальной работе с UART по приему. сделано чтение из UART по DMA в его буффер. фактически выборка данных происходит в задачке которая спит, по прерыванию DMA о заполненении буфера она разблокируется выполнет чтение из буффера DMA и опять блокируется до следущего прерывания DMA.

проблема, если пришли данные размером менее чем буффер DMA и больее ничего не падает на UART то DMA послушно ждет остатака данных . их долго нет и возмоно не будет. задача заблокирован и соответственно данные застряли.

хочется задачу не блокировать а дать ей задержку . тоесть если таймаут истек то выгрести хотябы все что нападало. если DMA смогло раньше заполнть буфер то то что описано выше.

отсюда вопрос - есть ли штатная возможнось сказать задаче vTaskDelay(X), а замем выдернуть ее из этого состояния раньше чем истечет таймаут. Очень желательно чтоб еще можнобылобы узнать как из задержки вышла задача - по таймауту иди по выдергиыванию.

смотрю в исходники freertos, можно это дописать но вдруг я чето не догоняю то что я хочу можно сделать не напрягаясь
klen
чето я перенапрягся наверно - можно ведь очередь (семафор) для формальной организации событий - она мне и даст два события - выход по таймауту или выход по прерыванию DMA.

тема закрыта.
kan35
Цитата(klen @ Dec 19 2010, 20:26) *
проблема, если пришли данные размером менее чем буффер DMA и больее ничего не падает на UART то DMA послушно ждет остатака данных . их долго нет и возмоно не будет. задача заблокирован и соответственно данные застряли.

Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX.
klen
Цитата(kan35 @ Dec 19 2010, 22:01) *
Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX.

да тогда все колом встанет на 4 мегабитах, неа..... это глупо имея DMA.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.