STM32F103, USART RX - DMA

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Březen 11 08:22:22 CET 2016


Nevim co vam nefunguje podle predstav, jen pro inspiraci - me se 
osvedcila kombinace poolingu a ISR.
Nastavim kruhovy buffer a preruseni od HT i TC. S nejakou periodou 
testuju, jestli neprislo par znaku, prubezne zpracovavam (cca 10-100ms 
podle potreb). Pokud dojde k hromadnejsimu prenosu, ktery olizovanim 
nechytnu, mam preruseni v okamziku, kdy je jeste nejmene pulka bufferu 
prazdna a prichozi data okamzite zpracovavam.

Dne 10.03.2016 v 23:01 Michal Grunt napsal(a):
>
> Děkuji za odpověď. Trochu blíže jsem to prozkoumal a zase jsem o něco 
> chytřejší a pomohlo mi to. Sice mi to nefunguje tak jak potřebuji, ale 
> to už je jiný druh problému a bufferu se to netýká.
>
> MG
>
>
> Dne pondělí 7. března 2016 Jan Waclawek <konfera na efton.sk 
> <mailto:konfera na efton.sk>> napsal(a):
>
>     Nerozumiem v com je problem, ved to *je* kruhovy buffer
>     (http://www.mikrozone.sk/pluginy/userjournals_menu/userjournals.php?blog.53
>     :-) ), len namiesto head pointra/indexu je hardware, ale funkcia tail
>     pointera/indexu ostava taka aka predtym...
>
>     >Ale pokud
>     >bude zpracování dat trvat déle (stát se to mù¾e), mù¾e to pøetéci
>     >(obìhnout dokola) a pak nevím jak to zdetekovat...
>
>     No, odmerajte si tu dobu timerom. Je to sice prisnejsie kriterium,
>     ale to
>     nemusi vadit.
>
>     Druha moznost je pouzit HTIFx/TCIFx flagy - pri spracovani ich
>     vynulovat, a
>     ak pri nasledujucom spracovani su oba nastavene, tak je mozne ze
>     nastalo
>     pretecenie. Je to tiez zbytocne prisne kriterium a v
>     najnepriaznivejsom
>     pripade znamena falosnu indikaciu pri polovicnom pocte bytov nez je
>     buffer, ale tiez to moze byt pre nejaku konkretnu aplikaciu adekvatne.
>
>     Pochopitelne obe metody sa daju kombinovat.
>
>
>
>     wek
>
>
>
>     >Zdravím,
>     >vytvoøil jsem si kruhový buffer. Je mi jasný, ¾e
>     >DMA_GetCurrDataCounter(DMA1_Channel5) (usart1/RX) vrací poèet
>     >prázdných míst (jak pí¹ete... mám to zdebugované tak¾e vím jak se to
>     >chová), ale dále u¾ se v tom trochu ztrácím a nevím jak z toho ven.
>     >Potøebuji z kruhového bufferu vyèíst èást dat (budu z nìho èíst po
>     >blocích) a po zpracování tìchto dat z nìho vyèíst dal¹í èást dat,
>     >která bude navazovat na tu pøedchozí èást. Jenom¾e v tu dobu se
>     buffer
>     >nejspí¹ doplní (po tu dobu co budu data zpracovávat) a celý se to
>     >"posune"  a nevím jak najít konec toho pøedchozího bloku, abych mohl
>     >zaèít èist ten následující... Snad uchovat si pozici toho NTDR nebo
>     >spí¹ pøímo index pole a od toho pak zaèít èist druhý blok? Ale pokud
>     >bude zpracování dat trvat déle (stát se to mù¾e), mù¾e to pøetéci
>     >(obìhnout dokola) a pak nevím jak to zdetekovat...
>     >
>     >MG
>     >
>     >Dne 15. ledna 2016 9:51 Jan Waclawek <konfera na efton.sk
>     <javascript:;>> napsal(a):
>     >> Rx USART je predsa zdroj dat, t.j. on ich zapisuje.
>     >> Citate ich na zaklade polohy head indexu, t.j. NDTR. Treba mat
>     na pamati,
>     >> ze to nie je priamo index, ale "pocet prazdnych miest", t.j. je
>     od 1 do N
>     >> nie od 0 do N-1.
>     >>
>     >> Ak by ste implementovali opacny smer tak zase pisete na zaklade
>     obsahu NDTR
>     >> a cita uz hardware.
>     >>
>     >> Ma to take gotcha nuancy typu ze update NDTR neprebieha presne
>     v tom poradi
>     >> ako pise appnote (co je bohuzial jediny zdroj podrobnejsich
>     informacii),
>     >> ale ak pouzivate "kniznice" alebo neoptimalizovany kod, tak sa to
>     >> neprejavi. Detaily/okolnosti si nepamatam, ja som s tym problem
>     nemal,
>     >> musel by som vyhrabavat z fora.
>     >>
>     >> Nijako sa to nelisi od bezneho kruhoveho buffera, akurat ze
>     jeden smer je
>     >> obhospodarovany hardwarom.
>     >>
>     >> wek
>     >>
>     >> ----- Original Message ---------------
>     >>
>     >> Subject: Re: STM32F103, USART RX - DMA
>     >>    From: Michal Grunt <michal.grunt na gmail.com <javascript:;>>
>     >>    Date: Fri, 15 Jan 2016 09:37:31 +0100
>     >>      To: HW-news <hw-list na list.hw.cz <javascript:;>>
>     >>
>     >>>A jak zapí±u data do kruhového bufferu bez pøeru±ení?
>     >>>
>     >>>Dne 14. ledna 2016 12:45 Jaroslav Buchta
>     <jaroslav.buchta na hascomp.cz <javascript:;>> napsal(a):
>     >>>> jde to, muzete periodicky cist, kolik znaku DMA preneslo.
>     kdyz udelate
>     >>>> buffer kruhovy, nemusiite se jinak o nej uz starat vubec.
>     >>>> Dne 14.01.2016 v 11:52 Michal Grunt napsal(a):
>     >>>>>
>     >>>>> Zdravím, DMA jsem je±tì nepouµíval tak se chci zeptat zda je
>     nutné
>     >>>>> pouµívat i pøeru±ení... Pøedstava je taková, µe mám dva
>     buffery. Do
>     >>>>> jednoho se kopírují data z RX USART z druhého se ète v
>     hlavní smyèce
>     >>>>> programu. Kdyµ se buffer z UARTu naplní zaène se plnit druhý
>     a ten
>     >>>>> první se pouµije a naopak. Ale je neµádoucí hlavní smyèku
>     programu
>     >>>>> pøeru±ovat, protoµe tam potøebuju mít stálý tok dat hlavnì v
>     úseku kde
>     >>>>> se bude vyprazdòovat buffer... Bude to takto fungovat? Nebo
>     je DMA
>     >>>>> trochu komplikovanìj±í?
>     >>
>     >> _______________________________________________
>     >> HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     >> Hw-list na list.hw.cz <javascript:;>
>     >> http://list.hw.cz/mailman/listinfo/hw-list
>     >_______________________________________________
>     >HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     >Hw-list na list.hw.cz <javascript:;>
>     >http://list.hw.cz/mailman/listinfo/hw-list
>     _______________________________________________
>     HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     Hw-list na list.hw.cz <javascript:;>
>     http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160311/f2e7c2b0/attachment.html>


Další informace o konferenci Hw-list