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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-08T18:34:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17253&amp;mode</id>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-01-08T18:34:47+01:00</updated>
<published>2017-01-08T18:34:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179410#p179410</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179410#p179410"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179410#p179410"><![CDATA[
@ShutDownSystem<br /><br />Zapytam z ciekawości czy działa teraz prawidłowo, po ustawieniu preskalera na 1? <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=7157">anshar</a> — 8 sty 2017, o 18:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-08T18:19:29+01:00</updated>
<published>2017-01-08T18:19:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179409#p179409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179409#p179409"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179409#p179409"><![CDATA[
Witam<br /><div class="quotetitle">fifi_22 napisał(a):</div><div class="quotecontent"><br />tylko &quot;rozwaliłeś&quot; mnie tym pytaniem<br /></div><br />Bynajmniej nie było to moim zamiarem - myślałem że pokazując ten fragment kodu masz jeszcze gdzieś to <strong>pwm_red, pwm... </strong> tylko nie wiesz jak to podstawiać/obliczać.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 8 sty 2017, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-06T17:49:35+01:00</updated>
<published>2017-01-06T17:49:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179235#p179235</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179235#p179235"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179235#p179235"><![CDATA[
Witam<br />Zadałem pytanie a kol.fifi_22 się obraził i nie odpowiedział.<br />Jeśli chciałbyś pomysłu jak napędzać licznik tablicy kolorów, to ja wcisnąłem go w programową obsługę PWM'a.<br />To co zamieszczam nie jest niczym górnolotnym; liczenie tablicy jak i &quot;długość&quot; koloru jest dla każdej barwy inna i jeśli na początku startują razem, to już po kilku obiegach te liczniki rozjeżdżają się i kolor pływa.<br />Do swoich celów możesz dołożyć jeszcze jeden kolor - droga otwarta.<br />Nie mogę znaleźć rev.1-B  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  w którym to program wykluczał całkowite zgaszenie &quot;trójLED'a&quot;, ale na początek...<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 4 lip 2014<br /> *      Author: Andrzej<br /> *  ATmega8  8MHz - wew.<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#define LED_R_DIR  DDRB<br />#define LED_R_PIN  (1&lt;&lt;PB4)<br />#define LED_R_PORT PORTB<br />#define LED_R_ON   PORTB |= LED_R_PIN<br />#define LED_R_OFF  PORTB &amp;= ~LED_R_PIN<br /><br />#define LED_G_DIR  DDRB<br />#define LED_G_PIN  (1&lt;&lt;PB3)<br />#define LED_G_PORT PORTB<br />#define LED_G_ON   PORTB |= LED_G_PIN<br />#define LED_G_OFF  PORTB &amp;= ~LED_G_PIN<br /><br />#define LED_B_DIR  DDRB<br />#define LED_B_PIN  (1&lt;&lt;PB2)<br />#define LED_B_PORT PORTB<br />#define LED_B_ON   PORTB |= LED_B_PIN<br />#define LED_B_OFF  PORTB &amp;= ~LED_B_PIN<br /><br />#define STEEP  200  // prędkość zmiany kolorów<br /><br /><br />#define GAMMA(a) (pgm_read_byte(&amp;gamma_correctionR&#91;a&#93;))  // macro for RED<br /><br />const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,<br />  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,<br />  2,  2,  2,  2,  2,  2,  2,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,<br />  5,  5,  5,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10,<br /> 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18,<br /> 19, 19, 20, 20, 21, 21, 22, 23, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29,<br /> 30, 30, 31, 32, 33, 33, 34, 35, 36, 36, 37, 38, 39, 39, 40, 41, 42, 43,<br /> 44, 45, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,<br /> 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 81,<br /> 82, 83, 85, 86, 87, 88, 90, 91, 92, 94, 95, 97, 98, 99,101,102,104,105,<br />107,108,110,111,113,114,116,117,119,121,122,124,125,127,129,130,132,134,<br />135,137,139,141,142,144,146,148,149,151,153,155,157,159,161,162,164,166,<br />168,170,172,174,176,178,180,182,184,186,188,190,192,195,197,199,201,203,<br />205,208,210,212,214,217,219,221,223,226,228,230,233,235,237,240,242,245,<br />247,250,252,255<br />};<br /><br />void in_out_init (void);<br />void timer2_init(void);<br /><br />void kolor_R(void);<br />void kolor_G(void);<br />void kolor_B(void);<br /><br />uint16_t led_R, led_G, led_B;            // licznik kroków kolorów<br />volatile uint8_t licz_R, licz_G, licz_B; // nr komórki tablicy<br />volatile uint8_t clock, clock_flag;<br /><br />int main (void){<br /><br />timer2_init();<br />    in_out_init ();<br /><br /><br />sei();<br />while(1){<br /><br />if(clock_flag){<br /><br />if(0 ==clock%3){<br /><br />kolor_R();<br />}<br /><br />                       if(1 ==clock%3){<br /><br />kolor_G();<br />                       }<br /><br />                      if(2 ==clock%3){<br /><br />kolor_B();<br />                      } <br /><br /><br />        clock_flag=0;<br /><br />} // END clock_flag<br /><br />} // END while<br /><br />}    // END main<br /><br />ISR(TIMER2_COMP_vect)                // obsługa pwm programowy<br /><br />{<br /><br />        static uint8_t cnt;<br />        static uint16_t takt;<br />        if (cnt &gt;= GAMMA(licz_R)) LED_R_ON;      else LED_R_OFF; //dioda R<br />        if (cnt &gt;= GAMMA(licz_G)) LED_G_ON;      else LED_G_OFF; //dioda G<br />        if (cnt &gt;= GAMMA(licz_B)) LED_B_ON;      else LED_B_OFF; //dioda B<br /><br />        cnt++;<br />        takt++;<br />        if(takt &gt;STEEP){  // STEEP -  ustawiane w #define<br />        takt =0;<br />        clock_flag =1;<br />        clock ++;<br />        }<br />}<br /><br /><br />void in_out_init (void){<br />LED_R_DIR |= LED_R_PIN;<br />LED_G_DIR |= LED_G_PIN;<br />LED_B_DIR |= LED_B_PIN;<br />}<br /><br />void timer2_init(void){<br /><br />TCCR2 |= (1 &lt;&lt; WGM21);    // tryb CTC multipleksera<br />TCCR2 |= (1&lt;&lt;CS21);    // preskaler - 8<br />TIMSK |= (1&lt;&lt;OCIE2);      // przerwanie<br /><br />OCR2 = 20;<br /><br />}<br /><br /><br />void kolor_R(void){<br /><br />led_R ++;<br />    if(led_R&gt; 1280) led_R =0;<br /><br />if(led_R &lt;256) licz_R =led_R;<br />else if(led_R &gt;255 &amp;&amp; led_R &lt; 769) licz_R =255;<br />else if(led_R &gt;768 &amp;&amp; led_R &lt;1024) licz_R = (1024 -led_R);<br />else licz_R =0;<br /><br />}<br /><br />void kolor_G(void){<br /><br />led_G ++;<br />if(led_G&gt; 1285) led_G =0;  // +5 do R<br /><br />if(led_G &lt;256) licz_G =led_G;<br />else if(led_G &gt;255 &amp;&amp; led_G &lt; 774) licz_G =255;<br />else if(led_G &gt;773 &amp;&amp; led_G &lt;1029) licz_G = (1029 -led_G);<br />else licz_G =0;<br /><br />}<br /><br />void kolor_B(void){<br /><br />led_B ++;<br />if(led_B&gt; 1290) led_B =0;  // +5 do G<br /><br />if(led_B &lt;256) licz_B =led_B;<br />else if(led_B &gt;255 &amp;&amp; led_B &lt; 779) licz_B =255;<br />else if(led_B &gt;778 &amp;&amp; led_B &lt;1034) licz_B = (1034 -led_B);<br />else licz_B =0;<br /><br />}<br /><br />   /* * *    I   T O   B Y   B Y Ł O   N A   T Y L E    * * */[/syntax]<br /><br />Trochę to rozlazłe, ale dla celów poglądowych przepisałem to do jednego pliku.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 6 sty 2017, o 17:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-01-06T00:27:15+01:00</updated>
<published>2017-01-06T00:27:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179203#p179203</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179203#p179203"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179203#p179203"><![CDATA[
Ustaw preskaler na 1.  <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=7157">anshar</a> — 6 sty 2017, o 00:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2017-01-05T22:53:04+01:00</updated>
<published>2017-01-05T22:53:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179196#p179196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179196#p179196"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179196#p179196"><![CDATA[
Witam serdecznie! <br />Akurat robię akrylową lampkę i chciałbym, aby również zmieniała płynnie kolory, ale bardzo powoli.<br /><br />Wymyśliłem, aby przemieszczać się w przestrzeni barw HSV, aby maksymalnie uprościć pętlę główną. Dla szybko zmieniających się kolorów program działa wyśmienicie, ale gdy ustawię ustawię czas kroku na dłuższy, o wiele dłuższy, diody LED tak jakby w przeskakują, przejścia nie działają płynnie, nie działa to ładnie. Wstawiam kodzik, HSV daje duże możliwości, z resztą pan Mirek gdzieś już o tym wspominał. <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 21 gru 2016<br /> *      Author: SDS<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/sleep.h&gt;<br /><br />uint8_t RED1=255,GREEN2=255,BLUE3=255;<br />uint8_t i = 0;<br /><br />// ------ gamma  RED   = 1,0<br />const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,<br /> 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,<br /> 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,<br /> 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,<br /> 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,<br /> 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,<br />108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,<br />126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,<br />144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,<br />162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,<br />180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,<br />198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,<br />216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,<br />234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,<br />252,253,254,255<br />};<br /><br />// ------ gamma  GREEN = 2,0<br />const uint8_t gamma_correctionG&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,<br />  1,  1,  1,  1,  2,  2,  2,  2,  2,  3,  3,  3,  3,  3,  4,  4,  4,  5,<br />  5,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,  8,  9,  9, 10, 10, 10, 11,<br /> 11, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 20,<br /> 20, 21, 21, 22, 23, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29, 30, 30, 31,<br /> 32, 32, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 42, 42, 43, 44, 45,<br /> 46, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59, 60, 61,<br /> 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80,<br /> 81, 82, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 97, 98, 99,100,102,<br />103,104,105,107,108,109,111,112,113,115,116,117,119,120,121,123,124,126,<br />127,128,130,131,133,134,136,137,138,140,141,143,144,146,147,149,151,152,<br />154,155,157,158,160,161,163,165,166,168,169,171,173,174,176,178,179,181,<br />183,184,186,188,190,191,193,195,196,198,200,202,204,205,207,209,211,213,<br />214,216,218,220,222,224,225,227,229,231,233,235,237,239,241,243,245,247,<br />249,251,253,255<br />};<br />// ------ gamma  BLUE  = 2,0<br />const uint8_t gamma_correctionB&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,<br />  1,  1,  1,  1,  2,  2,  2,  2,  2,  3,  3,  3,  3,  3,  4,  4,  4,  5,<br />  5,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,  8,  9,  9, 10, 10, 10, 11,<br /> 11, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 20,<br /> 20, 21, 21, 22, 23, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29, 30, 30, 31,<br /> 32, 32, 33, 34, 35, 35, 36, 37, 38, 38, 39, 40, 41, 42, 42, 43, 44, 45,<br /> 46, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59, 60, 61,<br /> 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80,<br /> 81, 82, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 97, 98, 99,100,102,<br />103,104,105,107,108,109,111,112,113,115,116,117,119,120,121,123,124,126,<br />127,128,130,131,133,134,136,137,138,140,141,143,144,146,147,149,151,152,<br />154,155,157,158,160,161,163,165,166,168,169,171,173,174,176,178,179,181,<br />183,184,186,188,190,191,193,195,196,198,200,202,204,205,207,209,211,213,<br />214,216,218,220,222,224,225,227,229,231,233,235,237,239,241,243,245,247,<br />249,251,253,255<br />};<br /><br />#define GAMMAR(a) (pgm_read_byte(&amp;gamma_correctionR&#91;a&#93;))  // macro for RED<br />#define GAMMAG(a) (pgm_read_byte(&amp;gamma_correctionG&#91;a&#93;))  // macro for GREEN<br />#define GAMMAB(a) (pgm_read_byte(&amp;gamma_correctionB&#91;a&#93;))  // macro for BLUE<br /><br />volatile uint16_t counter;<br />//uint8_t key_lock = 0;<br /><br />#define SECX ( 400 )<br /><br />void hsv2rgb( uint8_t hue, uint8_t sat, uint8_t val, uint8_t * redv, uint8_t * greenv, uint8_t * bluev );<br />void mDelay( uint16_t delay );<br /><br />int main() {<br /><br />PRR |= (1&lt;&lt;PRADC)|(1&lt;&lt;PRTIM1)|(1&lt;&lt;PRUSI);<br />ACSR |= (1&lt;&lt;ACD);<br /><br />PCMSK |= (1&lt;&lt;PCINT4);<br />GIMSK |= (1&lt;&lt;PCIE);<br /><br />DDRB |= (1&lt;&lt;PB0);<br />DDRB |= (1&lt;&lt;PB1);<br />DDRB |= (1&lt;&lt;PB2);<br /><br />DDRB &amp;= ~(1&lt;&lt;PB3);<br />PORTB &amp;= ~(1&lt;&lt;PB3);<br /><br />DDRB &amp;= ~(1&lt;&lt;PB4);<br />PORTB |= (1&lt;&lt;PB4);<br /><br />TCCR0A |= (1&lt;&lt;WGM01);<br />TCCR0B |= (1&lt;&lt;CS01);<br />OCR0A = 24;<br />TIMSK |= (1&lt;&lt;OCIE0A);<br /><br />_delay_ms(10);<br /><br />//set_sleep_mode( SLEEP_MODE_PWR_DOWN );<br />sei();<br /><br />while(1) {<br />if( !counter ) {<br />hsv2rgb( i++,255,255,&amp;RED1,&amp;GREEN2,&amp;BLUE3 );<br />counter = SECX;<br />}<br /><br />//if( !key_lock &amp;&amp; !(PINB &amp; (1&lt;&lt;PB4) ) ) {<br />//key_lock=1;<br />//<br />//_delay_ms(150);<br />//sleep_enable();<br />//hsv2rgb(255,0,255,&amp;RED1,&amp;GREEN2,&amp;BLUE3);<br />//_delay_ms(1);<br />//sei();<br />//sleep_cpu();<br />//<br />// } else if( key_lock &amp;&amp; (PINB &amp; (1&lt;&lt;PB4) ) ) key_lock++;<br />}<br />}<br /><br />ISR( PCINT0_vect ) {<br />//sleep_disable();<br />}<br /><br />void mDelay( uint16_t delay ) {<br />for( ; delay &gt; 0; --delay ) {<br />_delay_ms(1);<br />}<br />}<br /><br />void hsv2rgb( uint8_t hue, uint8_t sat, uint8_t val, uint8_t * redv, uint8_t * greenv, uint8_t * bluev ) {<br />    uint16_t region, remainder, p, q, t;<br /><br />    if( sat == 0 ) {<br />            *redv = GAMMAR( val );<br />            *greenv = GAMMAG( val );<br />            *bluev = GAMMAB( val );<br />    } else {<br />    region = hue * 6 / 256;<br />    remainder = ( hue * 6 ) % 256;<br /><br />    p = ( val * ( 255 - sat )) / 256;<br />    q = ( val * ( 255- ( sat * remainder) / 256)) / 256;<br />    t = ( val * ( 255- ( sat * ( 255 - remainder )) / 256 )) / 256;<br /><br />    switch ( region ) {<br />    case 0:<br />    *redv = GAMMAR( val ); *greenv = GAMMAG( t ); *bluev = GAMMAB( p );<br />    break;<br /><br />    case 1:<br />    *redv = GAMMAR( q ); *greenv = GAMMAG( val ); *bluev = GAMMAB( p );<br />     break;<br /><br />    case 2:<br />    *redv = GAMMAR( p ); *greenv = GAMMAG( val ); *bluev = GAMMAB( t );<br />      break;<br /><br />    case 3:<br />    *redv = GAMMAR( p ); *greenv = GAMMAG( q ); *bluev = GAMMAB( val );<br />       break;<br /><br />    case 4:<br />    *redv = GAMMAR( t ); *greenv = GAMMAG( p ); *bluev = GAMMAB( val );<br />        break;<br /><br />    case 5:<br />    *redv = GAMMAR( val ); *greenv = GAMMAG( p ); *bluev = GAMMAB( q );<br />            break;<br />    }<br />    }<br />}<br /><br />ISR( TIMER0_COMPA_vect ) {<br /> static uint8_t licznik;<br /> uint16_t n;<br /><br /> if(licznik&gt;=RED1) PORTB |= (1&lt;&lt;PB1); else PORTB &amp;= ~(1&lt;&lt;PB1);<br /> if(licznik&gt;=GREEN2) PORTB |= (1&lt;&lt;PB2); else PORTB &amp;= ~(1&lt;&lt;PB2);<br /> if(licznik&gt;=BLUE3) PORTB |= (1&lt;&lt;PB0); else PORTB &amp;= ~(1&lt;&lt;PB0);<br /> licznik++;<br /><br /> n = counter;<br /> if( n ) counter = --n;<br />}[/syntax]<br /><br />Jeśli ktoś by wiedział, co poradzić, aby przy dłuższych czasach nie było takich brzydkich przeskoków, chętnie się douczę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />PROGRAMIŚCI GÓRĄ !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 5 sty 2017, o 22:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-01-05T19:15:34+01:00</updated>
<published>2017-01-05T19:15:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179182#p179182</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179182#p179182"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179182#p179182"><![CDATA[
witam,<br /><div class="quotetitle">fifi_22 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">fifi_22 napisał(a):</div><div class="quotecontent">Głowię się i głowię i nie mogę wymyślić. Jeżeli ktoświe jak to rozwiązać to proszę o odp.<br /></div></div><br />używasz cnt uint8_t, to w np timerze0, możesz zmieniać wartości też w zakresie 8bit.<br />pwm_red, pwm_green, pwm_blue, pwm_white.<br />rozumiem że &quot;pwm_white&quot;, to czwarty kanał do koloru tylko białego.<br />pobaw się w zmianę tych wartości uzależniając je od siebie nawzajem. np. coś jakoś tak.<br />[syntax=c]volatole uint8_t flag_red, flag_green, flag_blue, flag_white;[/syntax]<br />w przerwaniu : jeżeli jest flaga koloru to się rozjaśnia, a jeżeli nie to się ściemnia .<br />[syntax=c]if(pwm_red&lt;255 &amp;&amp; flag_red) pwm_red ++;<br />else<br />if(pwm_red) pwm_red--;<br />if(pwm_green&lt;255 &amp;&amp; flag_green) pwm_green++;<br />else<br />if(pwm_green) pwm_green--;<br />if(pwm_blue&lt;255 &amp;&amp; flag_blue) pwm_blue++;<br />else<br />if(pwm_blue) pwm_blue--;<br />if(pwm_white&lt;255 &amp;&amp; flag_white) pwm_white++;<br />else<br />if(pwm_white) pwm_white--;[/syntax]<br />trzeba by jeszcze dopisać obsługę tych flag, ale to już tylko cztery sztuki.<br />Mogą być w petli.<br />[syntax=c]if(pwm_red == 255)  {flag_blue = 0; flag_green = 1;}<br />if(pwm_green == 255)  {flag_red = 0; flag_blue = 1;} <br />if(pwm_blue == 255)  {flag_green = 0; flag_red = 1;}<br />if(!pwm_white &amp;&amp; !pwm_red) flag_white = 1; else if(pwm_white == 255 &amp;&amp; !pwm_red) flag_white =0;[/syntax]<br />może jakoś_takoś sobie nimi żonglować:),<br />albo jakoś zupełnie inaczej  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> .  bo sporo kodu wyszło.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Hmm... może lepiej uzależnić je od czasu nie od siebie.  <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=11549">Daro69</a> — 5 sty 2017, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-05T18:39:00+01:00</updated>
<published>2017-01-05T18:39:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179175#p179175</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179175#p179175"/>
<title type="html"><![CDATA[Re: PWM atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17253&amp;p=179175#p179175"><![CDATA[
Witam<br />Po pierwsze - wklej poprawnie ten fragment kodu.<br />Czy ktoś wie... no na pewno, ale musisz pokazać to czego nie rozumiesz oraz w jaki sposób zamierzasz zwiększać te pwm_red, pwm_ .... liniowo, czy korekcją GAMMA.<br /><div class="quotetitle">fifi_22 napisał(a):</div><div class="quotecontent"><br />Ostatnio kupiłem Pańską książkę bluebook.<br /></div><br />...no no, i już w połowie książki  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 5 sty 2017, o 18:39</p><hr />
]]></content>
</entry>
</feed>