klen 1 19 декабря, 2010 Опубликовано 19 декабря, 2010 · Жалоба в общес задача стоит в нормальной работе с UART по приему. сделано чтение из UART по DMA в его буффер. фактически выборка данных происходит в задачке которая спит, по прерыванию DMA о заполненении буфера она разблокируется выполнет чтение из буффера DMA и опять блокируется до следущего прерывания DMA. проблема, если пришли данные размером менее чем буффер DMA и больее ничего не падает на UART то DMA послушно ждет остатака данных . их долго нет и возмоно не будет. задача заблокирован и соответственно данные застряли. хочется задачу не блокировать а дать ей задержку . тоесть если таймаут истек то выгрести хотябы все что нападало. если DMA смогло раньше заполнть буфер то то что описано выше. отсюда вопрос - есть ли штатная возможнось сказать задаче vTaskDelay(X), а замем выдернуть ее из этого состояния раньше чем истечет таймаут. Очень желательно чтоб еще можнобылобы узнать как из задержки вышла задача - по таймауту иди по выдергиыванию. смотрю в исходники freertos, можно это дописать но вдруг я чето не догоняю то что я хочу можно сделать не напрягаясь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 19 декабря, 2010 Опубликовано 19 декабря, 2010 · Жалоба чето я перенапрягся наверно - можно ведь очередь (семафор) для формальной организации событий - она мне и даст два события - выход по таймауту или выход по прерыванию DMA. тема закрыта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 19 декабря, 2010 Опубликовано 19 декабря, 2010 · Жалоба проблема, если пришли данные размером менее чем буффер DMA и больее ничего не падает на UART то DMA послушно ждет остатака данных . их долго нет и возмоно не будет. задача заблокирован и соответственно данные застряли. Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Я бы посоветовал отказаться от DMA для UART: делай лучше очередь из байтной очереди и наполняй ее в прерывании RX. да тогда все колом встанет на 4 мегабитах, неа..... это глупо имея DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться