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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-17T13:34:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=6386&amp;mode</id>
<entry>
<author><name><![CDATA[karolek]]></name></author>
<updated>2014-03-17T13:34:56+01:00</updated>
<published>2014-03-17T13:34:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74698#p74698</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74698#p74698"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74698#p74698"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br />Tutaj masz błąd.<br />[syntax=c]PORTC |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1) | (1&lt;&lt;PA2);[/syntax]<br /></div><br /><br />tylko od strony czytelnosci , bo pa0 to to samo co pc0 itd..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2535">karolek</a> — 17 mar 2014, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-03-16T22:42:33+01:00</updated>
<published>2014-03-16T22:42:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74650#p74650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74650#p74650"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74650#p74650"><![CDATA[
Tutaj masz błąd.<br />[syntax=c]PORTC |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1) | (1&lt;&lt;PA2);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 16 mar 2014, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[damien.em]]></name></author>
<updated>2014-03-16T21:14:58+01:00</updated>
<published>2014-03-16T21:14:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74637#p74637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74637#p74637"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74637#p74637"><![CDATA[
Dzieki Kila, widziałem Twój projekt <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> za wczesnie jeszcze u mnie na coś takiego ;p brak mi skila w programowaniu avr, nie chce tez &quot;żerować&quot; na waszych projektach i zdzierać wszystkiego jak leci, potrzeba mi tylko &quot;kierunkowego kopniaka&quot; w ktora strone iść zeby było lepiej <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=3354">damien.em</a> — 16 mar 2014, o 21:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2014-03-16T20:21:51+01:00</updated>
<published>2014-03-16T20:21:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74627#p74627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74627#p74627"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74627#p74627"><![CDATA[
Rzuć tez okiem na mój kod do sterownika RGB. Mam go w moim podpisie. <br /><br /><br />Wysłane z mojego iPhone przez Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 16 mar 2014, o 20:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[damien.em]]></name></author>
<updated>2014-03-16T16:47:07+01:00</updated>
<published>2014-03-16T16:47:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74576#p74576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74576#p74576"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74576#p74576"><![CDATA[
Dzięki za podpowiedzi, zatem biore się za czytanie <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=3354">damien.em</a> — 16 mar 2014, o 16:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-16T15:19:57+01:00</updated>
<published>2014-03-16T15:19:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74560#p74560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74560#p74560"/>
<title type="html"><![CDATA[Re: PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74560#p74560"><![CDATA[
<div class="quotetitle">damien.em napisał(a):</div><div class="quotecontent"><br />Nie palić od razu na stosie za tak rozwlekły kod dla pozornie prostej operacji ale nie wiem jak moglbym go zoptymalizować ;p<br /></div><br /><br />Spokojnie - wszystko po kolei - ale się uda <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i nikt na stosie nie będzie tu palił <br /><br /><div class="quotetitle">damien.em napisał(a):</div><div class="quotecontent"><br />Chciałbym np też dołożyć 1 przycisk, który po zwarciu do masy generowałby kolor biały, a po ponownym przycisnieciu znowu realizowałby całą pętle od początku.<br /></div><br /><br />polecam ci albo dalej poczytać książkę gdzie dojdziesz do funkcji SuprDebounce() która sporo ci wyjaśni - chociaż może być na początek trudna w zrozumieniu - ale dlatego czytaj mojego bloga proszę - bo tam można zobaczyć jak dochodzić do wielu rzeczy mniejszymi kroczkami. Szczególnie w przypadku obsługi klawiszy polecam to:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html" >http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html</a><!-- m --><br /><br />ale na pewno - powinieneś w książce dotrzeć do rozdziału o &quot;timerach programowych&quot; to jest ważne - i bardzo ci się przyda<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 mar 2014, o 15:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[damien.em]]></name></author>
<updated>2014-03-16T15:09:59+01:00</updated>
<published>2014-03-16T15:09:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74556#p74556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74556#p74556"/>
<title type="html"><![CDATA[PWM - analiza kodu i kilka pytań]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6386&amp;p=74556#p74556"><![CDATA[
Witam, napisałem w końcu swój pierwszy program w oparciu o BB a dokładniej o rozdział 5.6 Sterowanie PWM.<br /><br />Jako, że mój aktualny zasób sprzętowy ma się w granicach programatora, ATmegi 32 i 2 diód RGB tak więc postanowiłem wyskrobać coś po swojemu w oparciu o książke właśnie dla diody RGB.<br /><br />Napisałem program do obsługi 3 programowych kanałów PWM - R. G, B, z wykorzystaniem Timera0. <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 16-03-2014<br /> *      Author: Damian<br /> */<br /><br />// testowy program obsługi programowego PWM dla 3 kanałów //<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 3 kanałami programowych PWM<br />//zmienne typu uint8_t, rodzielczosć 8 bitowa<br /><br />volatile uint8_t pwm1, pwm2, pwm3;<br /><br />// główna funkcja programu<br />int main(void)<br />{<br />//***progamowy PWM - 3 kanały ***//<br /><br />//ustawienie pinów portu A jako wyjscia kanałów programowych PWM<br />    DDRA |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1) | (1&lt;&lt;PA2); //RED - PA0 //GREEN - PA1 //BLUE - PA2<br /><br />//wyłączenie diody RGB podłączonej katodami do wyjsc<br />PORTC |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1) | (1&lt;&lt;PA2);<br /><br />//ustawienia TIMER0<br />TCCR0 |= (1&lt;&lt;WGM01);         //tryb CTC<br />TCCR0 |= (1&lt;&lt;CS00);          //preskaler = 1<br />OCR0 = 200;              // podział częstotliwoci przez 200<br />TIMSK |= (1&lt;&lt;OCIE0);    //zezwolenie na przerwanie CompareMatch<br /><br />sei();    // odblokowanie globalne przerwań<br /><br />uint8_t r, g, b;  //definicje zmiennych na potrzeby pętli for()<br /><br />// ***** pętla programu ***** //<br />while(1)<br />{<br />        _delay_ms(1000);<br /><br />for(r=0; r&lt;255; r++)    // rozjasnianie kanału RED<br />{<br />pwm1=r;<br />if(r&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />}<br /><br />pwm1=255;   // red max<br /><br />for(g=0; g&lt;255; g++)   // rozjasnianie kanału GREEN<br />{<br />pwm2=g;<br />if(g&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />    }<br /><br />pwm2=255;   // green max<br /><br />for(b=0; b&lt;255; b++)  // rozjasnianie kanału BLUE<br />{<br />pwm3=b;<br />if(b&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />}<br /><br />pwm3=255; // blue max<br /><br />for(g=255; g; g--) //sciemnianie green<br />{<br />pwm2=g;<br />if(g&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />}<br /><br />pwm2=0; //green = 0<br /><br />for(r=255; r; r--)    //sciemnianie red<br />{<br />pwm1=r;<br />if(r&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />}<br /><br />pwm1=0;    // red = 0<br /><br />for(b=255; b; b--)        //sciemnianie blue<br />{<br />pwm3=b;<br />if(b&gt;10) _delay_ms(30);<br />else _delay_ms(15);<br />}<br /><br />pwm3=0;   // blue = 0<br /><br />}<br /><br />}<br />       // ***** koniec pętli *****//<br /><br />// ciało precedury obsługi przerwania CompareMatch Timera0<br />ISR( TIMER0_COMP_vect )<br />{<br />static uint8_t cnt;  //definicja licznika PWM<br /><br />//sterowanie wyjsciami kanałów PWM<br />if(cnt&gt;=pwm1) PORTA |= (1&lt;&lt;PA0); else PORTA &amp;= ~(1&lt;&lt;PA0);<br />if(cnt&gt;=pwm2) PORTA |= (1&lt;&lt;PA1); else PORTA &amp;= ~(1&lt;&lt;PA1);<br />if(cnt&gt;=pwm3) PORTA |= (1&lt;&lt;PA2); else PORTA &amp;= ~(1&lt;&lt;PA2);<br /><br />cnt++; //zwiększenie licznika o 1<br />}<br />          // ***** koniec programu ***** //[/syntax]<br /><br /><br />Prosze o kilka porad m.in jak możnaby było zoptymalizować kod. Chciałbym np też dołożyć 1 przycisk, który po zwarciu do masy generowałby kolor biały, a po ponownym przycisnieciu znowu realizowałby całą pętle od początku. Mam jeszcze kilka problemów związanych ze zrozumieniem przerwań jak ich użyć w programie na przykład w sposób ktory opisałem powyżej. <br /><br />Nie palić od razu na stosie za tak rozwlekły kod dla pozornie prostej operacji ale nie wiem jak moglbym go zoptymalizować ;p<br />Nie proszę o gotowe rozwiązania ale o naprowadzenia co robie źle i jak moge to poprawić <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=3354">damien.em</a> — 16 mar 2014, o 15:09</p><hr />
]]></content>
</entry>
</feed>