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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-20T15:53:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14553&amp;mode</id>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-20T15:53:17+01:00</updated>
<published>2016-02-20T15:53:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154180#p154180</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154180#p154180"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154180#p154180"><![CDATA[
Spoko, nie denerwuję się <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Wkleiłeś po prostu jakiś dziwny kod i nie mówię wcale o zakomentowanym kodzie. Dwa while(), do tego dwa razy if(Timer3) i już nie patrzyłem nawet czy coś jeszcze, to nie mogło działać jak trzeba. No ale dość już o tym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Błąd w 49? Czyli? Bo coś mi się nie zgadza. U mnie nie było błędów. Na pewno popraw linię 48, bo ja miałem diodę wpiętą pod PB0, a teraz widzę że zapomniałem zmienić na Twój pin. <br />A jak wyskakuje Ci jakiś błąd i piszesz o tym na forum, to napisz co to za błąd. W przeciwnym wypadku na pewno nikt Ci nie pomoże.<br />Więc jak, działa jak miało?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 20 lut 2016, o 15:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-19T22:24:40+01:00</updated>
<published>2016-02-19T22:24:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154151#p154151</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154151#p154151"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154151#p154151"><![CDATA[
Chłopie - ten kod, który wrzuciłeś, to jakiś żart - to miało działać?<br />I jeszcze piszesz, że tam mój fragment siedzi. To masakra!<br />Jak coś wklejasz, to sprawdzaj czy dobrze. A nie, że masz dwie pętle while(1), do tego mój kod pomieszany... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Masz tu całość, poprawioną. Taki kod wklej i skompiluj. Dodałem w swoim fragmencie tylko a=0; b=0; po spełnieniu Timera3, bo tak faktycznie wszystkie timery działały tylko za pierwszym razem, a potem działał już tylko Timer3. Teraz za każdym razem działają wszystkie po kolei.<br />Więc proszę, sprawdź:<br /><br />[syntax=c]//F_CPU = 8000000Hz<br />//katody diod do pinów<br />//ATmega88<br /> #include &lt;avr/io.h&gt;<br /> #include &lt;util/delay.h&gt;<br /> #include &lt;avr/interrupt.h&gt;<br /> #include &lt;avr/pgmspace.h&gt;<br /><br />volatile uint8_t Timer1, Timer2, Timer3;<br /><br />void soft_timer_init(void) {<br />    /* Timer0 – inicjalizacja przerwania co 10ms */<br />    TCCR0A  |= (1&lt;&lt;WGM01);                  // tryb pracy CTC<br />    TCCR0B  |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);   //|(1&lt;&lt;CS20); // preskaler = 1024<br />    OCR0A   = F_CPU/1024UL/100UL;           // przerwanie porównania co 10ms (100Hz)<br />    TIMSK0  = (1&lt;&lt;OCIE0A);<br />}<br /><br /><br />int main(void){<br /><br />        soft_timer_init();<br /><br />        DDRB |=(1&lt;&lt;PB2);<br />        PORTB |=(1&lt;&lt;PB2);<br /> <br />        DDRD |= (1&lt;&lt;PD6);<br />        PORTD |=(1&lt;&lt;PD6);<br /><br /><br />sei();<br />// przerwanie co 100Hz = 10ms<br />uint8_t a=0, b=0;<br />        Timer1=50;<br />        while(1){<br />                if(!Timer1){<br />                        if(!a){<br />                                a=1;<br />                                Timer2=150;<br />                        }<br />                        if(!Timer2){<br />                                if(!b){<br />                                        b=1;<br />                                        Timer3=250;<br />                                }<br />                                if(!Timer3){<br />                                        Timer1=50;<br />                                        PORTB ^= (1&lt;&lt;PB0);<br />                                        a=0;<br />                                        b=0;<br />                                }<br />                        }<br />                }<br />    }<br /><br /><br /> }<br /><br />ISR( TIMER0_COMPA_vect ){<br /><br />          uint8_t m;<br /><br />          m=Timer1;<br />          if (m)Timer1 = --m;<br /><br />          m=Timer2;<br />          if (m)Timer2 = --m;<br /><br />          m=Timer3;<br />          if (m)Timer3 = --m;<br /><br />          }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 19 lut 2016, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-19T17:02:37+01:00</updated>
<published>2016-02-19T17:02:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154135#p154135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154135#p154135"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154135#p154135"><![CDATA[
Ok, po prostu w kodzie, który podałeś było co innego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 19 lut 2016, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-19T12:26:45+01:00</updated>
<published>2016-02-19T12:26:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154129#p154129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154129#p154129"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154129#p154129"><![CDATA[
Sprawdź dokładnie - to w pętli while to na pewno nie mój kod! Źle coś wkleiłeś chyba, przecież to się rzuca w oczy.<br />Nie mówię, że mój kod dobry, to tylko moje próby, ale tak jak masz teraz to zupełnie sensu nie ma...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 19 lut 2016, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-19T08:30:44+01:00</updated>
<published>2016-02-19T08:30:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154108#p154108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154108#p154108"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154108#p154108"><![CDATA[
Ok, ale co do samej pętli while(1) jeszcze - toś namieszał teraz zupełnie <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />-----<br /><br />Timery wyglądają na poprawnie skonfigurowane.<br />Rozumiem, że pętla while(1) to już Twoja twórczość? A nie pomieszany mój kod?<br /><br />Nie mam możliwości teraz bawić się na &quot;żywym organizmie&quot;.<br /><br />Kurcze, sam byłem ciekawy jak to można sprytnie zrobić, miałem nadzieję, że ktoś oblatany pokaże.<br />Może jeszcze ktoś się odezwie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 19 lut 2016, o 08:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-19T07:39:09+01:00</updated>
<published>2016-02-19T07:39:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154105#p154105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154105#p154105"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154105#p154105"><![CDATA[
50+150+250=450, może masz przerwanie faktycznie co 1ms, a nie jak jak sądzisz co 10?<br />Reszty kodu nie wrzuciłeś, toteż ciężko komuś coś poradzić.<br />Bo nie wiadomo ani na jakim procesorze, ani jak skonfigurowane timery, ani nawet jak wygląda obsługa przerwania.<br />A z domyślania się to może kaszanka wyjść <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=685">zoom</a> — 19 lut 2016, o 07:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-18T20:39:57+01:00</updated>
<published>2016-02-18T20:39:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154057#p154057</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154057#p154057"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154057#p154057"><![CDATA[
Ja tak zrozumiałem:<br /><br />Najpierw ma się wykonać Timer1.<br />Wtedy włącza się Timer2.<br />Kiedy Timer2 się wykona, włącza się Timer3 i zmieniamy stan diody.<br /><br />Wobec tego ostatecznie - dla tego konkretnego kolegi programu dioda powinna migać co sumę okresów wszystkich Timerów (czyli co Timer1+Timer2+Timer3).<br />Według takich założeń naskrobałem ten mój &quot;krzywy&quot; kod.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 18 lut 2016, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-18T15:37:31+01:00</updated>
<published>2016-02-18T15:37:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154016#p154016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154016#p154016"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154016#p154016"><![CDATA[
<div class="quotetitle">1Yokoon napisał(a):</div><div class="quotecontent"><br />Dioda mruga zgodnie z trzecią instrukcją if(!Timer3) nie są brane poprzednie Timery.<br /><br />To jest moja odpowiedź do kolegi zoom, na jego kod.<br /></div><br />No to bawcie się dalej <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> — 18 lut 2016, o 15:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2016-02-18T15:17:10+01:00</updated>
<published>2016-02-18T15:17:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154012#p154012</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154012#p154012"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=154012#p154012"><![CDATA[
A skąd wiesz, że pozostałe nie działają? Nawet ich nie sprawdzasz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 18 lut 2016, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-18T10:18:42+01:00</updated>
<published>2016-02-18T10:18:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153990#p153990</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153990#p153990"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153990#p153990"><![CDATA[
Ja tak patrzę na ten wątek i sorki ale ręce załamuję - bo tak to zwykle jest gdy ktoś zada nieprecyzyjne pytanie, w tym wypadku kompletnie nie opisany dobrze problem albo założenie .... (jak się ma kłopot ze sformułowaniem pytania to warto np opisać co się chce uzyskać zamiast pisać, że zrobiłem tak i siak timery i źle działają) .....<br /><br />I wtedy gdy następne osoby próbują do tego dorobić teorię to zaczyna się MEGA MISZ-MASZ <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a jeszcze na koniec autor pisze:<br /><br /><div class="quotetitle">1Yokoon napisał(a):</div><div class="quotecontent"><br />Dioda mruga zgodnie z trzecią instrukcją if(!Timer3) nie są brane poprzednie Timery.<br /></div><br /><br />przecież tu nie ma ani przecinka ani kropki ... więc już masakra - w ogóle nie wiadomo o co chodzi w tym zdaniu albo o co chodzi autorowi ...<br /><br />---------------------------<br /><br />Dlatego panie autor proponuję - opisz ogólnie w kilku zdaniach co chcesz zrealizować, ale proszę użyj jakichś znaków interpunkcyjnych, podziel to na wyraźne zdania - aby z opisu można było domyśleć się co chcesz uzyskać i nawet o timerach programowych nie musisz pisać bo patrząc na podejmowane tu próby przez wszystkich to idzie to w jakimś mega przedziwnym kierunku ...\<br /><br />Podsumowując - przedstaw prosty algorytm tego co ma się dziać w twoim programie i sam zawsze od tego zaczynaj przemyślenia ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lut 2016, o 10:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-02-18T12:41:49+01:00</updated>
<published>2016-02-18T00:22:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153979#p153979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153979#p153979"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153979#p153979"><![CDATA[
Witam<br />W.g mnie zastosowanie trzech timerów programowych do obsługi zdarzeń szeregowych (słownictwo moje) mija się z celem. Wystarczy tylko w przerwaniu &quot;tykać&quot; jednostką czasu, po 250 - zerować a pętli gł. dać warunki:<br />[syntax=c]if(takt&lt;51) to_zdarzenie_pierwsze;<br />if(takt&gt;50 &amp;&amp; takt&lt;151) to_zdarzenie_drugie;<br />if(takt&gt;150) to_zdarzenie_trzecie;[/syntax]<br />...no chyba, że głębiej w programie jest konieczne posługiwanie się trzema timerami.<br /><div class="quotetitle">zoom napisał(a):</div><div class="quotecontent"><br />... chałupniczo zrobiłem..<br /></div><br />...a ja wręcz prostacko  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />edit:<br />Tych &quot;tyknięć&quot; musi być oczywiście więcej, tzn. mają być sumą poszcz. przedziałów czasowych... zresztą i tak nie wiadomo jakie są założenia.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 18 lut 2016, o 00:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-17T21:37:20+01:00</updated>
<published>2016-02-17T21:37:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153949#p153949</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153949#p153949"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153949#p153949"><![CDATA[
Wykombinowałem coś takiego jak poniżej. Wydaje mi się, że będzie działało tak, jak Ty chcesz.<br />Chodzi o to, że przez dodanie dodatkowych warunków, uruchamiamy sobie kolejne Timery dopiero po tym jak poprzednie skończą się odliczać. Teraz nie będą się równolegle zliczały.<br />Pewnie da się to bardziej elegancko zrobić. Ja to tak trochę topornie, łopatologicznie, chałupniczo zrobiłem.. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Chętnie bym zobaczył jakieś ładniejsze rozwiązanie tego, może ktoś jeszcze podrzuci. <br /><br />[syntax=c]uint8_t a=0, b=0;<br />Timer1=50;<br />while(1){         <br />                if(!Timer1){<br />if(!a){<br />a=1;<br />Timer2=150;<br />}<br />if(!Timer2){<br />if(!b){<br />b=1;<br />Timer3=250;<br />}<br />if(!Timer3){ <br />Timer1=50;<br />PORTD ^= (1&lt;&lt;PD6);<br />}<br />}<br />}<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 17 lut 2016, o 21:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-02-16T20:25:39+01:00</updated>
<published>2016-02-16T20:25:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153855#p153855</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153855#p153855"/>
<title type="html"><![CDATA[Re: Kilka Timerów programowych.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14553&amp;p=153855#p153855"><![CDATA[
Powiedzmy, że Timer1 dojdzie do zera, warunek spełniony, nadpisujesz go wartością i w następnym obiegu znów będzie niespełniony.<br />Tylko jakim cudem wykonywał Ci się Timer 3? No tak, wykonywały Ci się wszystkie Timery, bo akurat tak Ci się poszczęściło. Jakby Timer1 był 49, to dłuugo byś czekał na mignięcie diody.<br /><br />Powinno być:<br /><br />[syntax=c]while(1){<br />     <br />                    if(!Timer1){<br />                            if(!Timer2){                       <br />                            if(!Timer3){<br />                            Timer1 = 50;<br />                            Timer2 = 150;<br />                            Timer3 = 250;<br /><br />                            PORTD ^= (1&lt;&lt;PD6);<br />            }<br />            }<br />            }<br />}[/syntax]<br /><br />--------------------------------<br />Nie, to jednak też nie będzie działało jak trzeba. Timery będą pracować równolegle.. Czyli ostatecznie będzie wykonywał się znów tylko Timer3.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 16 lut 2016, o 20:25</p><hr />
]]></content>
</entry>
</feed>