Jump to content

    
Sign in to follow this  
klen

Выдернуть задачу из состояния задержки по таймауту

Recommended Posts

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

 

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

 

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

 

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

 

смотрю в исходники freertos, можно это дописать но вдруг я чето не догоняю то что я хочу можно сделать не напрягаясь

Share this post


Link to post
Share on other sites

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

 

тема закрыта.

Share this post


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

Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX.

Share this post


Link to post
Share on other sites
Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX.

да тогда все колом встанет на 4 мегабитах, неа..... это глупо имея DMA.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this