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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-04-18T17:39:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=18191&amp;mode</id>
<entry>
<author><name><![CDATA[czarekgr]]></name></author>
<updated>2017-04-18T17:39:56+01:00</updated>
<published>2017-04-18T17:39:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187375#p187375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187375#p187375"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187375#p187375"><![CDATA[
Proponuję zadeklaruj typ zmiennej pętli for, kiedyś skopiowałem gotowy kod i był problem z tego powodu, bo zmienna<br />miała wartość po wyjściu z pętli.<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">for (int i=0;;) { }</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14311">czarekgr</a> — 18 kwi 2017, o 17:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2017-04-18T14:45:51+01:00</updated>
<published>2017-04-18T14:45:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187365#p187365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187365#p187365"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187365#p187365"><![CDATA[
Panowie dziękuje za pomoc.<br /><br />Doszedłem do wniosku, że jeżeli w pierwszej for() będę rozjaśniał diodę to zawsze będę miał mignięcie albo wygaszenie. Dlatego na początku while(1) oraz przed pętlą while(1) zaświeciłem kolor fioletowy i w pierwszej for() płynne przejście na niebieski itd. Natomiast w ostatniej for() rozjaśnienie koloru fioletowego (ale nie ściemnienie). Dlatego po powrocie na początek pętli while(1) jest płynne przejście z fioletowego na niebieski.<br /><br />Poniżej kod (jak to rozwiązałem):<br />[syntax=c]#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;<br /><br />int main(void)<br />{<br />//***** PROGRAMOWY PWM - 3 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);// preskaler = 1<br />OCR2 = 199;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />sei();// odblokowanie globalne przerwań<br />int i,j,k=0;// definicja zmiennej i na potrzeby pętli for()<br /><br />        // włączenie koloru fioletowego<br />i=250;   <br />k=250;   <br /><br />while(1)             // pętla nieskończona<br />{<br />                // włączenie koloru fioletowego<br />pwm1=i;<br />pwm3=k;<br />PORTC=0b11111111;<br />for(i=250;i&gt;0;i--)  // niebieski<br />{<br />pwm1=i;<br />PORTC=0b11111011;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(j=0;j&lt;250;j++)// błękitny<br />{<br />pwm2=j;<br />PORTC=0b11111001;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(k=250;k&gt;0;k--)// zielony<br />{<br />pwm3=k;<br />PORTC=0b11111101;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(i=0;i&lt;250;i++)// pomarańczowy<br />{<br />pwm1=i;<br />PORTC=0b11111100;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(k=0;k&lt;250;k++)// biały<br />{<br />pwm3=k;<br />PORTC=0b11111000;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(j=250;j&gt;0;j--)// fioletowy<br />{<br />pwm2=j;<br />PORTC=0b11111010;<br />_delay_ms(4);<br />}<br />PORTC=0b11111111;<br />_delay_ms(1000);<br />}<br />}<br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;= ~(1&lt;&lt;PC0);<br />if(cnt&gt;=pwm2) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;= ~(1&lt;&lt;PC1);<br />if(cnt&gt;=pwm3) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;= ~(1&lt;&lt;PC2);<br /><br />cnt--;// zwiększanie licznika o 1<br />}[/syntax]<br /><br />Jeszcze raz dziękuję za zainteresowanie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 18 kwi 2017, o 14:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2017-04-18T14:10:24+01:00</updated>
<published>2017-04-18T14:10:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187364#p187364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187364#p187364"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187364#p187364"><![CDATA[
Tak na szybko liczyłem. Po pierwszym obiegu while(1) w pierwszej for() i = 250 oraz k = 250. k jest zerowane,a i zwiększa się do 255, zeruje się. Po wyjściu z pierwszego for() i=245. Mały błysk jest już w kolejnej for(), bo i=245 zmienia się na i=250<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 18 kwi 2017, o 14:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2017-04-18T13:59:00+01:00</updated>
<published>2017-04-18T13:59:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187363#p187363</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187363#p187363"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187363#p187363"><![CDATA[
Nie podoba mi się to za bardzo:<br /><br />[syntax=c]for(i=k,k=0;k&lt;250;i++,k++)      // fioletowy<br />                    {<br />                            pwm1=i;<br />                            pwm3=k;<br />                            PORTC=0b11111010;<br />                            _delay_ms(4);<br />                    }[/syntax]<br /><br />Po pierwszym obiegu pętli while nie wiadomo które przypisanie będzie pierwsze...  for(i=k,k=0....  czy i = k czy k = 0 a to ma znaczenie w Twoim kodzie zdaje mi się<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 18 kwi 2017, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2017-04-18T13:54:09+01:00</updated>
<published>2017-04-18T13:54:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187362#p187362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187362#p187362"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187362#p187362"><![CDATA[
Bo chciałem, żeby jakoś połączyć koniec z początkiem, żeby tego przebłysku nie było albo wygaszenia przy wykonywaniu się pętli od początku.<br /><br />Nie wiem czy dobrze myślę, ale może powinienem na początku po prostu zaświecić kolor fioletowy (bez rozjaśnienia), a na końcu pętli rozjaśnić kolor fioletowy bez ściemnienia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 18 kwi 2017, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2017-04-18T13:54:40+01:00</updated>
<published>2017-04-18T13:50:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187360#p187360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187360#p187360"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187360#p187360"><![CDATA[
Spróbuj tak:<br /><br />[syntax=c]#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;<br />     <br />    int main(void)<br />    {<br />            //***** PROGRAMOWY PWM - 3 KANAŁÓW *******<br />            // ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />            DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />            // wyłączenie diod LED podłączonych katodami do wyjść<br />            PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />     <br />            // ustawienia TIMER2 w tryb CTC<br />            TCCR2 |= (1&lt;&lt;WGM21);    // tryb  CTC<br />            TCCR2 |= (1&lt;&lt;CS20);             // preskaler = 1<br />            OCR2 = 199;                             // dodatkowy podział częsttotliwości przez 200<br />            TIMSK |= (1&lt;&lt;OCIE2);    // zezwolenie na przerwanie CompareMatch<br />     <br />            sei();                          // odblokowanie globalne przerwań<br />            int i,j,k=0;                    // definicja zmiennej i na potrzeby pętli for()<br />     <br />    //      PORTC &amp;= ~0xFEFE33;<br />     <br />            while(1)                                     // pętla nieskończona<br />            {<br />                    for(i=k,k=0;k&lt;250;i++,k++)      // fioletowy<br />                    {<br />                            pwm1=i;<br />                            pwm3=k;<br />                            PORTC=0b11111010;<br />                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(i=250;i&gt;0;i--)      // niebieski<br />                    {<br />                            pwm1=i;<br />                            PORTC=0b11111011;<br />                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(j=0;j&lt;250;j++)      // błękitny<br />                    {<br />                            pwm2=j;<br />                            PORTC=0b11111001;<br />                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(k=250;k&gt;0;k--)      // zielony<br />                    {<br />                            pwm3=k;<br />                            PORTC=0b11111101;<br />                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(i=0;i&lt;250;i++)      // pomarańczowy<br />                    {<br />                            pwm1=i;<br />                            PORTC=0b11111100;<br />                                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(k=0;k&lt;250;k++)      // biały<br />                    {<br />                            pwm3=k;<br />                            PORTC=0b11111000;<br />                                            _delay_ms(4);<br />                    }<br />                    _delay_ms(1000);<br />                    PORTC=0b11111111;<br />                    for(j=250;j&gt;0;j--)      // fioletowy<br />                    {<br />                            pwm2=j;<br />                            PORTC=0b11111010;<br />                                            _delay_ms(4);<br />                    }<br />                    PORTC=0b11111111;<br />                    _delay_ms(1000);<br /><br />                    i = 0;<br />            }<br />    }<br />     <br />    // ciało procedury obsługi przerwania Compare Match Timera2<br />    ISR( TIMER2_COMP_vect )<br />    {<br />            static uint8_t cnt; // definicja naszego licznika PWM<br />     <br />            // bezpośrednie sterowanie wyjściami kanałów PWM<br />            if(cnt&gt;=pwm1) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;= ~(1&lt;&lt;PC0);<br />            if(cnt&gt;=pwm2) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;= ~(1&lt;&lt;PC1);<br />            if(cnt&gt;=pwm3) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;= ~(1&lt;&lt;PC2);<br />     <br />            cnt--;  // zwiększanie licznika o 1<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 18 kwi 2017, o 13:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2017-04-18T13:23:26+01:00</updated>
<published>2017-04-18T13:23:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187357#p187357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187357#p187357"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187357#p187357"><![CDATA[
więc zrobiłem teraz tak:<br />for(i=k,k=250;k&gt;0;i--,k--)<br /><br />ostrzeżenie znikło, ale teraz mam pytanie czy na końcu pętli muszę zrobić wygaszenie diody, żeby pętla od początku płynnie się zaczęła wykonywać? Bo jeżeli nie wygaszę diody to na końcowym etapie jest taki przebłysk i pętla jedzie od początku.<br />Chciałbym żeby np. z ostatniego białego koloru płynnie zmienił się kolor na fioletowy (przeszedł na początek pętli). Nie mam pomysłu jak to zrobić, zawsze mam błyśnięcie albo wygaszenie diody.<br /><br />Kombinowałem jeszcze, żeby dodać fioletowy także na końcu pętli, ale i tak błśnięcie jest... <br /><br />mój program:<br />[syntax=c]#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;<br /><br />int main(void)<br />{<br />//***** PROGRAMOWY PWM - 3 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);// preskaler = 1<br />OCR2 = 199;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />sei();// odblokowanie globalne przerwań<br />int i,j,k=0;// definicja zmiennej i na potrzeby pętli for()<br /><br />//PORTC &amp;= ~0xFEFE33;<br /><br />while(1)                                     // pętla nieskończona<br />{<br />for(i=k,k=0;k&lt;250;i++,k++)// fioletowy<br />{<br />pwm1=i;<br />pwm3=k;<br />PORTC=0b11111010;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(i=250;i&gt;0;i--)// niebieski<br />{<br />pwm1=i;<br />PORTC=0b11111011;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(j=0;j&lt;250;j++)// błękitny<br />{<br />pwm2=j;<br />PORTC=0b11111001;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(k=250;k&gt;0;k--)// zielony<br />{<br />pwm3=k;<br />PORTC=0b11111101;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(i=0;i&lt;250;i++)// pomarańczowy<br />{<br />pwm1=i;<br />PORTC=0b11111100;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(k=0;k&lt;250;k++)// biały<br />{<br />pwm3=k;<br />PORTC=0b11111000;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(j=250;j&gt;0;j--)// fioletowy<br />{<br />pwm2=j;<br />PORTC=0b11111010;<br />_delay_ms(4);<br />}<br />PORTC=0b11111111;<br />_delay_ms(1000);<br />}<br />}<br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;= ~(1&lt;&lt;PC0);<br />if(cnt&gt;=pwm2) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;= ~(1&lt;&lt;PC1);<br />if(cnt&gt;=pwm3) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;= ~(1&lt;&lt;PC2);<br /><br />cnt--;// zwiększanie licznika o 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 18 kwi 2017, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2017-04-18T12:26:44+01:00</updated>
<published>2017-04-18T12:26:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187354#p187354</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187354#p187354"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187354#p187354"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Jarecki napisał(a):</div><div class="quotecontent">for(i=250,k=250;<span style="color: #FF0000">i&gt;0,k&gt;0</span>;i--,k--)<br /></div><br />nie stosuje się dwóch warunków w pętli for</div><br /><br />Zgadza się, przeoczyłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 18 kwi 2017, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-04-18T12:24:05+01:00</updated>
<published>2017-04-18T12:24:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187353#p187353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187353#p187353"/>
<title type="html"><![CDATA[Re: Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187353#p187353"><![CDATA[
<div class="quotetitle">Jarecki napisał(a):</div><div class="quotecontent"><br />for(i=250,k=250;<span style="color: #FF0000">i&gt;0,k&gt;0</span>;i--,k--)<br /></div><br />nie stosuje się dwóch warunków w pętli for<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 kwi 2017, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2017-04-18T12:09:47+01:00</updated>
<published>2017-04-18T12:09:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187350#p187350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187350#p187350"/>
<title type="html"><![CDATA[Dwie zmienne w pętli for]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18191&amp;p=187350#p187350"><![CDATA[
Witam,<br />Mam pytanie odnośnie dwóch zmiennych w pętli for. Zacząłem pisać program do płynnej zmiany kolorów RGB i w pętli for tam gdzie mam dwie zmienne wyskakują warningi (w kodzie jest to tam gdzie mam w komentarzu wpisany kolor fioletowy i zielony).<br /><br />Kod się kompiluje i wgrywa do procesora, ale jak przeglądam konsolę to są tam takie komunikaty:<br />../main.c:39:20: warning: left-hand operand of comma expression has no effect [-Wunused-value]<br />../main.c:56:22: warning: left-hand operand of comma expression has no effect [-Wunused-value]<br /><br />a w 39 i 56 linijce kodu w eclipsie są znaczki ostrzegawcze.<br /><br />Czy źle napisałem te pętle for? Jak powinienem to zrobić, aby ostrzeżenie zniknęło?<br /><br />[syntax=c]#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;<br /><br />int main(void)<br />{<br />//***** PROGRAMOWY PWM - 3 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);// preskaler = 1<br />OCR2 = 199;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />sei();// odblokowanie globalne przerwań<br />int i,j,k=0;// definicja zmiennej i na potrzeby pętli for()<br /><br />//PORTC &amp;= ~0xFEFE33;<br /><br />while(1)                                     // pętla nieskończona<br />{<br />for(i=0,k=0;i&lt;250,k&lt;250;i++,k++)// fiolet<br />{<br />pwm1=i;<br />pwm3=k;<br />PORTC=0b11111110;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(j=0;j&lt;250;j++)// biały<br />{<br />pwm2=j;<br />PORTC=0b11111101;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />PORTC=0b11111111;<br />for(i=250,k=250;i&gt;0,k&gt;0;i--,k--)// zielony<br />{<br />pwm1=i;<br />pwm3=k;<br />PORTC=0b11111101;<br />_delay_ms(4);<br />}<br />_delay_ms(1000);<br />}<br />}<br /><br />// obsługa przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;= ~(1&lt;&lt;PC0);<br />if(cnt&gt;=pwm2) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;= ~(1&lt;&lt;PC1);<br />if(cnt&gt;=pwm3) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;= ~(1&lt;&lt;PC2);<br /><br />cnt--;// zwiększanie licznika o 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 18 kwi 2017, o 12:09</p><hr />
]]></content>
</entry>
</feed>