<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="Arial">Dík. Přesně tak jsem to myslel. Já dokáži
        lecos vymyslet "logikou", ale byl jsem přesvědčen, že to je
        úloha pro někoho, kdo ovládá matematiku mnohem lépe, než já. A
        uvidí v tom "krásno", jako já vidím v zajímavém návrhu obvodu.</font><br>
    </p>
    <pre class="moz-signature" cols="72">Martin Záruba</pre>
    <div class="moz-cite-prefix">Dne 18.7.2024 v 17:59 Miroslav Mraz
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:fc386e15-3f62-4816-ac39-4dac821a937d@volny.cz">Vracím se
      k původnímu zadání. Původně mi to připadalo jako blbost, protože
      dostatečně jednoduché vzorce pro toto zadání nalézt nejde.
      <br>
      Ale existuje na to algoritmus pomocí řetězového zlomku, který to
      řeší postupnými iteracemi poměrně efektivně. Je poněkud
      neprůhledný, ale včera se mi povedlo najít zajímavý klon, který
      neprůhlednost vylepšuje tím, že složitost zamete do symboliky -
      všechna ta kouzla, která se s daty v iteracích používají se vejdou
      do násobení 2 matic.
      <br>
      Ono to sice nic neřeší, ale je to "hezké". Obojí je v příloze. V
      C-čku to bylo lepší napsat rekurzívně, násobení matic je třeba
      udělat v C++.
      <br>
      A opravdu statistika ukazuje, že je tím možné PWM významně
      vylepšit. Střední odchylka od reálné hodnoty se zmenší zhruba o
      řád, i když jsou reálná čísla, která aproximaci dost odolávají.
      Ale vždy je to lepší než prosté zaokrouhlování. Na druhou stranu
      je to jen čistě teoretická metoda, prakticky to počítat v reálném
      čase na malém procesoru a zároveň brát v úvahu, že se tím dost
      mění časy vzorkování signálu je asi blbost. Ale snad se to může
      hodit jinde.
      <br>
      <br>
      Mrazík
      <br>
      <br>
      <br>
      On 14. 07. 24 14:02, Martin Záruba wrote:
      <br>
      <blockquote type="cite">Obráceně. Y bude v intervalu 1 - 100. Asi
        jsem to napsal blbě, Z ~ Y/X.
        <br>
        <br>
        Jasně, takto cyklem to určitě půjde.
        <br>
        <br>
        Dělit lze cokoli čímkoli, celočíselně i float.
        <br>
        <br>
        Já doufal, že by šlo najít vzorce, kde jestliže zadám Z, získám
        odpovídající X a Y, kde jediná podmínka je, že X musí bý 50 ..
        100
        <br>
        <br>
        Jen na vsvětlení, co jsem si to vymyslel: Potřebuji udělat PWM
        na cca 160 kHz na ATMega, kde hodiny jsou na 16MHz. Tím mi
        vychází na celou periodu 100 kroků. Pokud se pohybuji v horní
        části (pulz je dostatečně dlouhý) je krok změny PWM dostatečně
        jemný. Ale na dolním konci, kdy poměr ON-OFF je třeba 1:10 je
        velký rozdíl mezi 10 a 11. Proto jsem hledal řešení, kde
        například (raději jemněji) 10.5 lze získat jako 84 / 8, tedy Y =
        84; X = 8;
        <br>
        <br>
        Martin Záruba
        <br>
        <br>
        <br>
      </blockquote>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-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>
  </body>
</html>