<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Nevim co vam nefunguje podle predstav,
jen pro inspiraci - me se osvedcila kombinace poolingu a ISR.<br>
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. <br>
<br>
Dne 10.03.2016 v 23:01 Michal Grunt napsal(a):<br>
</div>
<blockquote
cite="mid:CACR8hZJ725ZKOMrUnk8O5DMALaNpt=JpBjnjMzNFE5YzspBEEw@mail.gmail.com"
type="cite">
<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
moz-do-not-send="true" href="mailto:konfera@efton.sk"><a class="moz-txt-link-abbreviated" href="mailto:konfera@efton.sk">konfera@efton.sk</a></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 moz-do-not-send="true"
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
moz-do-not-send="true" onclick="_e(event, 'cvml',
'konfera@efton.sk')" href="javascript:;"><a class="moz-txt-link-abbreviated" href="mailto:konfera@efton.sk">konfera@efton.sk</a></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 moz-do-not-send="true"
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 moz-do-not-send="true"
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
moz-do-not-send="true" onclick="_e(event, 'cvml',
'jaroslav.buchta@hascomp.cz')" href="javascript:;"><a class="moz-txt-link-abbreviated" href="mailto:jaroslav.buchta@hascomp.cz">jaroslav.buchta@hascomp.cz</a></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
moz-do-not-send="true" href="http://www.HW.cz" target="_blank"><a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a></a><br>
>> <a moz-do-not-send="true" onclick="_e(event, 'cvml',
'Hw-list@list.hw.cz')" href="javascript:;">Hw-list@list.hw.cz</a><br>
>> <a moz-do-not-send="true"
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
moz-do-not-send="true" href="http://www.HW.cz" target="_blank"><a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a></a><br>
><a moz-do-not-send="true" onclick="_e(event, 'cvml',
'Hw-list@list.hw.cz')" href="javascript:;">Hw-list@list.hw.cz</a><br>
><a moz-do-not-send="true"
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 moz-do-not-send="true"
href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a moz-do-not-send="true" onclick="_e(event, 'cvml',
'Hw-list@list.hw.cz')" href="javascript:;">Hw-list@list.hw.cz</a><br>
<a moz-do-not-send="true"
href="http://list.hw.cz/mailman/listinfo/hw-list"
target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<br>
</body>
</html>