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

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

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

 

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

 

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

 

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

 

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

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


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

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

 

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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