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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-01T00:43:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2454&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2013-03-01T00:43:39+01:00</updated>
<published>2013-03-01T00:43:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29493#p29493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29493#p29493"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29493#p29493"><![CDATA[
Dzięki; wychodzi na to, że napisałem poprawny program.<br />W związku z tym, zezwalam kolegom na stosowanie mojego kodu nawet do celów komercyjnych <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=826">kicajek</a> — 1 mar 2013, o 00:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-28T16:09:50+01:00</updated>
<published>2013-02-28T16:09:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29450#p29450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29450#p29450"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29450#p29450"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Ja tylko pytałem jak prawidłowo zadeklarować to nieszczęsne OCR1A bo pisane po mojemu jest wykonywalne ale chyba nieprawidłowe.<br /></div><br /><br />Dlaczego nieprawidłowe? Normalna inicjacja wartości początkowych zmiennych/rejestrów jak w każdym innym programie.<br /><br />A po wyrzuceniu tej linijki pierwsza pętla trochę trwała, bo najprawdopodobniej rejestr OCR1A jest domyślnie ustawiany na największą możliwą wartość. Jeżeli takie działanie jest dla ciebie nieakceptowalne to ja nie widzę innej możliwości pozbycia się tej linijki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 28 lut 2013, o 16:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2013-02-28T01:31:42+01:00</updated>
<published>2013-02-28T01:31:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29440#p29440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29440#p29440"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29440#p29440"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />możesz wyrzucić to OCR1A = m;<br /></div>- jeśli wyrzucam to z tego miejsca to za pierwszym razem, po uruchomieniu &quot;coś tam liczy  <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" /> &quot; i startuje dopiero po jakimś czasie.<br />Co do pwm6 to faktycznie niepotrzebnie mi się zawieruszył.<br />Jeśli chodzi o składnię  [syntax=c]if (n == 20) n=0 ,m = rand()%1500+50 ;[/syntax] - to wyliczenia są prawidłowe i program działa; ja tylko pytałem jak prawidłowo zadeklarować to nieszczęsne OCR1A bo pisane po mojemu jest wykonywalne ale chyba nieprawidłowe.<br />Dzięki za zainteresowanie - jeszcze nie śpicie ?  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" /><br /><br />[syntax=c]if (n == 20) {n=0; m = rand()%1500+50 ;}[/syntax] - taki zapis tak samo (przynajmniej w moim przypadku) działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 28 lut 2013, o 01:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-28T00:40:21+01:00</updated>
<published>2013-02-28T00:40:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29439#p29439</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29439#p29439"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29439#p29439"><![CDATA[
No faktycznie, trochę mogłoby to potrwać <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><br />A tak btw po co jest deklarowane pwm6 ? Nie widzę, aby coś było z nim robione...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 28 lut 2013, o 00:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-28T00:35:22+01:00</updated>
<published>2013-02-28T00:35:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29437#p29437</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29437#p29437"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29437#p29437"><![CDATA[
Niestety taka konstrukcja:<br /><br />PORTB |= (1&lt;&lt;popo)<br /><br />zamiast takiej <br /><br />PORTB |= (1 &lt;&lt; PB0);<br /><br />i to w pętli - może się okazać gwoździem do trumny jeśli chodzi o długość czasu trwania przerwania. O ile ta druga operacja będzie przetłumaczona praktycznie na jeden rozkaz asemblerowy to ta druga będzie rozwinięta do dość sporego kodu - więc już o czasie nie muszę nic dodawać hmm ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 lut 2013, o 00:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-28T00:32:51+01:00</updated>
<published>2013-02-28T00:32:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29436#p29436</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29436#p29436"/>
<title type="html"><![CDATA[Re: IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29436#p29436"><![CDATA[
Według mnie w tym miejscu [syntax=c]        TCCR1B |= (1 &lt;&lt; CS12) | (1 &lt;&lt; CS10); // preskaler  - 1024<br />        OCR1A = m;[/syntax]możesz wyrzucić to OCR1A = m;<br /><br />Co oznacza ten zapis ?[syntax=c]if (n == 20) n=0 ,m = rand()%1500+50 ;[/syntax]Jeżeli pod if-em mają się wykonać 2 warunki to chyba powinno być [syntax=c]if (n == 20) {n=0; m = rand()%1500+50 ;}[/syntax]<br /><br />Ten zapis [syntax=c]        if (cnt &gt;= pwm1) PORTB |= (1 &lt;&lt; PB0);  else PORTB &amp;= ~(1 &lt;&lt; PB0); //dioda żółta<br />        if (cnt &gt;= pwm2) PORTB |= (1 &lt;&lt; PB1);  else PORTB &amp;= ~(1 &lt;&lt; PB1); //dioda pomarańczowa<br />        if (cnt &gt;= pwm3) PORTB |= (1 &lt;&lt; PB2);  else PORTB &amp;= ~(1 &lt;&lt; PB2); //dioda czerwona<br />        if (cnt &gt;= pwm4) PORTB |= (1 &lt;&lt; PB3);  else PORTB &amp;= ~(1 &lt;&lt; PB3); //dioda pomarańczowa<br />        if (cnt &gt;= pwm5) PORTB |= (1 &lt;&lt; PB4);  else PORTB &amp;= ~(1 &lt;&lt; PB4); //dioda żółta[/syntax] osobiście zapisałbym w ten sposob (ideowo) [syntax=c]uint8_t pwm[5];<br />for (uint8_t popo=0; popo&lt;=4; popo++) if (cnt&gt;=pwm[popo]) PORTB |= (1&lt;&lt;popo); else PORTB &amp;= ~(1&lt;&lt;popo);[/syntax]ale ja tam od zawsze mam zamiłowanie to pętli więc nie przejmuj się <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=973">barney</a> — 28 lut 2013, o 00:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2013-02-28T00:18:31+01:00</updated>
<published>2013-02-28T00:18:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29434#p29434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29434#p29434"/>
<title type="html"><![CDATA[IMITACJA PŁOMIENIA]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2454&amp;p=29434#p29434"><![CDATA[
Witam<br />Zainspirowany &quot;Niebiańską Książeczką&quot; - PWM prog., oraz wątkiem <a href="http://forum.atnel.pl/topic2002.html"  class="postlink">http://forum.atnel.pl/topic2002.html</a>  (podpowiedź kol.SunRiver-a) postanowiłem &quot;wyprodukować&quot; coś podobnego:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2013-02-24<br /> *       Autor: Andrzejek<br /> *<br /> *  ATMEGA 8<br /> *  osc. wew. 8MHz<br /> *  podłączenie diod  ANODA - Vcc<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;         // biblioteka do funkcji RAND<br /><br />volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, n; // n - zmienna pomocnicza dla m<br />int m = 500;                                            // m - zmienna wartości dla OCR1A<br /><br />int main(void)<br /><br />{<br />DDRB |= (1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2)|(1&lt;&lt;PB3)|(1&lt;&lt;PB4); // port wyjsciowy efektu<br />PORTB = 0;<br /><br />DDRD  |= (1&lt;&lt;PD0);                   //port wyjściowy dla diody kontrolnej<br />PORTD |= (1&lt;&lt;PD0);<br /><br />TCCR2 |= (1 &lt;&lt; WGM21);               // tryb CTC multipleksera<br />TCCR2 |= (1 &lt;&lt; CS20) ;               // preskaler - 1<br />OCR2 = 30;<br /><br /><br />TCCR1B |= (1 &lt;&lt; WGM12);              // tryb CTC wyliczenia pwm<br />TCCR1B |= (1 &lt;&lt; CS12) | (1 &lt;&lt; CS10); // preskaler  - 1024<br />        OCR1A = m;<br /><br />TIMSK |= (1 &lt;&lt; OCIE2);<br /><br />sei();<br /><br />while (1)<br /><br />{<br /><br /><br /><br />if (TIFR &amp; (1 &lt;&lt; OCF1A))  // obsługa pwm efektu<br /><br />{<br />OCR1A = m;<br />                        n++;<br /><br />                        PORTD = ~PORTD;<br />pwm1 = rand() % 196 + 60;<br />pwm2 = rand() % 246 + 10;<br />pwm3 = rand() % 216 + 40;<br />pwm4 = rand() % 246 + 10;<br />pwm5 = rand() % 196 + 60;<br /><br />if (n == 20) n=0 ,m = rand()%1500+50 ;<br /><br />        TIFR = (1 &lt;&lt; OCF1A);<br /><br />}<br />}<br /><br />}<br /><br />ISR(TIMER2_COMP_vect)                // obsługa pwm programowy<br /><br />{<br /><br />static uint8_t cnt;<br /><br />if (cnt &gt;= pwm1) PORTB |= (1 &lt;&lt; PB0);  else PORTB &amp;= ~(1 &lt;&lt; PB0); //dioda żółta<br />if (cnt &gt;= pwm2) PORTB |= (1 &lt;&lt; PB1);  else PORTB &amp;= ~(1 &lt;&lt; PB1); //dioda pomarańczowa<br />if (cnt &gt;= pwm3) PORTB |= (1 &lt;&lt; PB2);  else PORTB &amp;= ~(1 &lt;&lt; PB2); //dioda czerwona<br />if (cnt &gt;= pwm4) PORTB |= (1 &lt;&lt; PB3);  else PORTB &amp;= ~(1 &lt;&lt; PB3); //dioda pomarańczowa<br />if (cnt &gt;= pwm5) PORTB |= (1 &lt;&lt; PB4);  else PORTB &amp;= ~(1 &lt;&lt; PB4); //dioda żółta<br /><br /><br />cnt++;<br /><br />}<br /><br />[/syntax]<br /><br />Moje pytanie do szanownych kolegów brzmi: jak &quot;po ludzku&quot; (czyt. prawidłowo)zadeklarować  OCR1A=m, żeby nie trzeba było pisać tego dwa razy ( co widać w moim godnym uśmiechu programie).<br />Zdaję sobie sprawę, że pytanie jest banalne ale wizualnie nie podoba mi się mój produkt.<br />Dla ścisłości działa toto dobrze ale napisane....<br />Diody na PB efekt wizualny, dioda na PD - sprawdzałem, czy zmienia się częstotliwość zmian ( ale wyszło  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> )<br />Pomocnym dziękuję, urażonych przepraszam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 28 lut 2013, o 00:18</p><hr />
]]></content>
</entry>
</feed>