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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-09T17:16:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9350&amp;mode</id>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-09T17:16:43+01:00</updated>
<published>2014-12-09T17:16:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107939#p107939</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107939#p107939"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107939#p107939"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam <br />Nie chciałbym niczego narzucać, ale taki &quot;hebel&quot; możesz zastosować w każdym punkcie Twojego układu od wyłączenia uC przez ingerencję w program do wyłączenia zasilania LED'ów włącznie.<br />Wstawiając coś subtelniejszego sam zrobisz mały krok dla człowieka .....  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Np.: switch - dajesz dwa takie, w każdym z nich inny rodzaj pracy i sprawdzenie KEY - jeśli nie to w nim pozostajesz, jeśli tak to przeskakujesz do drugiego. Prymitywne ale odpalasz naciskając a nie heblując.<br /><br />Pozdr.<br /></div><br /><br />Łapię, że te 'heble' to ostry przerost formy nad treścią. <br />Jednak też przez takie heble, będę miał jasną informację, co akurat powinno się dziać poprzez spojrzenie na dany mikroprzełącznik. <br /><br />Co do tej spalonej atmegi. To trochę fałszywy alarm. Podłączyłem sprawną atmegę i również układ nie zadziałał. Ten sam błąd podczas sprawdzania uC w mkAVR. <br />Wczoraj po odłączeniu uC układ dobrze chodził na 'manualu', może dlatego nie sprawdziłem zasilacza, który ma tylko 150mA i przestał wyrabiać. <br /><br />Tak to niestety bywa, jak ma się kilka zasilaczy pod ręką i szybko chce się coś posprawdzać  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 9 gru 2014, o 17:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-09T12:46:43+01:00</updated>
<published>2014-12-09T12:46:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107924#p107924</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107924#p107924"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107924#p107924"><![CDATA[
Witam <br />Nie chciałbym niczego narzucać, ale taki &quot;hebel&quot; możesz zastosować w każdym punkcie Twojego układu od wyłączenia uC przez ingerencję w program do wyłączenia zasilania LED'ów włącznie.<br />Wstawiając coś subtelniejszego sam zrobisz mały krok dla człowieka .....  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Np.: switch - dajesz dwa takie, w każdym z nich inny rodzaj pracy i sprawdzenie KEY - jeśli nie to w nim pozostajesz, jeśli tak to przeskakujesz do drugiego. Prymitywne ale odpalasz naciskając a nie heblując.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 9 gru 2014, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-09T12:04:15+01:00</updated>
<published>2014-12-09T12:04:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107916#p107916</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107916#p107916"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107916#p107916"><![CDATA[
<div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />SW1 to taki szybki reset przy dłuższym programie<br /></div><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />...dla tego podkreśliłem wyraz &quot;u Ciebie&quot; - porównaj ze schematami: guziczek RESET &quot;zwyczajowo&quot; dołącza GND a nie Vcc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /></div><br /><br />Rzeczywiście. Na płyce SW1 mam podłączony do GND. Dodatkowo dorzucę jeszcze między SW1, a GND rezystorek 470R. <br /><br /><br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />Docelowo właśnie przewiduję gasić nim ledy<br /></div><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />...ale w ten sposób aby mieć zgaszone będziesz musiał tego naciskaczka trzymać.<br />Ja bym użył albo instrukcji &quot;switch&quot; albo funkcji &quot;SuperDebounce&quot;.<br /></div><br /><br />No tak. Zastosuję mikroprzełącznik jednopozycyjny co rozwiąże 'trzymanie'. <br /><a href="http://forum.atnel.pl/_obrazki/o/5761/db7cee66ee5aea0eb187f37ffb880e02.PNG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/5761/db7cee66ee5aea0eb187f37ffb880e02.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 9 gru 2014, o 12:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-09T07:06:18+01:00</updated>
<published>2014-12-09T07:06:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107901#p107901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107901#p107901"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107901#p107901"><![CDATA[
Witam<br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />SW1 to taki szybki reset przy dłuższym programie<br /></div><br />...dla tego podkreśliłem wyraz &quot;u Ciebie&quot; - porównaj ze schematami: guziczek RESET &quot;zwyczajowo&quot; dołącza GND a nie Vcc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />Docelowo właśnie przewiduję gasić nim ledy<br /></div><br />...ale w ten sposób aby mieć zgaszone będziesz musiał tego naciskaczka trzymać.<br />Ja bym użył albo instrukcji &quot;switch&quot; albo funkcji &quot;SuperDebounce&quot;.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 9 gru 2014, o 07:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-09T00:36:19+01:00</updated>
<published>2014-12-09T00:36:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107893#p107893</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107893#p107893"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107893#p107893"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br />To Twoje podłączenie wydaje się &quot; niepalące &quot; układu aczkolwiek dość egzotyczne - mogłeś tego LED'a wstawić w miejsce R12.<br /></div><br /><br />Ledy świecą, a uC nie odpowiada na sprawdzanie przez mkAVR. <br />Egzotyczne?? Wydaje mi się, że ma to szanse zadziałać  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br /><br />Leda wstawiłem w to miejsce, ponieważ chce sprawdzać jak działa układ przy napięciu 5V bez udziału 24V na ledach. <br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Dlaczego przy LED'ach brak rezystorów - może uC żyje tylko LED'y poszły się ... Tak na marginesie: do czego <span style="text-decoration: underline">u Ciebie</span> służy SW1 - RESET <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br /></div><br /><br />Przy ledach brak rezystorów, bo mam tam zwykłe paski choinkowe, która pobierają 45mA razem, więc po 11,25mA na sztukę. <br />SW1 to taki szybki reset przy dłuższym programie, pozwoli mi szybko wrócić do początku. <br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Co chciałbyś osiągnąć naciskając SW2 ? bo na razie <strong>chwilowo</strong> zgasisz LED'y.<br /></div><br /><br />Docelowo właśnie przewiduję gasić nim ledy.  <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=5761">lukas25</a> — 9 gru 2014, o 00:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-09T00:09:32+01:00</updated>
<published>2014-12-09T00:09:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107889#p107889</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107889#p107889"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107889#p107889"><![CDATA[
Witam<br />To Twoje podłączenie wydaje się &quot; niepalące &quot; układu aczkolwiek dość egzotyczne - mogłeś tego LED'a wstawić w miejsce R12. Dlaczego przy LED'ach brak rezystorów - może uC żyje tylko LED'y poszły się ... Tak na marginesie: do czego <span style="text-decoration: underline">u Ciebie</span> służy SW1 - RESET <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . <br />Co chciałbyś osiągnąć naciskając SW2 ? bo na razie <strong>chwilowo</strong> zgasisz LED'y.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 9 gru 2014, o 00:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-08T23:26:30+01:00</updated>
<published>2014-12-08T23:26:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107887#p107887</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107887#p107887"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107887#p107887"><![CDATA[
&quot; ty nie dochodzisz do nr0 tablicy tylko do nr.1&quot; Rzeczywiście  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Wysterowanie PWM tranzystorami NPN jak to pokazałeś działa. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  R1 ( u mnie R13) trochę doświadczalnie dobrałem i układ działa poprawnie przy 22k&lt;R1&lt;100k. <br /><br />Skusiłem się podłączeniem diody D1 do układu, po czym zdaje się spaliłem atmegę. I w sumie zastanawiam się dlaczego, skoro wydaje mi się, że wszystko powinno być dobrze.  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  <br /><br />Teraz mam zamiar dodać przycisk SW2, by np. móc wyłączyć PWM. Choć mam obawę przed podłączeniem i spaleniem kolejnej sztuki  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br /><br />Czy te podłączenie D1 i sw2 jest skopane przy obecnym kodzie? Bo przez te spalenie zwątpiłem... Czy układ mam skopany, czy doszło do mojej pomyłki przy podłączeniu. Choć i tak układ spalić to nie prosta sprawa.  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" />  <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/5761/6560edd2b80fb49eab7b8d0e757bc32f.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5761/6560edd2b80fb49eab7b8d0e757bc32f.JPG" alt="Obrazek" /></a><br /><br />Kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />    #include &lt;util/delay.h&gt;<br /><br />    #include &lt;avr/interrupt.h&gt;<br /><br /><br /><br />    #define LED_red (1&lt;&lt;PB4)  //red led<br />    #define LED_OFF_red PORTB |= LED_red<br />    #define LED_ON_red PORTB &amp;= ~LED_red<br /><br />// przycisk<br /><br />    #define KEY_PIN (1&lt;&lt;PB3)<br />#define KEY_DOWN !(PINB &amp; KEY_PIN)<br /><br /><br />    volatile uint8_t pwm_red;<br /><br /><br />    void pwm_red_sciemniaj(void);<br /><br />    #define time1 300<br /><br />    uint8_t i;<br /><br />    // ------ gamma  BLUE  = 1.9<br /><br />    uint8_t tab&#91;100&#93; = {<br /><br />                      0,  0,  1,  1,  1,  1,  1,  2,  2,  3,  3,  4,  5,  6,  6,  7,  8,  9,<br /><br />                     10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 34, 36,<br /><br />                     38, 40, 42, 44, 46, 49, 51, 53, 55, 58, 60, 63, 65, 68, 70, 73, 76, 79,<br /><br />                     81, 84, 87, 90, 93, 96, 99,102,105,109,112,115,119,122,125,129,133,136,<br /><br />                    140,143,147,151,155,159,162,166,170,174,178,183,187,191,195,200,204,208,<br /><br />                    213,217,222,226,231,235,240,245,250,254<br /><br />                    };<br /><br />    // główna funkcja programu main()<br /><br />    int main()<br /><br />    {<br /><br />            PORTB |= LED_red; // wylaczenie diod podlaczonych katodami do wyjsc<br /><br />            DDRB |= LED_red; //kierunek pinu - wyjsciowy<br /><br />            DDRB &amp;= KEY_PIN;<br />            PORTB |= KEY_PIN;<br /><br /><br />        TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br /><br />        TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br /><br />        OCR1A = 200; //dodatkowy dzielnik częstotliwości<br /><br />        TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br /><br />  sei();<br /><br />            while(1)<br /><br />            {<br /><br />            if (KEY_DOWN)<br />            {<br />            _delay_ms(80);<br />            if (KEY_DOWN) //wcisniety klawisz<br />            {<br />            pwm_red = 0;<br />            }<br />            else<br />            pwm_red_sciemniaj();<br /><br />            _delay_ms(1000);<br /><br />            pwm_red = 0;<br /><br />            _delay_ms(1000);<br />            }<br /><br /><br />            }<br />    }<br /><br />    /// funkcje<br /><br /><br />    void pwm_red_sciemniaj(void)<br /><br />    {<br /><br />            // pętla sciemniajaca  LED<br /><br />            for(i=99;i&gt;0;i--)<br /><br />                            {<br />                                    pwm_red=tab&#91;i&#93;;<br /><br />                                    if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br />                            }<br /><br />    }<br /><br />    // ciało procedury obsługi przerwania Compare Match Timera2<br /><br /><br /><br />    ISR(TIMER2_COMP_vect)//TIMER2_COMP_vect// ISR(TIMER1_COMPA_vect) //( TIMER2_COMP_vect )<br /><br />    {<br /><br />            static uint8_t cnt; // definicja naszego licznika PWM<br /><br /><br /><br />            // bezpośrednie sterowanie wyjściami kanałów PWM<br /><br />            //red<br /><br />            if(cnt&gt;=pwm_red) PORTB |= LED_red; else PORTB &amp;= ~LED_red;<br /><br /><br /><br />            cnt++;  // zwiększanie licznika o 1<br /><br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 8 gru 2014, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-07T17:30:26+01:00</updated>
<published>2014-12-07T17:30:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107726#p107726</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107726#p107726"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107726#p107726"><![CDATA[
Witam<br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />Istnieją jakieś ograniczenia co do stosowalności PWM w połączeniu z tranzystorami??<br /></div><br />W.g mnie to tylko prądowe; zwykle PWM'y nieznacznie &quot;wychodzą poza akustyczną&quot;, a dla tranzystorów to stanie w miejscu  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br />Co do schematu - ja do włączania LED'ów czy innych odbiorników nie stosuję tranzystorów jako wtórniki emiterowe, bardziej poprawny schemat to:<br /><a href="http://forum.atnel.pl/_obrazki/o/826/06c4c505caec100db9ab4caadb06c45d.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/826/06c4c505caec100db9ab4caadb06c45d.JPG" alt="Obrazek" /></a>.<br />Jako T2 możesz np.  użyć BC337, ..8 lub odpowiedniki; T1 dowolny NPN.<br /><br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />...i kończeniu tablicy [...255, 255, 255] już tego typu sposób nie działa<br /></div><br />...bo tu chodzi o to, że w &quot;moim&quot; układzie w całym widmie jedynek jednej brakuje ( niezauważalne) a u Ciebie w widmie zer dostajesz malutki pik z jedyneczki  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />A te dwa zera na początku są po to, że ty nie dochodzisz do <strong>nr0</strong> tablicy tylko do <strong>nr.1</strong><br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 7 gru 2014, o 17:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-07T12:19:46+01:00</updated>
<published>2014-12-07T12:19:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107673#p107673</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107673#p107673"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107673#p107673"><![CDATA[
Cześć,<br /><br />PWM Kicajka działa bez problemu. <br />Teraz tylko zastanawiam się, czy tranzystor PNP 2N3906 da radę obsłużyć PWM dla układu poniżej.<br />Dodam, że maksymalny Ic przewiduję na poziomie 70-100mA. <br /><br />Czy może lepszy będzie BC327 przy maksymalnym Ic=100mA ? <br />Istnieją jakieś ograniczenia co do stosowalności PWM w połączeniu z tranzystorami?? Częstotliwości pracy tranzystorów są większe od 8MHz uC, więc wydaje mi się, że nie powinno być z tym problemu. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />    #include &lt;util/delay.h&gt;<br /><br />    #include &lt;avr/interrupt.h&gt;<br /><br /><br /><br />    #define LED_red (1&lt;&lt;PB4)  //red led<br /><br />    #define LED_blue (1&lt;&lt;PC0)       //blue led<br /><br />    #define LED_OFF_blue PORTC |= LED_blue<br /><br />    #define LED_ON_blue PORTC &amp;= ~LED_blue<br /><br /><br /><br />    #define LED_OFF_red PORTB |= LED_red<br /><br />    #define LED_ON_red PORTB &amp;= ~LED_red<br /><br />    volatile uint8_t pwm_red,pwm_blue;<br /><br /><br />    void pwm_blue_sciemniaj(void);<br /><br />    void pwm_red_sciemniaj(void);<br /><br />    #define time1 300<br /><br />    uint8_t i;<br /><br />    // ------ gamma  BLUE  = 1.9<br /><br />    uint8_t tab&#91;100&#93; = {<br /><br />                      0,  0,  1,  1,  1,  1,  1,  2,  2,  3,  3,  4,  5,  6,  6,  7,  8,  9,<br /><br />                     10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 34, 36,<br /><br />                     38, 40, 42, 44, 46, 49, 51, 53, 55, 58, 60, 63, 65, 68, 70, 73, 76, 79,<br /><br />                     81, 84, 87, 90, 93, 96, 99,102,105,109,112,115,119,122,125,129,133,136,<br /><br />                    140,143,147,151,155,159,162,166,170,174,178,183,187,191,195,200,204,208,<br /><br />                    213,217,222,226,231,235,240,245,250,254<br /><br />                    };<br /><br />    // główna funkcja programu main()<br /><br />    int main()<br /><br />    {<br /><br />            PORTC |= LED_blue; // wylaczenie diod podlaczonych katodami do wyjsc<br /><br />            DDRC |= LED_blue; //kierunek pinu - wyjsciowy<br /><br />            PORTB |= LED_red;<br /><br />            DDRB |= LED_red;<br /><br /><br /><br />        TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br /><br />        TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br /><br />        OCR1A = 200; //dodatkowy dzielnik częstotliwości<br /><br />        TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br /><br />    sei();<br /><br />            while(1)<br /><br />            {<br /><br />                    pwm_blue = 255; // świeci<br /><br />                    pwm_red_sciemniaj();<br /><br />                    _delay_ms(1000);<br /><br />                    pwm_red = 0;<br /><br />                    pwm_blue_sciemniaj();<br /><br />                    _delay_ms(10000);<br /><br />                    pwm_blue =255;<br /><br />                    _delay_ms(1000);<br /><br />                    pwm_blue =0;<br /><br />                    _delay_ms(1000);<br /><br />                    pwm_blue =255;<br /><br />                    _delay_ms(1000);<br /><br />                    pwm_blue =0;<br /><br />                    _delay_ms(10000);<br /><br />            }<br />    }<br /><br />    /// funkcje<br /><br /><br /><br />    void pwm_blue_sciemniaj(void)<br /><br />    {<br /><br />            // pętla sciemniajaca  LED<br /><br />            for(i=99;i&gt;0;i--)<br /><br />                            {<br />                                    pwm_blue=tab&#91;i&#93;;<br /><br />                                    if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br />                            }<br /><br />    }<br /><br /><br /><br />    void pwm_red_sciemniaj(void)<br /><br />    {<br /><br />            // pętla sciemniajaca  LED<br /><br />            for(i=99;i&gt;0;i--)<br /><br />                            {<br />                                    pwm_red=tab&#91;i&#93;;<br /><br />                                    if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br />                            }<br /><br />    }<br /><br />    // ciało procedury obsługi przerwania Compare Match Timera2<br /><br /><br /><br />    ISR(TIMER1_COMPA_vect) //( TIMER2_COMP_vect )<br /><br />    {<br /><br />            static uint8_t cnt; // definicja naszego licznika PWM<br /><br /><br /><br />            // bezpośrednie sterowanie wyjściami kanałów PWM<br /><br />            //blue<br /><br />            if(cnt&gt;=pwm_blue) PORTC |= LED_blue; else PORTC &amp;= ~LED_blue;<br /><br />            //red<br /><br />            if(cnt&gt;=pwm_red) PORTB |= LED_red; else PORTB &amp;= ~LED_red;<br /><br /><br /><br />            cnt++;  // zwiększanie licznika o 1<br /><br />    }[/syntax]<br /><br />Układ z tranzystorem 2N3906:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/5761/52e88196362ab3404c454ccc801787f0.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5761/52e88196362ab3404c454ccc801787f0.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 7 gru 2014, o 12:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-06T23:21:58+01:00</updated>
<published>2014-12-06T23:21:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107641#p107641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107641#p107641"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107641#p107641"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent">dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody<br /></div><br />...to teraz zacznij tablicę od dwóch zer {0,0,1 .....}<br /><br />Pozdr.</div><br /><br />Działa przy anoda/Vcc katoda/uC, dzięki  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  <br /><br />Przy katoda/Vcc, anoda/uC i kończeniu tablicy [...255, 255, 255] już tego typu sposób nie działa. Jestem jednak przyzwyczajony do tranzystorów NPN  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" />  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 6 gru 2014, o 23:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-06T22:53:20+01:00</updated>
<published>2014-12-06T22:53:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107638#p107638</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107638#p107638"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107638#p107638"><![CDATA[
Witam<br /><div class="quotetitle">lukas25 napisał(a):</div><div class="quotecontent"><br />dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody<br /></div><br />...to teraz zacznij tablicę od dwóch zer {0,0,1 .....}<br /><br />Pozdr.<br /><br />EDIT<br />Wywaliłem cli(), napisałem tak i ( cokolwiek to znaczy  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) działa:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &lt;avr/interrupt.h&gt;<br /><br /><br /><br />#define LED_red (1&lt;&lt;PB4)  //red led<br /><br />#define LED_blue (1&lt;&lt;PC0)       //blue led<br /><br /><br /><br /><br /><br />#define LED_OFF_blue PORTC |= LED_blue<br /><br />#define LED_ON_blue PORTC &amp;= ~LED_blue<br /><br /><br /><br />#define LED_OFF_red PORTB |= LED_red<br /><br />#define LED_ON_red PORTB &amp;= ~LED_red<br /><br /><br /><br />volatile uint8_t pwm_red,pwm_blue;<br /><br /><br /><br /><br /><br />void pwm_blue_sciemniaj(void);<br /><br />void pwm_red_sciemniaj(void);<br /><br />#define time1 300<br /><br />uint8_t i;<br /><br />// ------ gamma  BLUE  = 1.9<br /><br />uint8_t tab&#91;100&#93; = {<br /><br />                  0,  0,  1,  1,  1,  1,  1,  2,  2,  3,  3,  4,  5,  6,  6,  7,  8,  9,<br /><br />                 10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 34, 36,<br /><br />                 38, 40, 42, 44, 46, 49, 51, 53, 55, 58, 60, 63, 65, 68, 70, 73, 76, 79,<br /><br />                 81, 84, 87, 90, 93, 96, 99,102,105,109,112,115,119,122,125,129,133,136,<br /><br />                140,143,147,151,155,159,162,166,170,174,178,183,187,191,195,200,204,208,<br /><br />                213,217,222,226,231,235,240,245,250,254<br /><br />                };<br /><br />// główna funkcja programu main()<br /><br />int main()<br /><br />{<br /><br />        PORTC |= LED_blue; // wylaczenie diod podlaczonych katodami do wyjsc<br /><br />        DDRC |= LED_blue; //kierunek pinu - wyjsciowy<br /><br />        PORTB |= LED_red;<br /><br />        DDRB |= LED_red;<br /><br /><br /><br />    TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br /><br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br /><br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br /><br />    TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br /><br />sei();<br /><br />        while(1)<br /><br />        {<br /><br />                pwm_blue = 255; // świeci<br /><br />                pwm_red_sciemniaj();<br /><br />                _delay_ms(1000);<br /><br />                pwm_red = 0;<br /><br />                pwm_blue_sciemniaj();<br /><br />                _delay_ms(10000);<br /><br />                pwm_blue =255;<br /><br />                _delay_ms(1000);<br /><br />                pwm_blue =0;<br /><br />                _delay_ms(1000);<br /><br />                pwm_blue =255;<br /><br />                _delay_ms(1000);<br /><br />                pwm_blue =0;<br /><br />                _delay_ms(10000);<br /><br />        }<br />}<br /><br />/// funkcje<br /><br /><br /><br />void pwm_blue_sciemniaj(void)<br /><br />{<br /><br />        // pętla sciemniajaca  LED<br /><br />        for(i=99;i&gt;0;i--)<br /><br />                        {<br /><br />                                pwm_blue=tab&#91;i&#93;;<br /><br />                                if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br /><br /><br />                        }<br /><br />}<br /><br /><br /><br />void pwm_red_sciemniaj(void)<br /><br />{<br /><br />        // pętla sciemniajaca  LED<br /><br />        for(i=99;i&gt;0;i--)<br /><br />                        {<br /><br />                                pwm_red=tab&#91;i&#93;;<br /><br />                                if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br /><br /><br />                        }<br /><br />}<br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br /><br /><br /><br />ISR(TIMER1_COMPA_vect) //( TIMER2_COMP_vect )<br /><br />{<br /><br />        static uint8_t cnt; // definicja naszego licznika PWM<br /><br /><br /><br />        // bezpośrednie sterowanie wyjściami kanałów PWM<br /><br />        //blue<br /><br />        if(cnt&gt;=pwm_blue) PORTC |= LED_blue; else PORTC &amp;= ~LED_blue;<br /><br />        //red<br /><br />        if(cnt&gt;=pwm_red) PORTB |= LED_red; else PORTB &amp;= ~LED_red;<br /><br /><br /><br />        cnt++;  // zwiększanie licznika o 1<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 6 gru 2014, o 22:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-06T21:32:49+01:00</updated>
<published>2014-12-06T21:32:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107630#p107630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107630#p107630"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107630#p107630"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br />Podepnij LED'y:  anoda/Vcc  katoda/uC; w programie odwróć komendy wł/wył, tablicę czytaj &quot; od tyłu&quot;<br />obsługi pwm_prog  ( ISR... ) nie ruszaj.<br />Jeśli do jasności LED'ów używasz tablicy z korekcją, to zbędne jest &quot;liczenie&quot; tej tablicy z różnymi prędkościami.  <br /><br />Pozdr.<br /></div><br /><br /><br />Nie zmienia to nic, oprócz tego, że po uruchomieniu programu otrzymuję zgaszoną niebieską, a PWM czerwonej działa. <br />Jednak już w drugiej pętli programu dalej niebieska/czerwona żarzy się przy PWM przeciwnej diody. <br /><br />A poza tym, odwrotne podłączenie ledów nie urządza mnie zbytnio, na fakt, że mam zamiar wysterować pasek ledów prądowo przez tranzystor.<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 />#define LED_red (1&lt;&lt;PB4)  //red led<br />#define LED_blue (1&lt;&lt;PC0) //blue led<br /><br /><br />#define LED_OFF_blue PORTC |= LED_blue<br />#define LED_ON_blue PORTC &amp;= ~LED_blue<br /><br />#define LED_OFF_red PORTB |= LED_red<br />#define LED_ON_red PORTB &amp;= ~LED_red<br /><br />volatile uint8_t pwm2,pwm3;<br /><br /><br />void pwm_blue_sciemniaj(void);<br />void pwm_red_sciemniaj(void);<br />#define time1 300<br />uint8_t i;<br />// ------ gamma  BLUE  = 1.9<br />uint8_t tab&#91;100&#93; = {<br />  0,  1,  1,  1,  1,  1,  1,  2,  2,  3,  3,  4,  5,  6,  6,  7,  8,  9,<br /> 10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 34, 36,<br /> 38, 40, 42, 44, 46, 49, 51, 53, 55, 58, 60, 63, 65, 68, 70, 73, 76, 79,<br /> 81, 84, 87, 90, 93, 96, 99,102,105,109,112,115,119,122,125,129,133,136,<br />140,143,147,151,155,159,162,166,170,174,178,183,187,191,195,200,204,208,<br />213,217,222,226,231,235,240,245,250,254<br />};<br />// główna funkcja programu main()<br />int main()<br />{<br />PORTC |= LED_blue; // wylaczenie diod podlaczonych katodami do wyjsc<br />DDRC |= LED_blue; //kierunek pinu - wyjsciowy<br />PORTB |= LED_red;<br />DDRB |= LED_red;<br /><br />    TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />    TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br />while(1)<br />{<br />cli();<br />LED_OFF_blue;<br />sei();<br />pwm_red_sciemniaj();<br />_delay_ms(1000);<br />cli();<br />LED_OFF_red;<br />sei();<br />pwm_blue_sciemniaj();<br />cli();<br />_delay_ms(10000);<br /><br />LED_ON_blue;<br />_delay_ms(1000);<br />LED_OFF_blue;<br />_delay_ms(1000);<br />LED_ON_blue;<br />_delay_ms(1000);<br />LED_OFF_blue;<br />_delay_ms(10000);<br /><br />}<br />}<br />/// funkcje<br /><br />void pwm_blue_sciemniaj(void)<br />{<br />// pętla sciemniajaca  LED<br />for(i=99;i&gt;0;i--)<br />{<br />pwm3=tab&#91;i&#93;;<br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br />}<br />}<br /><br />void pwm_red_sciemniaj(void)<br />{<br />// pętla sciemniajaca  LED<br />for(i=99;i&gt;0;i--)<br />{<br />pwm2=tab&#91;i&#93;;<br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /><br />}<br />}<br />// ciało procedury obsługi przerwania Compare Match Timera2<br /><br />ISR(TIMER1_COMPA_vect) //( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />//blue<br />if(cnt&gt;=pwm3) PORTC |= LED_blue; else PORTC &amp;= ~LED_blue;<br />//red<br />if(cnt&gt;=pwm2) PORTB |= LED_red; else PORTB &amp;= ~LED_red;<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=5761">lukas25</a> — 6 gru 2014, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-12-06T21:07:31+01:00</updated>
<published>2014-12-06T21:07:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107627#p107627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107627#p107627"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107627#p107627"><![CDATA[
Witam<br />Podepnij LED'y:  anoda/Vcc  katoda/uC; w programie odwróć komendy wł/wył, tablicę czytaj &quot; od tyłu&quot;<br />obsługi pwm_prog  ( ISR... ) nie ruszaj.<br />Jeśli do jasności LED'ów używasz tablicy z korekcją, to zbędne jest &quot;liczenie&quot; tej tablicy z różnymi prędkościami.  <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 6 gru 2014, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-06T19:42:58+01:00</updated>
<published>2014-12-06T19:42:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107620#p107620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107620#p107620"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107620#p107620"><![CDATA[
Próbuje dalej iść z tym PWM. Ciągle na przeszkodzie stają mi 'szpilki'. <br /><br />Mianowicie, mam dwie diody podpięte pod różne porty (C i B). Chce je gasić naprzemiennie i aby przy wygaszaniu jednej, druga w ogóle nie świeciła. <br /><br />Np. <br />[syntax=c]while(1)<br />{<br />       1. Gaszę całkowicie niebieską<br />       2. Wygaszam przez PWM czerwoną przy wygaszonej niebieskiej<br />       3. Gaszę całkowicie czerwoną<br />       4. Wygaszam przez PWM niebieską przy wygaszonej czerwonej<br />}[/syntax]<br /><br />Jednak nie do końca to wychodzi. Za cholerę w 1 kroku nie mogę wyłączyć niebieskiej. <br />Po kroku 2 czerwoną również nie mogę wyłączyć do 0.  <br /><br />Kombinuję jak koń pod górkę, używając wyłączenia globalnego przerwania cli(); . <br />Zwykłe wyłączenie diody wrzucam na różne sposoby, czy to przed wykonywanie PWM, czy to w samą pętle PWM. <br />Przy PWM dla jednej diody, bez problemu mogę. <br /><br />[syntax=c]cli();<br />LED_OFF_blue;<br />_delay_ms(1000);<br />sei();[/syntax]<br /><br />Dla dwóch diód z różnych portów już to nie działa jak powinno. Choć dla jednej diody wyłączenie globalnych przerwań wystarczy. <br /><br />W sumie nie rozumiem, dlaczego mikrokontroler nie wysyła stanu niskiego 'LED_OFF_blue;', gdy przychodzi na taką komendę czas.<br /><br />Cały kod: <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 />#define LED_red (1&lt;&lt;PB4)  //red led<br />#define LED_blue (1&lt;&lt;PC0) //blue led<br /><br /><br />#define LED_OFF_blue PORTC &amp;= ~LED_blue<br />#define LED_ON_blue PORTC |= LED_blue<br /><br />#define LED_OFF_red PORTB &amp;= ~LED_red<br />#define LED_ON_red PORTB |= LED_red<br /><br />volatile uint8_t pwm2,pwm3;<br /><br /><br />void pwm_blue_sciemniaj(void);<br />void pwm_red_sciemniaj(void);<br />#define time1 300<br />uint8_t i;<br />// ------ gamma  BLUE  = 1.9<br />uint8_t tab&#91;100&#93; = {<br />  0,  1,  1,  1,  1,  1,  1,  2,  2,  3,  3,  4,  5,  6,  6,  7,  8,  9,<br /> 10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 29, 31, 32, 34, 36,<br /> 38, 40, 42, 44, 46, 49, 51, 53, 55, 58, 60, 63, 65, 68, 70, 73, 76, 79,<br /> 81, 84, 87, 90, 93, 96, 99,102,105,109,112,115,119,122,125,129,133,136,<br />140,143,147,151,155,159,162,166,170,174,178,183,187,191,195,200,204,208,<br />213,217,222,226,231,235,240,245,250,254<br />};<br />// główna funkcja programu main()<br />int main()<br />{<br />PORTC |= LED_blue; // wylaczenie diod podlaczonych katodami do wyjsc<br />DDRC |= LED_blue; //kierunek pinu - wyjsciowy<br />PORTB |= LED_red;<br />DDRB |= LED_red;<br /><br />    TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />    TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br />while(1)<br />{<br />cli();<br />LED_OFF_blue;<br />_delay_ms(1000);<br />sei();<br />pwm_red_sciemniaj();<br />_delay_ms(1000);<br />cli();<br />LED_OFF_red;<br />_delay_ms(1000);<br />sei();<br />pwm_blue_sciemniaj();<br />cli();<br />_delay_ms(1000);<br /><br />LED_ON_blue;<br />_delay_ms(1000);<br />LED_OFF_blue;<br />_delay_ms(1000);<br />LED_ON_blue;<br />_delay_ms(1000);<br />LED_OFF_blue;<br />_delay_ms(10000);<br /><br />}<br />}<br />/// funkcje<br /><br />void pwm_blue_sciemniaj(void)<br />{<br />// pętla sciemniajaca  LED<br />for(i=0;i&lt;99;i++)<br />{<br />pwm3=tab&#91;i&#93;;<br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br />else _delay_ms(160);<br />}<br />}<br /><br />void pwm_red_sciemniaj(void)<br />{<br />// pętla sciemniajaca  LED<br />for(i=0;i&lt;99;i++)<br />{<br />pwm2=tab&#91;i&#93;;<br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br />else _delay_ms(160);<br />}<br />}<br />// ciało procedury obsługi przerwania Compare Match Timera2<br /><br />ISR(TIMER1_COMPA_vect) //( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />//blue<br />if(cnt&gt;=pwm3) PORTC |= LED_blue; else PORTC &amp;= ~LED_blue;<br />//red<br />if(cnt&gt;=pwm2) PORTB |= LED_red; else PORTB &amp;= ~LED_red;<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=5761">lukas25</a> — 6 gru 2014, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-03T00:24:56+01:00</updated>
<published>2014-12-03T00:24:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107111#p107111</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107111#p107111"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107111#p107111"><![CDATA[
Jasny gwint. Nie załapałem tego na początku, skoro zaczęło działać na atmedze8. <br /><br />Poprawione. <br />[syntax=c]ISR(TIMER1_COMPA_vect)[/syntax]<br /><br />PWM dla atmegi16 hula. Dzięki!  <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=5761">lukas25</a> — 3 gru 2014, o 00:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-12-03T00:13:55+01:00</updated>
<published>2014-12-03T00:13:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107107#p107107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107107#p107107"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107107#p107107"><![CDATA[
Dziwne, że to ci w ogóle działa na Atmedze8.<br /><br />Konfigurujesz Timer1 a przerwanie masz dla Timera2. Kol. <strong>kicajek</strong> już o tym wspomniał w jednym z wcześniejszych postów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 gru 2014, o 00:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-02T23:59:29+01:00</updated>
<published>2014-12-02T23:59:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107103#p107103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107103#p107103"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107103#p107103"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />A JTAG masz wyłączony? Jeśli go nie wyłączyłeś to kilka pinów portu C, w tym PC5, nie będzie działać jako zwykłe piny wejścia/wyjścia.<br /></div><br /><br />JTAGa to w pierwszej kolejności wyłączyłem. <br /><br />Dodatkowo nadmienię, że Fuse bitów dotykałem. <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/5761/0e36baba64d80f539d8068770ab5919a.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5761/0e36baba64d80f539d8068770ab5919a.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5761">lukas25</a> — 2 gru 2014, o 23:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-12-02T23:48:21+01:00</updated>
<published>2014-12-02T23:48:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107098#p107098</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107098#p107098"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107098#p107098"><![CDATA[
A JTAG masz wyłączony? Jeśli go nie wyłączyłeś to kilka pinów portu C, w tym PC5, nie będzie działać jako zwykłe piny wejścia/wyjścia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 gru 2014, o 23:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-02T23:38:17+01:00</updated>
<published>2014-12-02T23:38:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107096#p107096</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107096#p107096"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107096#p107096"><![CDATA[
Zgadza się. Pokiełbasiłem tryby pracy. <br /><br />Po Twoich poprawkach program na atmega8 działa poprawnie. W sumie wcześniej też działał, ale teraz łatwiej mogę zapanować nad tym PWM.<br /><br />Jednak ten sam program wgrywam na atmega16 i PWM dalej milczy. Przerwania działają prawidłowo. <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 />#define LED_PIN1 (1&lt;&lt;PC5)<br />#define LED_ON1 PORTC  |=LED_PIN1<br />#define LED_OFF1 PORTC &amp;= ~  LED_PIN1<br /><br />volatile uint8_t pwm1;<br /><br />// ------ gamma  BLUE  = 2,2<br />uint8_t tab&#91;100&#93; = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  3,  3,<br />  3,  4,  5,  5,  6,  7,  7,  8,  9, 10, 11, 12, 13, 14, 15, 17, 18, 19,<br /> 21, 22, 24, 25, 27, 29, 30, 32, 34, 36, 38, 40, 42, 44, 47, 49, 51, 54,<br /> 56, 59, 62, 65, 67, 70, 73, 76, 80, 83, 86, 89, 93, 96,100,104,107,111,<br />115,119,123,127,132,136,140,145,149,154,159,164,169,174,179,184,189,195,<br />200,206,211,217,223,229,235,241,247,255<br />};<br />// główna funkcja programu main()<br />int main()<br />{<br /><br />DDRC |= LED_PIN1 ; //(1&lt;&lt;PC5) ; // ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />PORTC |= LED_PIN1 ;<br /><br />    TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC<br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />    TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC<br /><br /><br /><br />uint8_t i;<br /><br />while(1)<br />{<br />cli(); // wyłączenie globalne przerwań<br />LED_OFF1;<br />_delay_ms(1000);<br />LED_ON1;<br />_delay_ms(1000);<br />LED_OFF1;<br />_delay_ms(1000);<br />LED_ON1;<br />_delay_ms(1000);<br /> sei(); // odblokowanie globalne przerwań<br /><br />// pętla sciemniajaca  LED<br /><br />for(i=0;i&lt;99;i++)<br />{<br />pwm1=tab&#91;i&#93;;<br /><br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /> else _delay_ms(100);<br />}<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 |= LED_PIN1; else PORTC &amp;= ~LED_PIN1;<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=5761">lukas25</a> — 2 gru 2014, o 23:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-12-02T23:04:16+01:00</updated>
<published>2014-12-02T23:04:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107082#p107082</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107082#p107082"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107082#p107082"><![CDATA[
Tą linią[syntax=c]TCCR1A |= (1&lt;&lt;WGM10); // odblokowanie przerwań dla CTC[/syntax]<br />włączasz tryb Phase Correct Pwm a nie tryb CTC.<br /><br />Tryb CTC w Atmedze16 włącza się ustawiając bit WGM12 w rejestrze TCCR1B[syntax=c]TCCR1B |= (1&lt;&lt;WGM12);[/syntax]<br /><br />W Atmedze8 jest tak samo więc już w poprzednim poście miałeś błąd.<br /><br />Konfiguracja Timera1 dla trybu CTC powinna wyglądać tak:<br />[syntax=c]TCCR1B |= (1&lt;&lt;WGM12);  //włączenie trybu CTC <br />TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />TIMSK |= (1&lt;&lt;OCIE1A);  // odblokowanie przerwań dla CTC[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 gru 2014, o 23:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-02T22:41:22+01:00</updated>
<published>2014-12-02T22:41:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107075#p107075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107075#p107075"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107075#p107075"><![CDATA[
Jeszcze jedną kwestię poruszę. <br /><br />Z tego co wyczytałem w Mirka książce, to nie powinno być żadnych problemów z przeniesieniem tego programu do atmegi16. <br />Przerwania po wgraniu programu na atmegę16 działają, jednak ani śladu po PWM. Rejestry są takie same, ustawienia w mkAVR Calculator niby prawidłowe. JTAG - wyłączony. Fusebitów nie ruszałem. <br /><br />Dodatkowo wszedłem w opcje projektu i zmieniłem tam procesor na atmegę16 i częstotliwość taktowania na 8MHz. Nic to nie dało. <br /><br />Czy jednak w rzeczywistości łatwe przenoszenie programów między atmegami nie jest takie łatwe, jak to Mirek opisał ?  Tylko pytanie, gdzie atmega16 może widzieć problem ? <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br />[syntax=c]//*****<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED_PIN1 (1&lt;&lt;PC5)<br />#define LED_ON1 PORTC  |=LED_PIN1<br />#define LED_OFF1 PORTC &amp;= ~  LED_PIN1<br /><br />volatile uint8_t pwm1;<br /><br />// ------ gamma  BLUE  = 2,2<br />uint8_t tab&#91;100&#93; = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  3,  3,<br />  3,  4,  5,  5,  6,  7,  7,  8,  9, 10, 11, 12, 13, 14, 15, 17, 18, 19,<br /> 21, 22, 24, 25, 27, 29, 30, 32, 34, 36, 38, 40, 42, 44, 47, 49, 51, 54,<br /> 56, 59, 62, 65, 67, 70, 73, 76, 80, 83, 86, 89, 93, 96,100,104,107,111,<br />115,119,123,127,132,136,140,145,149,154,159,164,169,174,179,184,189,195,<br />200,206,211,217,223,229,235,241,247,255<br />};<br />// główna funkcja programu main()<br />int main()<br />{<br /><br />DDRC |= LED_PIN1 ; //(1&lt;&lt;PC5) ; // ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />PORTC |= LED_PIN1 ;<br /><br />    TCCR1A |= (1&lt;&lt;WGM10); // odblokowanie przerwań dla CTC<br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />    TIMSK |= (1&lt;&lt;OCIE1A);<br /><br /><br />uint8_t i;<br /><br />while(1)<br />{<br />cli(); // wyłączenie globalne przerwań<br />LED_OFF1;<br />_delay_ms(1000);<br />LED_ON1;<br />_delay_ms(1000);<br />LED_OFF1;<br />_delay_ms(1000);<br />sei(); // odblokowanie globalne przerwań<br /><br />// pętla sciemniajaca  LED<br /><br />for(i=0;i&lt;99;i++)<br />{<br />pwm1=tab&#91;i&#93;;<br /><br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /> else _delay_ms(100);<br />}<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 |= LED_PIN1; else PORTC &amp;= ~LED_PIN1;<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=5761">lukas25</a> — 2 gru 2014, o 22:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-02T22:27:40+01:00</updated>
<published>2014-12-02T22:27:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107070#p107070</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107070#p107070"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107070#p107070"><![CDATA[
Właściwie to CLI nie było potrzebne, wystarczyło zakomentować SEI <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> ale w sumie na jedno wyszło <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=1922">SylwekK</a> — 2 gru 2014, o 22:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-02T21:49:44+01:00</updated>
<published>2014-12-02T21:49:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107061#p107061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107061#p107061"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107061#p107061"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Wyłącz najpierw przerwania i dopiero sprawdź czy on/off działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br /><br />Krótkie <br />[syntax=c]cli();[/syntax]<br />A tyle zmienia. Dzięki!  <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=5761">lukas25</a> — 2 gru 2014, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-02T21:36:20+01:00</updated>
<published>2014-12-02T21:36:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107059#p107059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107059#p107059"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107059#p107059"><![CDATA[
Wyłącz najpierw przerwania i dopiero sprawdź czy on/off działa <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=1922">SylwekK</a> — 2 gru 2014, o 21:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas25]]></name></author>
<updated>2014-12-02T21:30:06+01:00</updated>
<published>2014-12-02T21:30:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107056#p107056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107056#p107056"/>
<title type="html"><![CDATA[Re: Atmega8 PWM timer1 - ciągle święcąca dioda.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9350&amp;p=107056#p107056"><![CDATA[
W takim razie chciałem to na 'chłopski' rozum ominąć , wrzucając do programu zwykłe włącz/wyłącz:<br /><br />[syntax=c]#define LED_ON1 PORTC  &amp;= ~LED_PIN1<br />#define LED_OFF1 PORTC |=  LED_PIN1[/syntax]<br /><br />Jednak wlącz/wyłącz w programie z PWM nie działa. Jakby instrukcja w ogóle nie była wykonywana. <br /><br />To również może być urok PWM??   <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /> <br /><br />[syntax=c]//***** PROGRAMOWY PWM<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED_PIN1 (1&lt;&lt;PC5)<br />#define LED_ON1 PORTC  &amp;= ~LED_PIN1<br />#define LED_OFF1 PORTC |=  LED_PIN1<br /><br />volatile uint8_t pwm1;<br /><br />// ------ gamma  BLUE  = 2,2<br />uint8_t tab&#91;100&#93; = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  3,  3,<br />  3,  4,  5,  5,  6,  7,  7,  8,  9, 10, 11, 12, 13, 14, 15, 17, 18, 19,<br /> 21, 22, 24, 25, 27, 29, 30, 32, 34, 36, 38, 40, 42, 44, 47, 49, 51, 54,<br /> 56, 59, 62, 65, 67, 70, 73, 76, 80, 83, 86, 89, 93, 96,100,104,107,111,<br />115,119,123,127,132,136,140,145,149,154,159,164,169,174,179,184,189,195,<br />200,206,211,217,223,229,235,241,247,255<br />};<br />// główna funkcja programu main()<br />int main()<br />{<br /><br />DDRC |= LED_PIN1 ; //(1&lt;&lt;PC5) ; // ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />PORTC |= LED_PIN1 ;<br /><br />    TCCR1A |= (1&lt;&lt;WGM10); // odblokowanie przerwań dla CTC<br />    TCCR1B |= (1&lt;&lt;CS10) ;//prescaler 1<br />    OCR1A = 200; //dodatkowy dzielnik częstotliwości<br />    TIMSK |= (1&lt;&lt;OCIE1A);<br /><br />sei();// odblokowanie globalne przerwań<br />//uint8_t i;<br /><br />while(1)<br />{<br />LED_OFF1;<br />_delay_ms(100);<br /><br />// pętla sciemniajaca  LED<br /><br />/*for(i=0;i&lt;99;i++)<br />{<br />pwm1=tab&#91;i&#93;;<br /><br />if(tab&#91;40&#93;&gt;0) _delay_ms(200); //if(i&gt;60) _delay_ms(100);<br /> else _delay_ms(100);<br />} */<br /><br /><br /><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 |= LED_PIN1; else PORTC &amp;= ~LED_PIN1;<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=5761">lukas25</a> — 2 gru 2014, o 21:30</p><hr />
]]></content>
</entry>
</feed>