<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>