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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2424&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-06T19:02:34+01:00</updated>
<published>2017-01-06T19:02:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179244#p179244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179244#p179244"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179244#p179244"><![CDATA[
Witam<br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />wywal #define F_CPU 3686400<br /></div><br />...no ale oczywiście w ustawieniach musisz to zapisać.<br /><div class="quotetitle">Daktyl napisał(a):</div><div class="quotecontent"><br />...sa chyba odbierane bo podczas przesylu...<br /></div><br />Diagnoza iście wróżbiarska - podłącz jakiegoś &quot;LED'a debugera&quot; i sprawdzaj jak się zachowuje w poszcz. częściach kodu a nie opieraj się na przygasaniu.<br />Dobrą praktyką jest jednoznaczne określenie &quot; jeśli zdarzenie to (np.) zapal_LED&quot; bo &quot;...tog_LED&quot; może wprowadzać w błąd.<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 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daktyl]]></name></author>
<updated>2017-01-06T18:32:02+01:00</updated>
<published>2017-01-06T18:32:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179240#p179240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179240#p179240"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179240#p179240"><![CDATA[
Nic sie nie zmienilo. Dalej tasma miga i nie reaguje. Dane przez bluetooth sa chyba odbierane bo podczas przesylu lekko przygasa dioda na module<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15876">Daktyl</a> — 6 sty 2017, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-06T18:25:10+01:00</updated>
<published>2017-01-06T18:25:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179239#p179239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179239#p179239"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179239#p179239"><![CDATA[
Witam<br />Kol. <strong>Daktyl</strong> dokładając coraz to nowe tematy ten wątek się rozłazi ale:<br />wywal #define F_CPU 3686400,<br /> a tutaj: <br />[syntax=c]UCSRC = (1&lt;&lt;URSEL) | (1&lt;&lt;UCSZ1) | (1&lt;&lt;UCSZ0);[/syntax]<br />to chyba:<br />[syntax=c]UCSRC = (1&lt;&lt;URSEL) | (1&lt;&lt;UCSZ1) | (3&lt;&lt;UCSZ0);[/syntax]<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 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daktyl]]></name></author>
<updated>2017-01-06T18:01:24+01:00</updated>
<published>2017-01-06T18:01:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179238#p179238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179238#p179238"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=179238#p179238"><![CDATA[
Witam wszystkich pasjonatów. Mam podobny problem do kolegi z pierwszego postu. Muszę napisać własny PWM do obsługi taśmy LED RGB. Kolory wyzwalane są stanem wysokim z portu na wyjściu. Po wgraniu kodu układ nie reaguje na instrukcje z bluetootha a sama taśma miga. Ktoś jest w stanie mi pomóc? Częstotliwość zegara zewnętrznego to 3,6864MHz. Dane wysyłane są w postaci 3 bajtów, po 1 na każdą składową<br /><br />[syntax=c]/*<br />PC0 - B<br />PC1 - R<br />PC2 - G<br />*/<br /><br />#define F_CPU 3686400<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />void usart_config()<br />{<br />#define BAUD 9600<br />#include &lt;util/setbaud.h&gt;<br /><br />UBRRH = UBRRH_VALUE;<br />UBRRL = UBRRL_VALUE;<br /><br />#if USE_2X<br />UCSRA |=  (1&lt;&lt;U2X);<br />#else<br />UCSRA &amp;= ~(1&lt;&lt;U2X);<br />#endif<br /><br />UCSRC = (1&lt;&lt;URSEL) | (1&lt;&lt;UCSZ1) | (1&lt;&lt;UCSZ0);<br />UCSRB = (1&lt;&lt;TXEN) | (1&lt;&lt;RXEN) | (1&lt;&lt;RXCIE);     <br />}<br /><br />void timer_config()<br />{<br />TCCR2 |= (1 &lt;&lt; WGM21);<br />TCCR2 |= (1 &lt;&lt; CS21);<br />OCR2 = 229;<br />TIMSK |= (1 &lt;&lt; OCIE2);<br />sei();<br />}<br /><br />void pins_config()<br />{<br />DDRC |= (1&lt;&lt;PC0) | (1&lt;&lt;PC1) | (1&lt;&lt;PC2);<br />PORTC = 0b00000000;<br />}<br /><br />volatile uint8_t red_value, green_value, blue_value;<br /><br />int main(void)<br />{<br />uint8_t ReceivedByte;<br />pins_config();<br />usart_config();<br />timer_config();<br /><br />    /* Replace with your application code */<br />    while (1) <br />    {<br />while ((UCSRA &amp; (1 &lt;&lt; RXC)) == 0) {};<br /><br />timer_config();<br />red_value=UDR;<br />_delay_us(500);<br /><br />while ((UCSRA &amp; (1 &lt;&lt; RXC)) == 0) {};<br /><br />green_value=UDR;<br />_delay_us(500);<br /><br />while ((UCSRA &amp; (1 &lt;&lt; RXC)) == 0) {};<br /><br />blue_value=UDR;<br />_delay_us(500);<br /><br />if(red_value==0&amp;&amp;green_value==0&amp;&amp;blue_value==0)<br />{<br />TCCR2 = 0b00000000;<br />PORTB&amp;=~((1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2));<br />}<br /><br />while ((UCSRA &amp; (1 &lt;&lt; UDRE)) == 0) {};<br /><br />ReceivedByte++;<br />UDR = ReceivedByte;<br />    }<br />}<br /><br /><br />ISR (TIMER2_COMP_vect)<br />{<br />static uint8_t cnt;<br /><br />if (cnt &lt;= red_value) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;=~ (1&lt;&lt;PC1); //zaswiec czerwone<br />if (cnt &lt;= green_value) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;=~ (1&lt;&lt;PC2); //zaswiec zielone<br />if (cnt &lt;= blue_value) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;=~ (1&lt;&lt;PC0); //zaswiec niebieskie<br /><br />cnt++;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15876">Daktyl</a> — 6 sty 2017, o 18:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2016-05-21T15:29:42+01:00</updated>
<published>2016-05-21T15:29:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160975#p160975</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160975#p160975"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160975#p160975"><![CDATA[
Obsługę przerwania wstawiłeś w ciało funkcji main(). Wywal poza nią, a się skompiluje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 21 maja 2016, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dodek95]]></name></author>
<updated>2016-05-21T10:41:29+01:00</updated>
<published>2016-05-21T10:41:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160960#p160960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160960#p160960"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=160960#p160960"><![CDATA[
Witam. Też chciałbym napisać kod do programowej obsługi PWM. Gdy wpisuję kod na podstawie tego, który był zamieszczony w książce cały czas wyskakuję mi błąd, którego zrzut ekranu zamieszczam poniżej. Proszę o pomoc.<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 />volatile uint16_t pwm1,pwm2,pwm3; //zmienie o rozdzielczości 16-bitowej<br /><br />int main (void)<br />{<br />TCCR1A|=(1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1);//PWM w tryb CTC, preskaler 1, Clear at TOP<br />TCCR1B|=(1&lt;&lt;WGM12)|(1&lt;&lt;WGM13)|(1&lt;&lt;CS10);<br />ICR1=20000;//dzielnik częstotliwości 1MHz/20ms=50Hz<br /><br />DDRD|=(1&lt;&lt;PD0)|(1&lt;&lt;PD1)|(1&lt;&lt;PD2);//ustawienie portów jak wyjścia<br />PORTD|=(1&lt;&lt;PD0)|(1&lt;&lt;PD1)|(1&lt;&lt;PD2);//wygaszenie diod na portach<br /><br />TIMSK|=(1&lt;&lt;OCIE1A); //zezwolenie na przerwanie, Compare Match<br />sei();// globalne odblokowanie przerwań<br /><br /><br />ISR ( TIMER1_COMPA_vect )<br />{<br /><br />static uint16_t cnt;<br />//bezpośrednie sterowanie pwm<br />if(cnt&gt;=pwm1) PORTD |= (1&lt;&lt;PD0); else PORTD &amp;= ~(1&lt;&lt;PD0);<br />if(cnt&gt;=pwm1) PORTD |= (1&lt;&lt;PD1); else PORTD &amp;= ~(1&lt;&lt;PD1);<br />if(cnt&gt;=pwm1) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br />}<br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/8853/35026bc3bbf939eef7749e5edaf9476c.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8853/35026bc3bbf939eef7749e5edaf9476c.JPG" alt="Obrazek" /></a><br /><br />W błędzie chodzi oczywiście o tą linijkę: [syntax=c]ISR ( TIMER1_COMPA_vect )[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8853">dodek95</a> — 21 maja 2016, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2013-02-24T20:05:30+01:00</updated>
<published>2013-02-24T20:05:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29143#p29143</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29143#p29143"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29143#p29143"><![CDATA[
Jeśli za pętlą for ustawię pwm1=0 to dioda gaśnie całkowicie ale jeśli pętla sama się skończy to już nie gaśnie... Może to przez to że przypisanie wartości do pwm1 następuje w pętli for? i zamiast wpisać 0 pętla kończy się na 1 i wychodzi?<br /><br /><br />EDIT:<br />poradziłem sobie wpisując w instrukcjach for i++; teraz pętla dziala prawidłowo i diody gasną<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 24 lut 2013, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2013-02-24T15:57:24+01:00</updated>
<published>2013-02-24T15:57:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29126#p29126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29126#p29126"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29126#p29126"><![CDATA[
Kurcze teraz pomyślałem logicznie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> nie chciałem odwracać fazy bo to w ogóle inaczej działa niż chciałem teraz mnie olśniło że przecież odwracam pętlę for i na to samo wyjdzie zadziała tak jak planowałem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Zaraz sie tym zajmę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 24 lut 2013, o 15:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-24T15:44:07+01:00</updated>
<published>2013-02-24T15:44:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29125#p29125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29125#p29125"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29125#p29125"><![CDATA[
No to zauważ że niektórzy na forum żeby nie powtarzać że mają zestaw ATB a to ważne bo od razu wiadomo że mówimy o znanej platformie i sporo się wyjaśnia mają taką informację w swoim podpisie na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> pomyśl o tym <br /><br />A teraz tak - wiadomo że diod nie odwrócisz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to co - fazy nie możesz zmienić ? a powiedz mi dlaczego ? to ja ci dopiero wtedy powiem dlaczego jednak możesz zmienić tylko jeszcze nawet sam nie domyślasz się dlaczego jednak możesz ją zmienić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />bo inaczej to co ? pozostanie ci dłuto i odrąbanie diod a następnie przylepienie ich odwrotnie z tego wynika ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />po prostu trzeba sobie umieć radzić - zamiast pisać (za krótko) że fazy bym nie chciał zmieniać to lepiej zawsze napisać chociaż jedno, dwa zdania więcej i opisać dlaczego - wtedy zawsze szybciej, lepiej i z precyzją chirurgiczną można coś podpowiedzieć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 lut 2013, o 15:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2013-02-24T15:25:41+01:00</updated>
<published>2013-02-24T15:25:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29122#p29122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29122#p29122"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29122#p29122"><![CDATA[
Program uruchamiam na niedawno kupionym zestawie ATB więc diod ni jak nie odwrócę, chyba że nie zauważyłem takiej możliwości <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Program przepisałem z książki dla 6 kanałów i sam dopisałem jeszcze 2, mogłem się walnąć przy przepisywaniu ale sprawdzam i nie widzę gdzie. Odwracać fazy bym nie chciał bo nie taki miałem plan <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Diody podpięte do portu A<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 24 lut 2013, o 15:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-24T12:55:44+01:00</updated>
<published>2013-02-24T12:55:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29108#p29108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29108#p29108"/>
<title type="html"><![CDATA[Re: Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29108#p29108"><![CDATA[
do takiego pytania to trzeba by było (szczególnie do takiego pytania pokazać swój schemat - jak masz te diody podłączone do procka, katodą czy anodą panie kochany)<br /><br />bo rozwiązanie jest proste i można to zrobić na dwa sposoby <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> co więcej obydwa masz opisane w książce - tylko chyba za szybko czytałeś co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />1. albo podłącz odwrotnie diody LED<br />2. albo zmień znaki w IF'ach w przerwaniu na przeciwne - wtedy odwrócisz fazy sygnału - tak samo jak możesz to robić przy sprzętowym PWM'mie za pomocą bitów COMxn<br /><br />.... więc ew jeszcze raz też zajrzyj do książki bo jest o tym mowa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 lut 2013, o 12:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2013-02-24T12:46:36+01:00</updated>
<published>2013-02-24T12:46:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29107#p29107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29107#p29107"/>
<title type="html"><![CDATA[Programowy PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2424&amp;p=29107#p29107"><![CDATA[
Witam, program napisany an podstawie książki, działa tylko diody które powinny być wygaszone ledwo świecą, nie wiem co jest tego przyczyną.<br /><br />Program tylko do zabawy więc może mieć błędy.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 24-02-2013<br /> *      Author: msi<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />//zmienne do wypełnienia PWMu<br />volatile uint8_t pwm1,pwm2,pwm3,pwm4,pwm5,pwm6,pwm7,pwm8;<br /><br />int main(void)<br />{<br /><br />//PROGRAMOWY PWM KONFIGURACJA<br />//piny wyjciowe pwm<br />DDRA |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1 )| (1&lt;&lt;PA2) | (1&lt;&lt;PA3) | (1&lt;&lt;PA4) | (1&lt;&lt;PA5) | (1&lt;&lt;PA6) | (1&lt;&lt;PA7);<br /><br />//wyłączenie led podłączonych do wyjć<br />PORTA |= (1&lt;&lt;PA0) | (1&lt;&lt;PA1 )| (1&lt;&lt;PA2) | (1&lt;&lt;PA3) | (1&lt;&lt;PA4) | (1&lt;&lt;PA5) | (1&lt;&lt;PA6) | (1&lt;&lt;PA7);<br /><br />//USTAWIENIE TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21); //TRYB CTC<br />TCCR2 |= (1&lt;&lt;CS20); //PRESCALER = 1<br />OCR2 = 200; //dodatkowy podział częstotliwoci przez 200<br />TIMSK |= (1&lt;&lt;OCIE2); //zezwolenie na przerwanie compare match<br /><br />sei(); //odblokowanie globalne przerwań<br /><br />uint8_t i; //zmienna do petli for<br /><br />//PĘTLA NIESKOŃCZONA<br /><br />while(1)<br />{<br /><br />for(i=0;i&lt;255;i++)<br />{<br />pwm1 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm1 = i;<br />_delay_us(500);<br />}<br /><br />for(i=0;i&lt;255;i++)<br />{<br />pwm2 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm2 = i;<br />_delay_us(500);<br />}<br />for(i=0;i&lt;255;i++)<br />{<br />pwm3 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm3 = i;<br />_delay_us(500);<br />}<br />for(i=0;i&lt;255;i++)<br />{<br />pwm4 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm4 = i;<br />_delay_us(500);<br />}<br /><br />for(i=0;i&lt;255;i++)<br />{<br />pwm5 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm5 = i;<br />_delay_us(500);<br />}<br />for(i=0;i&lt;255;i++)<br />{<br />pwm6 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm6 = i;<br />_delay_us(500);<br />}<br />for(i=0;i&lt;255;i++)<br />{<br />pwm7 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm7 = i;<br />_delay_us(500);<br />}<br /><br />for(i=0;i&lt;255;i++)<br />{<br />pwm8 = i;<br />_delay_us(500);<br />}<br />for(i=255;i==0;i--)<br />{<br />pwm8 = i;<br />_delay_us(500);<br />}<br /><br />}<br /><br /><br />}<br />//przerwanie timera CTC<br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt; //licznik PWM<br /><br />//sterowanie wyjciami kanałów PWM<br /><br />if(cnt&gt;=pwm1) PORTA |= (1&lt;&lt;PA0); else PORTA &amp;=~ (1&lt;&lt;PA0);<br />if(cnt&gt;=pwm2) PORTA |= (1&lt;&lt;PA1); else PORTA &amp;=~ (1&lt;&lt;PA1);<br />if(cnt&gt;=pwm3) PORTA |= (1&lt;&lt;PA2); else PORTA &amp;=~ (1&lt;&lt;PA2);<br />if(cnt&gt;=pwm4) PORTA |= (1&lt;&lt;PA3); else PORTA &amp;=~ (1&lt;&lt;PA3);<br />if(cnt&gt;=pwm5) PORTA |= (1&lt;&lt;PA4); else PORTA &amp;=~ (1&lt;&lt;PA4);<br />if(cnt&gt;=pwm6) PORTA |= (1&lt;&lt;PA5); else PORTA &amp;=~ (1&lt;&lt;PA5);<br />if(cnt&gt;=pwm7) PORTA |= (1&lt;&lt;PA6); else PORTA &amp;=~ (1&lt;&lt;PA6);<br />if(cnt&gt;=pwm8) PORTA |= (1&lt;&lt;PA7); else PORTA &amp;=~ (1&lt;&lt;PA7);<br /><br />cnt++; //zwiększenie licznika<br /><br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 24 lut 2013, o 12:46</p><hr />
]]></content>
</entry>
</feed>