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