<?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=4&amp;t=4418&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T12:20:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4418&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-11T14:35:30+01:00</updated>
<published>2013-10-11T14:35:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52566#p52566</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52566#p52566"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52566#p52566"><![CDATA[
to jest tak .... jeśli czas trwania przerwania to np 450 cyki zegara ... natomiast przerwanie wywoływane jest co 400 cykli zegara to co się dzieje ? To się dzieje MASAKRA - oczywiście program główny będzie wykonywany ALE ...<br /><br />ale uwaga! w jaki sposób ?<br /><br />Otóż ZAWSZE po zakończeniu przerwania po tych 450 cyklach nastąpi powrót z przerwania i skok do programu głównego - wykonanie JEDNEJ !!!! instrukcji asm (a nie linii programu w C), i BACh! znowu skok do przerwania! .. i tak w kółko <br /><br />więc możesz już sobie wyobrazić co się będzie działo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> przerwanie będzie &quot;ładnie&quot; śmigać, ale program główny będzie wolniejszy niż najwolniejszy ŚLIMAK na świecie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> - <br /><br />można powiedzieć, że zajętość procesora będzie = 99,999999%<br /><br />----------------------<br /><br />dla porównania jeśli przerwanie będzie się wykonywało np 200 cykli a wywoływane będzie co 400 cykli to zajętość procesora będzie ok 50% <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli raczej w miarę spokojnie - choć to zależy co tam się będzie miało dziać i jak będą działać inne przerwania<br /><br /><br />jeśli przerwanie będzie się wykonywało np 40 cykli a wywoływane będzie co 400 cykli to zajętość procesora będzie ok 10% <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />rozumiesz ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Przy programowym PWM'ie nie można sobie pozwalać na zbyt wysokie częstotliwości taktowania timera bo wchodzisz tym samym w coraz większe obciążenie procesora<br /><br />a weź pod uwagę, że jeszcze są inne przerwania, których czas wykonywania także się dolicza sumarycznie do tej zajętości<br /><br />mam nadzieję, że teraz to już będzie jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... ale jeśli jeszcze nie to śmiało pytaj<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 paź 2013, o 14:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-11T14:24:57+01:00</updated>
<published>2013-10-11T14:24:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52564#p52564</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52564#p52564"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52564#p52564"><![CDATA[
Czy w takim zbyt częste wykonywanie przerwania lub zbyt długi czas wykonywania procedury jego obsługi  może być powodem problemów o których pisałem we wcześniejszych postach?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 11 paź 2013, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-11T14:04:02+01:00</updated>
<published>2013-10-11T14:04:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52561#p52561</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52561#p52561"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52561#p52561"><![CDATA[
Staram się to zrozumieć. Czy to oznacza, że jeżeli procedura przerwania zajmuje powiedzmy co najmniej 6 taktów procesora i wywoływana jest co 14 taktów, to znaczy, że procesor w funkcji main() czy pętli while &quot;zdąży&quot; wówczas wykonać 14-6=8 instrukcji? (Zakładając oczywiście, że każda instrukcja zajmuje jeden takt procesora). I jeżeli w programie głównym jest do wykonania więcej niż 8 instrukcji, to w tej sytuacji procesor po prostu ich nie wykona?<br />Sorki za może bezsensowne pytania ale jeżeli takie są to wynikają z mojej niewiedzy i jednocześnie chęci ogarnięcia problemu:-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 11 paź 2013, o 14:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T12:20:02+01:00</updated>
<published>2013-10-11T13:43:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52556#p52556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52556#p52556"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52556#p52556"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 11 paź 2013, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-11T12:17:06+01:00</updated>
<published>2013-10-11T12:17:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52551#p52551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52551#p52551"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52551#p52551"><![CDATA[
Tak tak. Już wszystko jasne. Wziąłem kartkę i rozrysowałem sobie generowanie tego przebiegu w oparciu o zliczanie licznika, przerwanie przy porównaniu i jaki stan i kiedy pojawia się na wyjściu pinów programowego pwm przy spełnieniu bądź nie spełnieniu warunku if w przerwaniu. Wszystko się wyjaśniło. <br /><br />Jednakże zauważyłem jedną rzecz. Ustawiłem wartość OCR2 = 13 aby wygenerować częstotliwość pwm = ok. 5kHZ (dokładnie 4.8kHz). Bo 16000000/256/1/13 dokładnie tyle daje. Wówczas procek praktycznie przestaje działać. Dopiero kiedy zadam OCR2 = 60 co daje częstotliwość pwm = 1.04kHz wszystko zaczyna ładnie pracować. Czy zjawisko to może być spowodowane czasem wykonywania procedury przerwania, która może zajmować cały czas procesora i wówczas program główny nie jest wykonywany?<br />Podobne wyjaśnienia spotkałem w niebieskiej książce w rozdziale dotyczącym pwm i diody rgb.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 11 paź 2013, o 12:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-11T11:56:43+01:00</updated>
<published>2013-10-11T11:56:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52549#p52549</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52549#p52549"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52549#p52549"><![CDATA[
step_m .... widzę że troszkę wciąż nie rozumiesz do końca jak się oblicza częstotliwość PWM'a programowego<br /><br />Oczywiście, że w porównaniu do wzoru na sprzętowy PWM musimy jeszcze dodatkowo podzielić to przez 256 przy programowym PWM'ie ...<br /><br />dlaczego ?<br /><br />no pomyśl sobie ... wartość tego licznika to kolejny (tyle że programowy) PRESKALER o wartości 256. Skoro Timer zlicza do 256 to przecież DZIELI nam dokładnie przez tą wartość częstotliwość dostarczoną do niego poprzez ustawienie sprzętowego preskalera oraz wartości OCRx<br /><br />ale to jeszcze nie częstotliwość naszego programowego PWM'a tylko częstotliwość z jaką timer TYKA sobie - zgodzisz się chyba ze mną. A my to TYKANIE jeszcze dzielimy przez 256 jego kroków w trakcie których obsługujemy przecież nasz programowy PWM ... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dlatego jest to coś w rodzaju - jeszcze raz powtórzę &quot;programowego preskalera&quot;<br /><br />teraz jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 paź 2013, o 11:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T12:19:38+01:00</updated>
<published>2013-10-11T11:13:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52547#p52547</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52547#p52547"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52547#p52547"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 11 paź 2013, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-11T09:53:04+01:00</updated>
<published>2013-10-11T09:53:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52541#p52541</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52541#p52541"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52541#p52541"><![CDATA[
Dziękuję za odpowiedź. <br />Ale czy jeżeli to jest programowy PWM to nie należy jeszcze tego co podałeś z noty podzielić przez 256? To 256 to wartość do której zlicza 8 bitowy licznik programowy w obsłudze przerwania -  w kodzie oznaczony jako zmienna cnt w pliku silniki_pwm.c. Czy dopiero to nie da rzeczywistej częstotliwości sygnału pwm? Bo zastanawiam się czy to przeliczenie, które podałeś nie określa jedynie częstotliwości wykonywania samego przerwania od porównania zawartości licznika z wartością OCR2 = 125<br /><br />Odpowiadając na Twoje pytanie. Oczywiście mógłbym użyć pwm - ów sprzętowych. Jednakże planuje wykorzystać je w projekcie do innych celów. Timer0 np już wykorzystuje do obsługi czujnika odległości i timerów programowych.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 11 paź 2013, o 09:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T12:19:14+01:00</updated>
<published>2013-10-11T09:35:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52538#p52538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52538#p52538"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52538#p52538"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 11 paź 2013, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-11T06:30:47+01:00</updated>
<published>2013-10-11T06:30:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52531#p52531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52531#p52531"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52531#p52531"><![CDATA[
Dziękuję za odpowiedź. Pomyślałem, że jeszcze pokażę kod żeby się upewnić co do obliczenia częstotliwości programowego pwm.<br />Poniżej przedstawiam plik silniki_pwm.c i silniki_pwm.h z inicjalizacją TIMERA2 oraz z procedurą przerwania licznika. W pliku main.c określam po prostu w pętli while(1), że np. pwm1 = 50; pwm2=100. Podłączyłem diody i wygląda na to, że wszystko działa. Potrzebuję jedynie jeszcze określić częstotliwość pwm<br /><br />plik silniki_pwm.c <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;silniki_pwm.h&quot;<br /><br />//zmienne do wypełnienia PWMu<br />volatile uint8_t pwm1,pwm2;<br /><br /><br />void Silniki_PWM_Init(void){<br /><br />//USTAWIENIE TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21); //TRYB CTC<br />TCCR2 |= (1&lt;&lt;CS20); //PRESCALER = 1<br />OCR2 = 125; //dodatkowy podział częstotliwoci przez 125<br />TIMSK |= (1&lt;&lt;OCIE2); //zezwolenie na przerwanie compare match<br /><br />//piny wyjciowe pwm<br />PWM_PORT_DIR |= (1&lt;&lt;PWM1_PIN) | (1&lt;&lt;PWM2_PIN );<br />//wyłączenie led podłączonych do wyjć<br />PWM_PORT |= (1&lt;&lt;PWM1_PIN) | (1&lt;&lt;PWM2_PIN );<br /><br />}<br /><br />//przerwanie timera CTC<br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt; //licznik PWM<br /><br />//sterowanie wyjciami kanałów PWM<br />if(cnt&gt;=pwm1) PWM_PORT |= (1&lt;&lt;PWM1_PIN); else PWM_PORT &amp;=~ (1&lt;&lt;PWM1_PIN);<br />if(cnt&gt;=pwm2) PWM_PORT |= (1&lt;&lt;PWM2_PIN); else PWM_PORT &amp;=~ (1&lt;&lt;PWM2_PIN);<br /><br />cnt++; //zwiększenie licznika<br /><br />}[/syntax]<br /><br />plik silniki_pwm.h<br /><br />[syntax=c]#ifndef SILNIKI_PWM_H_<br />#define SILNIKI_PWM_H_<br /><br />#define PWM_PORT_DIR DDRB<br />#define PWM_PORT PORTB<br />#define PWM1_PIN PB0<br />#define PWM2_PIN PB1<br /><br />extern volatile uint8_t pwm1, pwm2;<br /><br /><br />void Silniki_PWM_Init(void);<br /><br /><br />#endif /* SILNIKI_PWM_H_ */[/syntax]<br /><br />Licznik cnt zwiększany w przerwaniu jest 8 bitowy. Nie rozumiem za bardzo o jakie &quot;wcześniejsze zerowanie&quot; tego licznika chodzi. Czy w tym konkretnym przypadku (tutaj akurat wartość OCR2 = 125 a nie 200 jak w poprzednim poście) mogę policzyć częstotliwość w ten sposób?:<br /><br />fr_pwm = 16000000/1/256/125<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Przy okzaji czy orientujecie się jaka powinna być właśnie częstotliwość przebiegu pwm aby można było sterować silnikami układem L293D. Chcę do tego układu podłączyć dwa silniki DC i sterować prędkością z wykorzystaniem pwm. Pytanie tylko o częstotliwość. Czy jest tutaj istotna i jeżeli tak to jaka powinna być.<br /><br />Z góry dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 11 paź 2013, o 06:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-10-10T18:31:22+01:00</updated>
<published>2013-10-10T18:31:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52483#p52483</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52483#p52483"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52483#p52483"><![CDATA[
W takim przypadku (tryb CTC) to preskaler i OC0 decyduje o częstotliwości pojawiania się przerwań, ale częstotliwość sygnału PWM generowanego programowo jest dużo mniejsza i zależy od licznika, który w tej procedurze przerwania jest zwiększany i porównywany ze zmienną która reguluje PWM. Jak ten licznik jest 8-bitowy i nie jest wcześniej zerowany tylko odlicza do maksimum i się przekręca to prawidłowy jest wzór 1 i nie ma nic wspólnego z tym, że timer jest 8-bitowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 10 paź 2013, o 18:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[step_m]]></name></author>
<updated>2013-10-10T17:32:21+01:00</updated>
<published>2013-10-10T17:32:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52477#p52477</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52477#p52477"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52477#p52477"><![CDATA[
Witam,<br /><br />Ja mam pytanie dotyczące sposobu określenia częstotliwości sygnału PWM. Nie jestem pewny jak to policzyć prawidłowo. Używam procka Atmega16 z taktowaniem 16MHz. Chcę skonfigurować TIMER2 i wykorzystać go do zrobienia programowego pwm, np jednego kanału pwm1. Timer2 chcę skonfigurować aby generował przerwanie od porównania zawartości licznika z OC0. W sposobie stworzenia programowego pwm oraz procedury obsługi przerwania chcę się oprzeć dokładnie na przykładzie z niebieskiej książki, na podstawie rozdziału o pwm i diodzie rgb. Załóżmy, że określę w inicjalizacji Timera2 wartość OC0 = 200, preskaler Timera2 = 1. Timer2 jest 8 bitowy czyli licznik zlicza do 256.<br /><br />To jak mam policzyć częstotliwość przebiegu pwm, tak?:<br /><br />fr_pwm = 16000000/1/256/200<br /><br />czy też tak<br /><br />fr_pwm = 16000000/1/256<br /><br />Głównie nie jest dla mnie do końca jasne czy trzeba dzielić również przez wartość OC0 = 200 w moim przypadku<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Czy jeszcze może tak:<br /><br />fr_pwm = 16000000/1/200<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1282">step_m</a> — 10 paź 2013, o 17:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ryszard56]]></name></author>
<updated>2013-10-09T17:43:58+01:00</updated>
<published>2013-10-09T17:43:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52367#p52367</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52367#p52367"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52367#p52367"><![CDATA[
No więc wszyscy skorzystaliśmy  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br /><br />W sumie błąd wyboru preskalera szybko odrzuciłem, bo różnica częstotliwości był dwukrotna, a preskaler musiałby dzielić ją przez osiem. Ta różnica częstotliwości naprowadziła mnie na to, że chyba jest włączony inny tryb PWM, no a dalej to już poszło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=962">Ryszard56</a> — 9 paź 2013, o 17:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-09T17:05:24+01:00</updated>
<published>2013-10-09T17:05:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52359#p52359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52359#p52359"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52359#p52359"><![CDATA[
Była mowa o tym była <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i to nie raz ani nie dwa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... no ale cóż - w ten sposób się uczymy - na błędach<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />przy okazji wiesz jak to jest, jeśli ja to komuś na forum 10x powtórzę to jest większa szansa że sam nie zrobię tej pomyłki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... więc zyskujemy obydwaj<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 paź 2013, o 17:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ryszard56]]></name></author>
<updated>2013-10-09T16:33:10+01:00</updated>
<published>2013-10-09T16:33:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52354#p52354</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52354#p52354"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52354#p52354"><![CDATA[
Właśnie przed chwilą do tego doszedłem. A też już kiedyś była na forum o tym mowa.<br />Poprawnie ma być:<br />[syntax=c]TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1A0);<br />TCCR1A |= (1&lt;&lt;WGM10);<br />TCCR1B |= (1&lt;&lt;CS10);<br />TCCR1B |= (1&lt;&lt;WGM12);[/syntax]<br />A gdyby nie oscyloskop, to nie wiedziałbym nawet, że zrobiłem błąd.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=962">Ryszard56</a> — 9 paź 2013, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-09T16:12:17+01:00</updated>
<published>2013-10-09T16:12:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52351#p52351</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52351#p52351"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52351#p52351"><![CDATA[
<div class="quotetitle">Ryszard56 napisał(a):</div><div class="quotecontent"><br />Chyba, że coś źle zrozumiałem z zapisu rejestrów<br /></div><br /><br />no tak a sprawdziłeś pan w jakich rejestrach są bity?<br /><br />[syntax=c]TCCR1A |= (1&lt;&lt;WGM12) | (1&lt;&lt;WGM10);[/syntax]<br /><br />bo ja jestem pewien że nie <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=54">mirekk36</a> — 9 paź 2013, o 16:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ryszard56]]></name></author>
<updated>2013-10-09T15:03:40+01:00</updated>
<published>2013-10-09T15:03:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52341#p52341</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52341#p52341"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52341#p52341"><![CDATA[
No oczywiście, z tymi średnikami taki głupi błąd. Na dodatek wiedziałem, że nie dajemy ich przy tych definicjach  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> .<br />Ale z preskalerem nie widzę błędu. Wg noty akurat ustawienia bitów są takie same. Chyba, że coś źle zrozumiałem z zapisu rejestrów.<br /><br />Układ, to ATmega32 z kwarcem 11,0592 MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=962">Ryszard56</a> — 9 paź 2013, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-09T14:55:07+01:00</updated>
<published>2013-10-09T14:55:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52340#p52340</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52340#p52340"/>
<title type="html"><![CDATA[Re: Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52340#p52340"><![CDATA[
<div class="quotetitle">Ryszard56 napisał(a):</div><div class="quotecontent"><br />A przy okazji: dlaczego taki zapis nie jest prawidłowy (kompilator pokazuje błąd)<br /></div><br /><br />A pisałem w książce że jak się robi DEFINICE PREPROCESORA #define - to żeby nigdy na końcu średników nie dawać hmmm <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Jeśli chodzi o pierwsze pytanie - bo widzę że z marszu wszędzie tak samo ustawiasz sobie bity preskalera CSxn a sprawdziłeś w nocie że niektóre timery mają różne wartości preskalerów ? zwykle timer0 różni się od timer2<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 paź 2013, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ryszard56]]></name></author>
<updated>2013-10-09T14:28:56+01:00</updated>
<published>2013-10-09T14:28:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52335#p52335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52335#p52335"/>
<title type="html"><![CDATA[Częstotliwość PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4418&amp;p=52335#p52335"><![CDATA[
Robiłem proste sterowanie diodą RGB i wszystko wyszło tak jak chciałem. Kiedy jednak podłączyłem oscyloskop, żeby pooglądać przebiegi okazało się, że jeden z kanałów pracuje z dwa razy mniejszą częstotliwością niż pozostałe. Gdzie zrobiłem błąd w programie?<br /><br />Kanały 8-bitowe pracują z częstotliwością 43,2 kHZ (czyli zgodnie z ustawieniami), a kanał 16-birtowy w trybie 8-bitowym ma częstotliwość 21,6 kHz.<br /><br />[syntax=c]// Program: Test PWM<br /><br />#include &lt;avr/io.h&gt;<br /><br />#define LEDR (1&lt;&lt;PB3);<br />#define LEDG (1&lt;&lt;PD5);<br />#define LEDB (1&lt;&lt;PD7);<br /><br /><br />int main(void)<br />{<br />DDRB |= LEDR;<br />DDRD |= (1&lt;&lt;PD5) | (1&lt;&lt;PD7);<br />//DDRD |= LEDG | LEDB;<br /><br />//OC0<br />DDRB |= (1&lt;&lt;PB3);<br />TCCR0 |= (1&lt;&lt;WGM01) | (1&lt;&lt;WGM00);<br />TCCR0 |= (1&lt;&lt;COM01) | (1&lt;&lt;COM00);<br />TCCR0 |= (1&lt;&lt;CS00);<br /><br />//OC2<br />DDRD |= (1&lt;&lt;PD7);<br />TCCR2 |= (1&lt;&lt;WGM21) | (1&lt;&lt;WGM20);<br />TCCR2 |= (1&lt;&lt;COM21) | (1&lt;&lt;COM20);<br />TCCR2 |= (1&lt;&lt;CS20);<br /><br />//OC1A<br />DDRD |= (1&lt;&lt;PD5);<br />TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1A0);<br />TCCR1A |= (1&lt;&lt;WGM12) | (1&lt;&lt;WGM10);<br />TCCR1B |= (1&lt;&lt;CS10);<br /><br />while (1)<br />{<br />OCR0 = 128;//RED<br />OCR1A = 128;//GREEN<br />OCR2 = 128;//BLUE<br />}<br />return(0);<br />}[/syntax]<br /><br />A przy okazji: dlaczego taki zapis nie jest prawidłowy (kompilator pokazuje błąd)?<br />[syntax=c]#define LEDG (1&lt;&lt;PD5);<br />#define LEDB (1&lt;&lt;PD7);<br />DDRD |= LEDG | LEDB;[/syntax]<br /><br />Oscylogram (na górze kanał OC0, na dole OC1A):<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/962/3395dfc5a3b3d1f32c91555fe6737006.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/962/3395dfc5a3b3d1f32c91555fe6737006.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=962">Ryszard56</a> — 9 paź 2013, o 14:28</p><hr />
]]></content>
</entry>
</feed>