<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=58&amp;t=13471&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-08T20:33:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=13471&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-11-08T20:33:24+01:00</updated>
<published>2015-11-08T20:33:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144852#p144852</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144852#p144852"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144852#p144852"><![CDATA[
Witam<br /><div class="quotetitle">pipu123 napisał(a):</div><div class="quotecontent"><br />D.dlaczego dzielimy przez licznik timera 8 bitowego= 255 ??<br /></div><br />Ja może zacznę w drugą stronę:<br />W trybie PWM mamy dwa elementy ( czy jak by to nazwać ):częstotliwość i wypełnienie.<br />Dla poj. PWM częstotliwość jaką oko przyjmie za świecenie można przyjąć 40Hz ( jeśli więcej kanałów to 40Hz * liczba kanałów).<br />Teraz każdy takt można wypełnić sygnałem od 0 taktów świecenia/255 zgaszenia do 255_ON/0_OF; czyli mamy 4kanały * 40Hz * 255 =(ok) 40 000Hz.<br />Różnica pomiędzy świeceniem w multipleksowaniu a PWM polega na tym, że w PWM'ie masz wpływ jak długo w swojej jednostce czasu ma coś świecić ( w multipleksowaniu tylko decydujesz czy świeci)<br /><div class="quotetitle">pipu123 napisał(a):</div><div class="quotecontent"><br />F. W książce użyto w kodzie porty: PD2, PD6, PD7, PC0, PC1, PC2 do komunikacji z diodami.<br />Czy należy ich użyć, czy są one przypadkowe ?<br /></div><br />Jakbyś dokładnie poszperał w rzeczonej książce, to autor wyraźnie zaznacza że specjalnie &quot;miesza w PORT'ach&quot; aby uświadomić o ich dowolności.<br />Wiadomo że chodzi tu o porty do których możemy się dobrać, bo jeśli chodzi o funkcje sprzętowe tych portów to tu już trzeba stosować się do noty.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 8 lis 2015, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2015-11-08T18:16:08+01:00</updated>
<published>2015-11-08T18:16:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144827#p144827</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144827#p144827"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144827#p144827"><![CDATA[
No dobra po wiem bardziej dosłownie kiedy jeszcze cały kod nie był wstawiony to ja wtedy pisałem jeszcze posta, dopiero po paru chwilach od napisania mojego postu edytowałeś go i poprawnie wstawiłeś kod. Mój post napisany został o 14:37 a ty edytowałeś swój o 14:46. Teraz jest wszystko ok.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 8 lis 2015, o 18:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pipu123]]></name></author>
<updated>2015-11-08T16:30:59+01:00</updated>
<published>2015-11-08T16:30:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144810#p144810</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144810#p144810"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144810#p144810"><![CDATA[
Cytuję &quot; Popraw wstawianie kodu. &quot; proszę napisać który fragment kodu.  Nie wiem w którym miejscu mam zmienić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9468">pipu123</a> — 8 lis 2015, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2015-11-08T16:00:04+01:00</updated>
<published>2015-11-08T16:00:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144809#p144809</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144809#p144809"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144809#p144809"><![CDATA[
Tak to te piny. Kiedy pisałem posta jeszcze nie poprawiłeś. <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 8 lis 2015, o 16:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pipu123]]></name></author>
<updated>2015-11-08T14:50:35+01:00</updated>
<published>2015-11-08T14:50:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144802#p144802</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144802#p144802"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144802#p144802"><![CDATA[
Dziękuję za chęci. <br />Celowo dopisałem litery na początku pytań. Proszę odpisać z podaniem litery na początku np. A. ...<br />G.  Czy Piny w pwm sprzętowym to ? <br /> *     OC0 -&gt; PB3  timer0  8bit<br /> *     OC2 -&gt; PD7 timer1   8bit<br /> *     OC1A -&gt; PD5  OC1B -&gt; PD4 timer1 16bit<br />Cytuję &quot; Popraw wstawianie kodu. &quot; proszę napisać który fragment kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9468">pipu123</a> — 8 lis 2015, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2015-11-08T14:37:35+01:00</updated>
<published>2015-11-08T14:37:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144800#p144800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144800#p144800"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144800#p144800"><![CDATA[
Ilość sprzętowych kanałów pwm jest napisana w nocie czyli np: 3x 8bit pwm. Powinno być 256 nie 200 tak jak piszesz. Żeby uzyskać częstotliwość przerwania 40khz to trzeba wpisać do rejestry tcnt  56. Tworzysz 8 bitowy pwm 8bit = 1=256 więc te 40khz musisz jeszcze podzielić przez 256. 40khz - częstotilwość timera 156hz-częstotliwość pwm. W programowym pwm możesz użyć pinu jaki ci się podoba, ale w pwm sprzętowym musisz skorzystać z pinu który jest do tego przystosowany. Popraw wstawianie kodu. Sorry nie mam talentu do tłumaczenia, ale się staram <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 8 lis 2015, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pipu123]]></name></author>
<updated>2015-11-08T14:37:07+01:00</updated>
<published>2015-11-08T14:37:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144799#p144799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144799#p144799"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144799#p144799"><![CDATA[
Poprawiłem. Jeszcze coś poza syntax=C mam poprawić ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9468">pipu123</a> — 8 lis 2015, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-11-08T14:11:26+01:00</updated>
<published>2015-11-08T14:11:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144795#p144795</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144795#p144795"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144795#p144795"><![CDATA[
<strong><span style="color: #FF0000">Albo się stosujecie do zaleceń i poprawiacie kody , albo dostajecie po warnie i kasuję posty .......<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><br /><br />SunRiver</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 lis 2015, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pipu123]]></name></author>
<updated>2015-11-08T14:46:19+01:00</updated>
<published>2015-11-08T14:00:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144793#p144793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144793#p144793"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144793#p144793"><![CDATA[
Dziękuję za odpowiedź. Przeczytałem ponownie rozdział i nasuwają mi się kolejne pytania. <br /><br />[syntax=c]/*<br /> * main.c<br />  *     timer0 ustawiamy nim Fast PWM<br /> *     timer2 ma tryb NORMAL lub CTC ustawiamy nim MHz<br /> *<br /> *     OC0 -&gt; PB3  timer0  8bit<br /> *     OC2 -&gt; PD7 timer1   8bit<br /> *     OC1A -&gt; PD5  OC1B -&gt; PD4 timer1 16bit<br /> *<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />// definicje zmiennych do sterowania 6 kanałami programowych PWM<br />// zmienne typu uint8_t, rozdzielczość 8-bitowa<br />volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6;<br /><br />int main(void){<br />//***** SPRZĘTOWY PWM - 1 KANAŁ OC0 (PB3) *******<br />// ustawienie końcówki OC0 (PB3) sprzętowy PWM jako WYJŚCIE<br />DDRB |= (1&lt;&lt;PB3);<br />TCCR0 |= (1&lt;&lt;WGM00) | (1&lt;&lt;WGM01);  // tryb Fast PWM<br />TCCR0 |= (1&lt;&lt;COM01) | (1&lt;&lt;COM00);  // clear at TOP<br />TCCR0 |= (1&lt;&lt;CS00);                // preskaler = 1<br /><br />//***** PROGRAMOWY PWM - 6 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br /> //<br />DDRD |= (1&lt;&lt;PD0)|(1&lt;&lt;PD1)|(1&lt;&lt;PD2);  //<br />DDRD |= (1&lt;&lt;PD7)|(1&lt;&lt;PD6)|(1&lt;&lt;PD2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTD |= (1&lt;&lt;PD0)|(1&lt;&lt;PD1)|(1&lt;&lt;PD2);<br />PORTD |= (1&lt;&lt;PD7)|(1&lt;&lt;PD6)|(1&lt;&lt;PD2);<br /><br />sei();// odblokowanie globalne przerwań<br /><br />uint8_t i;<br /><br />//timer2<br />TCCR2 &amp;= ~((1&lt;&lt;WGM21) | (1&lt;&lt;WGM20)); //tryb Normal<br />TCNT2 = 56;  // inicjalizacja licznika wartoscia 56<br /><br />TCCR2 |= (1&lt;&lt;CS20);   //preskaler = 1<br />TIMSK |= (1&lt;&lt;TOIE2);  // zezwolenie na przerwanie OVF (przepełnienie)<br /><br />while(1){<br />for (i=0; i&lt;255; i++){<br />OCR0 = i;<br />pwm1=i;<br />pwm2=i;<br />pwm3=i;<br />pwm4=i;<br />pwm5=i;<br />pwm6=i;<br />_delay_ms(5);<br />}<br />for(i = 255; i; i--){<br />OCR0 = i;<br />pwm1=i;<br />pwm2=i;<br />pwm3=i;<br />pwm4=i;<br />pwm5=i;<br />pwm6=i;<br />_delay_ms(5);<br />}<br />}<br /><br />}<br /><br />//przerwanie tryb NORMAL<br />ISR(TIMER2_OVF_vect) {<br />TCNT2 = 56;<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTD |= (1&lt;&lt;PD0); else PORTD &amp;= ~(1&lt;&lt;PD0);<br />if(cnt&gt;=pwm2) PORTD |= (1&lt;&lt;PD1); else PORTD &amp;= ~(1&lt;&lt;PD1);<br />if(cnt&gt;=pwm3) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br />if(cnt&gt;=pwm4) PORTD |= (1&lt;&lt;PD7); else PORTD &amp;= ~(1&lt;&lt;PD7);<br />if(cnt&gt;=pwm5) PORTD |= (1&lt;&lt;PD6); else PORTD &amp;= ~(1&lt;&lt;PD6);<br />if(cnt&gt;=pwm6) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br />cnt++;// zwiększanie licznika o 1<br />}[/syntax]<br /><br /> Przeczytałem ponownie rozdział 4.7 Sterowanie PWM <br /><br />Timer0 -&gt; tryb FastPWM<br />Timer2 -&gt; tryb Normal lub CTC  -&gt; ustawiamy częstotliwość wystąpienia przerwania <br /><br />Timer2 , wybrałem tryb Normal ,liczy od 0 do 255, przepełnienie zawsze jest po 255 i przejście do procedury przerwania.<br /><br />TCNT2 = 56;   -&gt; licznik Timer2’a liczy od 56 do 255, zlicza 200 impulsów.<br />Częstotliwość dla wystąpienia przerwania wynosi 8MHz / 200 = 40kHz<br /><br />Tryb FastPWM, założono 3 kanały. <br />A.Ile można maksymalnie kanałów założyć ? <br />B.Czy ta informacja jest zapisana W nocie pdf dla procesora?<br /><br />Opisuję działanie programu wg mnie:<br />Uruchamiam program procesor o FCPU = 8MHz zaczyna wysyłać impulsy.  Licznik_FCPU będzie hipotetycznie zliczał impulsy z procesora.<br />Timer2  jest 8bitowy (0-255).  <br />FCPU wysłał 2*200 = 400 impulsów,  Licznik_FCPU = 510.<br />Licznik_Timer2 zliczył już raz od 56 do 255 i było 1 przerwanie. Teraz Licznik_Timer2 = 255.<br />Teraz następuje przerwanie od Timer2  w trybie Normal.<br /><br />Pytanie: <br />Domyślam się że w czasie trwania przerwania Licznik_FCPU nadal zlicza ?  Licznik_FCPU pomiędzy przerwaniami  wysyła 200 impulsów.<br />C.Czyli w czasie działania  przerwania Licznik_FCPU nie może wykonać więcej niż 200-1=199 impulsów ?<br /><br /><br />[syntax=c]//przerwanie tryb NORMAL<br />ISR(TIMER2_OVF_vect) {<br />TCNT2 = 56;<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTD |= (1&lt;&lt;PD0); else PORTD &amp;= ~(1&lt;&lt;PD0);<br />if(cnt&gt;=pwm2) PORTD |= (1&lt;&lt;PD1); else PORTD &amp;= ~(1&lt;&lt;PD1);<br />if(cnt&gt;=pwm3) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br />if(cnt&gt;=pwm4) PORTD |= (1&lt;&lt;PD7); else PORTD &amp;= ~(1&lt;&lt;PD7);<br />if(cnt&gt;=pwm5) PORTD |= (1&lt;&lt;PD6); else PORTD &amp;= ~(1&lt;&lt;PD6);<br />if(cnt&gt;=pwm6) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br />cnt++;// zwiększanie licznika o 1<br />}[/syntax]<br />   <br />Wg opisu z niebieskiej książki <br />Program dla 3 kanałów PWM<br />Strona 243<br />Jeżeli nasz licznik zlicza z częst. 40 kHz , to jeśli utworzymy PWM 8 bitowy, częstotliwość tę trzeba podzielić przez 256 żeby dowiedzieć się jaka będzie ostatecznie częstotliwość naszych kanałów PWM , 40 000/256   = ok. 156 Hz <br /><br />D.dlaczego dzielimy przez licznik timera 8 bitowego= 255 ?? <br />E.Czy nie powinniśmy zapisać  … ostatecznie częstotliwość naszych kanałów PWM , 40 000/200 zamiast      <br />40 000/256    ?<br /><br /> <br />[syntax=c]Porty OC0 -&gt; PB3  timer0  8bit<br /> *     OC2 -&gt; PD7 timer1   8bit<br /> *     OC1A -&gt; PD5  OC1B -&gt; PD4 timer1 16bit[/syntax]<br /><br />F. W książce użyto w kodzie porty: PD2, PD6, PD7, PC0, PC1, PC2 do komunikacji z diodami.<br />Czy należy ich użyć, czy są one  przypadkowe ?<br />Zmieniłem w kodzie na Port D, ze wględu na łatwiejsze połączenie na zestawie ATB.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9468">pipu123</a> — 8 lis 2015, o 14:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2015-11-05T21:59:45+01:00</updated>
<published>2015-11-05T21:59:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144545#p144545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144545#p144545"/>
<title type="html"><![CDATA[Re: 4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144545#p144545"><![CDATA[
Działa to w ten sposób timer zaczyna liczyć impulsy tak czyli od 0 do 255 a ty na samym początku zmieniasz zawartość zliczonych impulsów na 56 a mikrokontroler liczy dalej doliczy do 255 i następuje przepełnienie i uruchamia się procedura przerwania więc ten rejestr zaczyna liczyć od zera a ty znowu mu musisz przypisać wartość 56 a on zacznie dodawać aż do 255 i tak w kółko. Mikrokontroler ma rejestr w którym jest zapisana liczba tyknięć timera, a ty ingerujesz tam i piszesz np 56, więc licznik nie zastanawia się tylko zaczyna dodawać do swojego rejestru 1 aż do 255 i znowu następuje obsługa przerwania i tak dalej. Mam nadzieję, że zrozumiałeś jak nie to pisz czego nadal nie rozumiesz postaram ci pomóc. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 5 lis 2015, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pipu123]]></name></author>
<updated>2015-11-05T21:48:33+01:00</updated>
<published>2015-11-05T21:48:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144541#p144541</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144541#p144541"/>
<title type="html"><![CDATA[4.7 Sterowanie PWM i przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13471&amp;p=144541#p144541"><![CDATA[
Witam <br />Przeczytałem w niebieskiej książce wyd. 2 do rozdziału z Tryb PWM włącznie. <br />Po przeczytaniu wnioskuję na przykładowych liczbach: <br />Częstotliwość 8 MHz, powoduje 8 000 000 impulsów na sekundę. <br />Timer 8 bitowy zlicza impulsy od 0 do 255, po zliczeniu 255 impulsów włączy się procedura przerwania. <br />Częstotliwość włączenia procedury przerwania wynosi : <br />8 MHz/ ( prescaler(zakładam 1) * 256)  = ok. 31,372 kHz <br /><br />Na podstawie 4.5 Multipleksowanie LED,<br /> OCR0= 38, taką wartość założono. <br />Domyślam się że timer zlicza od 0 do OCR0= 38, gdy przekroczy 38, następuje przerwanie.  <br />Prescaler = 1024 i CPU 8 MHz.    <br />8 MHz /( 1024 * 38,08) – 1 = 204 Hz<br /><br />Uruchamia się procedura przerwania<br />Pytanie: <br />Czy operacje do wykonania w procedurze przerwania zmienią częstotliwość na inną niż ustalona wcześniej<br />, 204 Hz ?<br /><br />4.7 Sterowanie PWM <br />CPU 8MHz, Tryb fast pwm <br />Timer 8bitowy <br />Strona 242,  TCNT2 = 56, <br /> licznik zlicza 200 impulsów od 56 do 255. Po 255 przechodzi do procedury przerwania. <br />Częstotliwość wynosi 8MHz / 200 = 40kHz<br /><br />Program dla 3 kanałów PWM<br />Strona 243<br />Jeżeli nasz licznik zlicza z częst. 40 kHz , to jeśli utworzymy PWM 8 bitowy, częstotliwość tę trzeba podzielić przez 256 żeby dowiedzieć się jaka będzie ostatecznie częstotliwość naszych kanałów PWM , 40 000/256   = ok. 156 Hz <br />(dlaczego dzielimy przez licznik timera 8 bitowego z procedury przerwania w PWM = 255 ?? )<br /> <br />W procedurze przerwania <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">ISR {<br />    TCNT2 = 56;<br />}</div><br /><br />Dlaczego drugi raz zapisujemy wartość TCNT2 = 56 w procedurze przerwania ? <br />W jaki sposób procedura przerwania wpływa na zmianę częstotliwości w PWM ( chyba tego nie było w CTC)  <br />Na początku programu dzięki TCNT2 = 56; dobraliśmy częstotliwość 40kHz.  Po co jest ponownie ten zapis w procedurze przerwania ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9468">pipu123</a> — 5 lis 2015, o 21:48</p><hr />
]]></content>
</entry>
</feed>