<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Zdravím,</p>
<p>není to kus kodu pro vaši situaci, ale spíše jen příklad.</p>
<p>tímto nastavím timer0 do režimu fastPWM (pozor na kolizi s
Arduino knihovnami), výstup bude na pinu PD6 (OC0A)<br>
</p>
<p>void pwm_setup (){<br>
<br>
// Set to 'Fast PWM' mode<br>
TCCR0A |= (1 << WGM01) | (1 << WGM00); //nastavení
fastPWM režimu<br>
TCCR0A &=~(1<< COM0B0); <br>
TCCR0A &=~(1<< COM0B1); //OC0B je normální pin<br>
TCCR0A |= (1 << COM0A1); //Clear OC0A on compare match,
set OC0A at BOTTOM,(non-inverting mode).<br>
TCCR0B |= (1 << CS00); //CLK no prescaler<br>
}</p>
<p>čítač tak běží od 0 do 0xFF a v okamžiku kdy jeho hodnota
překročí hodnotu v OCR0A, tak pin OC0A přejde do jedničky,
nulováním čítače dojde i k nulování pinu OC0A.<br>
</p>
<p>nastavení činitele plnění provedete v OC0A:<br>
</p>
<p>void pwm_set(uint8_t pwm_val){<br>
if (pwm_val < PWMMIN){ pwm_val=PWMMIN;}<br>
if (pwm_val > PWMMAX){ pwm_val=PWMMAX;}<br>
OCR0A=pwm_val;<br>
}</p>
<p>TAkže pokud máte Atmegu328 taktovanou na 16MHz, a ve fuse máte
vypnutý předdělič 8, tak teoreticky jste schopen mít na výstupu
cca 62kHz. Pokud potřebujete frekvenci jen hrubě, tak můžete volit
vhodný předdělič.</p>
<p>Pokud ji potřebujete přesně, tak je cesta přes režim, kdy se
nepočítá až do 0xFF, ale do předdefinované hodnoty. Tenhle příklad
ale po ruce nemám.</p>
<p>Stačí takto?</p>
<p><br>
</p>
<p>Petr<br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">Dne 31. 07. 23 v 14:14 Martin Záruba
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:fcf26f71-ec77-e394-6dc5-0c480122e594@volny.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p><font face="Arial">No fajn, holt už jsem starý a blbý. Můžete
napsat konkrétní příklad jak to udělat? Co a kam zadat aby na
nějakém pinu to generovalo PWM s (alespoň přibližně)
požadovanou frekvencí a střídou?</font><br>
</p>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<div class="moz-cite-prefix">Dne 30.7.2023 v 22:31 Petr Labaj
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:489fda51-e5f1-c639-9fd9-689b4e1c09de@volny.cz">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
Co furt máte s nějakým nastavováním bitu?<br>
Přece čítač tohle umí sám. Od toho je čítačem, je to jeho práce
a poslání.<br>
Třeba tady obrázek úplně základního nastavení čítače AVR.<br>
Jeden registr udává základní opakovací frekvenci, druhý registr
říká, jak dlouhý bude pulz.<br>
Funguje to samo, pokud nepotřebuju délku pulzu měnit.<br>
<br>
PL<br>
<br>
*********************<br>
<br>
<br>
<div class="moz-cite-prefix">Dne 30.7.2023 v 22:15 Martin Záruba
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:e1b90fc6-cdee-c6e9-8a7c-01febc914465@volny.cz">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<p><font face="Arial">No a jak jinak nastavit příslušný bit?</font></p>
</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" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></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>