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