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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-14T23:26:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=17569&amp;mode</id>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2017-03-14T23:26:31+01:00</updated>
<published>2017-03-14T23:26:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=184832#p184832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=184832#p184832"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=184832#p184832"><![CDATA[
@mczarny - a jakbyś zastosował taki kod -<br />[syntax=c]mDelay(1000);<br /><br />}<br />}<br /><br />void mDelay (uint16_t ms){<br /><br />//uint16_t n;<br /><br />while(ms--){<br />//_delay_ms(1);<br />_delay_us(1);<br /><br />if(ms==0) mstick++;<br />if( mstick &gt; 899 ) mstick = 0;[/syntax]<br />wtedy - procesor jest zajmowany(blokowany) przez 1ms na obieg funkcji głównej.<br />Jeśli się mylę, to już robię pompki <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br />Ja w ROBALU z &quot;miodulo&quot; używam takiego kodu:<br />[syntax=c]n = Timer1;<br />if(n) if(!ms) Timer1 = --n;[/syntax]<br />Sprawdzam, czy Timer1 True i ms wewnątrz funkcji mDelay() jest False.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 14 mar 2017, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-10T19:59:01+01:00</updated>
<published>2017-02-10T19:59:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182370#p182370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182370#p182370"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182370#p182370"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />Z &quot;miodulo&quot; też była wersja i też działała ale uznałem, że Timer to tak bardziej poważnie brzmi<br /></div><br /><br />ale ja mówię o czymś innym panie ... Miodulo w połączeniu z Timerem programowym - to może być mieszanka wybuchowa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />[syntax=c]if( Timer1 % X = Y ) ... zrób to i siamto[/syntax]<br /><br />zanim oczywiście Timer1 dojdzie do zera <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> - pomyśl (tak tylko rzucam hasło)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lut 2017, o 19:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-10T19:55:39+01:00</updated>
<published>2017-02-10T19:55:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182369#p182369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182369#p182369"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182369#p182369"><![CDATA[
Z &quot;miodulo&quot; też była wersja i też działała ale uznałem, że Timer to tak bardziej poważnie brzmi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a dodatkowo muszę jeszcze te procenty przetrawić praktycznie w większym zakresie bo możliwości są jak widzę duże.<br />Dzięki wszystkim za rady a ostatni kod wstawiłem bo może się komuś przyda?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 10 lut 2017, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-10T19:48:53+01:00</updated>
<published>2017-02-10T19:48:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182368#p182368</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182368#p182368"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182368#p182368"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />dioda zapala się po wejściu w funkcję i po osiągnięciu przez Timer1 wartości 200 dioda gaśnie.<br /></div><br />a teraz sobie pomyśl co można tu zdziałać dodatkowo za pomocą Miodulo <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> — 10 lut 2017, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-10T19:50:22+01:00</updated>
<published>2017-02-10T19:25:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182366#p182366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182366#p182366"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182366#p182366"><![CDATA[
<strong>anshar</strong><br />Z diodami miałeś rację bo ja mam anodą do procka.<br />Zrobiłem tak<br />[syntax=c]if (!key &amp;&amp;(START)){<br /><br />LED1();<br /><br />}<br /><br />if(key &amp;&amp; !(START)){<br />key=0;<br /><br />}[/syntax]<br /><br />a sama funkcja<br />[syntax=c]void LED1(void){<br /><br /> if(!Timer1)<br />             {<br />             Timer1=500;<br />            LED3_ON;<br />             }<br /><br />             else if(Timer1==200)<br />             {<br />             LED3_OFF;<br />             key=1;<br />             }<br /><br />}[/syntax]<br /><br />dioda zapala się po wejściu w funkcję i po osiągnięciu przez Timer1 wartości 200 dioda gaśnie.<br />Dodatkowo zmienną pomocniczą &quot;key&quot; ustawiam na &quot;1&quot; żeby pierwszy <strong>if</strong> zadziałał tylko raz.<br />Po puszczeniu przycisku START zmienna &quot;key&quot; jest zerowana.<br />Maszyna stanów w postaci prostego szpadla  <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=4651">mczarny</a> — 10 lut 2017, o 19:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-02-08T22:58:28+01:00</updated>
<published>2017-02-08T22:58:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182173#p182173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182173#p182173"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182173#p182173"><![CDATA[
Wszystko zależy od tego jak masz podłączone te diody.<br />Jeżeli jeszcze tego nie widziałeś to poczytaj tutaj:<br /><a href="http://mirekk36.blogspot.co.uk/2012/01/avr-porty-wewy-dir-podstawy.html"  class="postlink">http://mirekk36.blogspot.co.uk/2012/01/avr-porty-wewy-dir-podstawy.html</a><br />Testuję na zestawie ATB, diody są podłączone katodami do pinów procka, a anodami do Vcc. Musisz mieć odwrotnie, dlatego wystarczy zamienić te makra:<br />[syntax=c]#define LED2_ON PORT_LED2 &amp;= ~LED2<br />#define LED2_OFF PORT_LED2 |= LED2[/syntax]<br />na:<br />[syntax=c]#define LED2_OFF PORT_LED2 &amp;= ~LED2<br />#define LED2_ON PORT_LED2 |= LED2[/syntax]<br />No i oczywiście:<br />[syntax=c]PORT_LED1 |= LED1;<br />PORT_LED2 |= LED2;[/syntax]<br />na:<br />[syntax=c]PORT_LED1 &amp;= ~LED1;<br />PORT_LED2 &amp;= ~LED2;[/syntax]<br />Co do przycisku to podłącz go z jednej strony do masy, a z drugiej do pinu procka i ta funkcja powinna działać normalnie na wciśnięcie.<br />Nie wiem jakiego procka używasz, sprawdź czy przypadkiem nie masz włączonego JTAG'a.<br /><br />Co do mojego rozwiązania to jest to jedno z wielu, wcale nie musi być najlepsze. Można to zrealizować na wiele sposobów. Kiedyś wpadłem na taki pomysł i się z tobą nim podzieliłem.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 8 lut 2017, o 22:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T22:54:04+01:00</updated>
<published>2017-02-08T22:54:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182172#p182172</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182172#p182172"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182172#p182172"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Jest prosta a nawet bardzo prosta - tylko teraz to musisz się w końcu nauczyć jak korzystać z tzw &quot;maszyny stanów&quot; za pomocą jakichś prostych zmiennych<br /></div><br /><br /><strong>Maszyna stanów</strong> no była mowa w którymś z poradników - muszę poszukać w notatkach...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 lut 2017, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T22:42:11+01:00</updated>
<published>2017-02-08T22:42:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182170#p182170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182170#p182170"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182170#p182170"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Jak widać sprawa zastąpienia &quot;głupiego&quot; delay nie jest taka prosta jeżeli coś ma się wykonać tylko raz a nie w pętli.<br /></div><br />Jest prosta a nawet bardzo prosta - tylko teraz to musisz się w końcu nauczyć jak korzystać z tzw &quot;maszyny stanów&quot; za pomocą jakichś prostych zmiennych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 lut 2017, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T22:24:25+01:00</updated>
<published>2017-02-08T22:24:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182167#p182167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182167#p182167"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182167#p182167"><![CDATA[
<div class="quotetitle">anshar napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent">Wnioskuję, że kod jest przetestowany<br /></div><br />A przetestowany?  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /></div><br /><br />Właśnie przetestowany i działa z jednym małym ale - mianowicie musiałem dokonać małej zmiany<br />[syntax=c]void led(uint8_t state){<br /><br />            if( state &amp;&amp; (!Timer1) ) {<br />                    LED2_OFF;<br />                    Timer1 = 200;<br />            }<br />            else if(!Timer1) {<br />                    LED2_ON;<br />            }<br />    }[/syntax]<br />zamiana pozycjami LED2_ON i LED2_OFF inaczej dioda jest zapalona a gaśnie po wejściu w funkcję (miała być zgaszona i zapalać się po wywołaniu funkcji)<br />druga sprawa to w tym fragmencie<br />[syntax=c]uint8_t press(void){<br /><br />            uint8_t wynik = 0;<br />            static uint16_t key_lock;<br />            uint8_t stan = ~PIN_KEY;[/syntax]<br />musiałem &quot;zatyldować&quot; PIN_KEY inaczej reakcja była nie na naciśnięcie a na puszczenie klawisza - być może mam inaczej podłączony<br /><br />Jak widać sprawa zastąpienia &quot;głupiego&quot; delay nie jest taka prosta jeżeli coś ma się wykonać tylko raz a nie w pętli.<br />Rozwiązanie ląduje w moich tajnych notatkach i będę szukał dalej innych sposobów.<br />Kol.<strong>anshar</strong> dostaje pigułkę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 lut 2017, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-02-08T21:13:51+01:00</updated>
<published>2017-02-08T21:13:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182154#p182154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182154#p182154"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182154#p182154"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />Wnioskuję, że kod jest przetestowany<br /></div><br />A przetestowany?  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 8 lut 2017, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T20:56:41+01:00</updated>
<published>2017-02-08T20:56:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182148#p182148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182148#p182148"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182148#p182148"><![CDATA[
<strong>Bartek123</strong><br />nadal operujesz w pętli głównej a opóźnienie ma zadziałać wewnątrz funkcji wywołanej naciśnięciem klawisz lub czymkolwiek innym<br />[syntax=c]if(KEY_PRESS){<br />LED();<br />}<br /><br /><br />void LED(void){<br /><br />  LED3_ON;<br />  <br />  _delay_ms(1000); // ten delay trzeba zastąpić<br /><br />  LED3_OFF;<br />}[/syntax]<br /><br />w tym czasie pętla główna działać ma niezależnie<br /><br />Kol.<strong>anshar</strong> przedstawił ciekawą koncepcję wykorzystania w funkcji dodatkowej zmiennej.<br />Wnioskuję, że kod jest przetestowany <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=4651">mczarny</a> — 8 lut 2017, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-02-08T20:30:56+01:00</updated>
<published>2017-02-08T20:30:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182144#p182144</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182144#p182144"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182144#p182144"><![CDATA[
Może jakoś tak: <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />volatile uint16_t Timer1, Timer2;/* timery programowe 100Hz */<br /><br />#define LED1 (1&lt;&lt;PC6)<br />#define PORT_LED1 PORTC<br />#define DDR_LED1 DDRC<br />#define LED1_TOG PORT_LED1 ^= LED1<br /><br />#define LED2 (1&lt;&lt;PC7)<br />#define PORT_LED2 PORTC<br />#define DDR_LED2 DDRC<br />#define LED2_ON PORT_LED2 &amp;= ~LED2<br />#define LED2_OFF PORT_LED2 |= LED2<br /><br />#define KEY (1&lt;&lt;PC5) //definicja pinu z klawiszem<br />#define PORT_KEY PORTC<br />#define PIN_KEY PINC<br /><br />uint8_t press(void);<br />void led(uint8_t state);<br /><br />int main(void) {<br /><br />DDR_LED1 |= LED1;<br />DDR_LED2 |= LED2;<br />PORT_LED1 |= LED1;<br />PORT_LED2 |= LED2;<br /><br />PORT_KEY |= KEY;<br /><br />/* Timer2 – inicjalizacja przerwania co 10ms */<br />TCCR2   |= (1&lt;&lt;WGM21);                  // tryb pracy CTC<br />TCCR2   |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);       // preskaler = 1024<br />OCR2    = 108;                                  // przerwanie porównania co 10ms (100Hz), dla 11059200Hz<br />TIMSK   = (1&lt;&lt;OCIE2);                   // Odblokowanie przerwania CompareMatch<br /><br />sei();<br /><br />while(1) {<br /><br />uint8_t led_on = press();<br />led( led_on);<br /><br />if(!Timer2) {<br />LED1_TOG;<br />Timer2 = 50;<br />}<br />}<br />}<br /><br />void led(uint8_t state){<br /><br />if( state &amp;&amp; (!Timer1) ) {<br />LED2_ON;<br />Timer1 = 200;<br />}<br />else if(!Timer1) {<br />LED2_OFF;<br />}<br />}<br /><br />uint8_t press(void){<br /><br />uint8_t wynik = 0;<br />static uint16_t key_lock;<br />uint8_t stan = PIN_KEY;<br /><br />if( !key_lock &amp;&amp; !(stan &amp; KEY ) ) {<br />key_lock = 50000;<br /><br />wynik = 1;<br /><br />return wynik;<br />}<br />else if( key_lock &amp;&amp; (stan &amp; KEY) ) key_lock++;<br /><br />return wynik;<br />}<br /><br />ISR(TIMER2_COMP_vect)<br />{<br />        uint16_t n;<br /><br />        n = Timer1;             /* 100Hz Timer1 */<br />        if (n) Timer1 = --n;<br /><br />        n = Timer2;             /* 100Hz Timer1 */<br />        if (n) Timer2 = --n;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 8 lut 2017, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2017-02-08T20:28:10+01:00</updated>
<published>2017-02-08T20:28:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182143#p182143</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182143#p182143"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182143#p182143"><![CDATA[
Jak pisałem kwestia wyobraźni już Ci pokazuje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /><br />[syntax=c]uint16_t Timer = 0;<br />uint16_t Timer2 = 0;<br />uint8_t funStart = 0;<br /><br />while(1)<br />{<br />if(Key_push)<br />{<br />FUNKCJA_ONE();//ta się wykona odrazu po naciśnięciu klawisza.<br />funStart = 1;<br />}<br />if(Timer2 == 2000)<br />{<br />FUNKCJA_TWO();//ta się wykona po 2s po naciśnięciu klawisza.<br />funStart = 0;<br />Timer2 = 0;<br />}<br />Timer++;<br />if(funStart)<br />Timer2++;<br />_delay_ms(1);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10617">Bartek123</a> — 8 lut 2017, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T19:50:58+01:00</updated>
<published>2017-02-08T19:50:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182135#p182135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182135#p182135"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182135#p182135"><![CDATA[
<strong>Bartek123</strong><br /><br />Zupełnie nie zrozumiałeś o co chodzi<br /><br />To jak to zrobić w pętli to ja wiem co zresztą pokazałem w kodzie post wyżej bez użycia nawet &quot;delay_ms(1)&quot;<br />Chodzi o to że po wciśnięciu przycisku program skacze do funkcji w której ma zapalić diodę a po powiedzmy 2s ją zgasić i koniec - koniec funkcji która może być wywołana przez naciśnięcie przycisku w dowolnym czasie a pętla główna ma latać sobie cały czas swobodnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 lut 2017, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2017-02-08T19:33:12+01:00</updated>
<published>2017-02-08T19:33:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182129#p182129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182129#p182129"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182129#p182129"><![CDATA[
Zobacz ja to sobie tak zrozumiałem -&gt;. Aby program był nieblokujący ma być tak zrobiona pętla aby możliwie najwięcej obiegów mogła zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . To teraz tak jak wstawisz delay czy mydelay czy nie wiadomo co co opóźnia jeden obieg pętli wtedy się zacznie wydłużać i jak pętla ma się nie blokować skoro jeden obieg jej zajmie np 1s <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" />  woolno co nie?. To teraz możesz zrobić zmienna dajmy na to Timer. Teraz zrobić trzeba podstawe czasu czyli jak dużo razy musi się obracać pętla aby była w miare nie zauważone blokowanie? Dajmy na to że musi 1000 razy obiegnąć na sekundę czyli jeden obieg 1ms czyli w pętlę dajemy delay'a 1ms i co obieg zwiększamy zmienną Timer o 1 wtedy ta zmienna będzie wskazywać ile ms minęło. I na koniec starczy dać jeszcze warunek w pętli że jak Timer osiągnie np 100 (czyli 100ms minęło) to wyzeruj Timer i zrób jakąś akcję np mrugnij ledem czy coś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . A teraz kod dla zobrazowania<br />[syntax=c]uint8_t Timer = 0;<br />while(1)<br />{<br />if(Timer == 100)<br />{<br />Jakaś_akcja();//co 100ms to się wykona.<br />Timer = 0;<br />}<br />_delay_ms(1);<br />Timer++;<br />}[/syntax]<br /><br />Co prawda dalej się troszeczkę będzie blokować ale dla takich prostych akcji jak obsługa 2 klawiszy kilku ledów to co to jest, a jak nie ma wyjścia to Trzeba jakoś sobie radzić. Kwestia wyobraźni <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=10617">Bartek123</a> — 8 lut 2017, o 19:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T18:23:22+01:00</updated>
<published>2017-02-08T18:23:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182124#p182124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182124#p182124"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182124#p182124"><![CDATA[
Panowie<br />Wracając do tematu<br />W pętli głównej zachodzą sobie trzy niezależne migania diodą i jest ok. <br />[syntax=c]lcd_locate(1,10);<br />lcd_int(m);<br />if(m&gt;30){<br />m=0;<br />LED2_TOG;<br />}<br />lcd_locate (1,3);<br />lcd_int(n);<br />if(n&gt;60){<br />n=0;<br />LED1_TOG;<br />}<br /><br />lcd_locate(0,2);<br />lcd_int(x);<br />if(!Timer1){<br />Timer1=200;<br />LED3_ON;<br />}<br />else if(Timer1==100)LED3_OFF;[/syntax]<br />ale jeżeli chcę zrealizować opóźnienie w funkcji to jest problem. Program po naciśnięciu przycisku START wchodzi w funkcję<br />[syntax=c]void LED(void)[/syntax]<br />[syntax=c]if(!key &amp;&amp; (START))<br />   {<br /><br />   key=1;<br />   LED();<br />   }<br />   else if(key &amp;&amp; !(START))<br />   {<br />   key=0;<br />   }[/syntax]<br />LED3 jest zapalany ale niestety nie jest gaszony a chodzi o to żeby został zgaszony po np.1s<br />[syntax=c]void LED(void){<br /><br />  LED3_ON;<br /><br />//co tu należy wstawić żeby zastąpić _delay_ms() ?<br /><br /><br />// bo to co działa w pętli głównej nie działa w funkcji<br />//if(!Timer1){<br />//Timer1=200;<br />//LED3_ON;<br />//}<br />//else if(Timer1==100)LED3_OFF;<br />  LED3_OFF;<br />}[/syntax]<br />Jak to zrealizować nie blokując pętli głównej?<br />Aha 20 pompek zrobione zaliczkowo.....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 8 lut 2017, o 18:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T16:04:04+01:00</updated>
<published>2017-02-08T16:04:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182101#p182101</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182101#p182101"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182101#p182101"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />Mirku, możesz mnie uznać za gramar nazi, ale nie na brzuszki, tylko na brzuszek <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /></div><br /><br />hahaha tu nie chodzi o gramatykę, bo skąd wiesz, kto ma ile brzuszków? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ja mam dwa <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=54">mirekk36</a> — 8 lut 2017, o 16:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-02-08T15:44:17+01:00</updated>
<published>2017-02-08T15:44:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182098#p182098</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182098#p182098"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182098#p182098"><![CDATA[
Mirku, możesz mnie uznać za gramar nazi, ale nie na brzuszki, tylko na brzuszek <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 8 lut 2017, o 15:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T15:04:09+01:00</updated>
<published>2017-02-08T15:04:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182090#p182090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182090#p182090"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182090#p182090"><![CDATA[
No ale właśnie pompki są na brzuszki <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=54">mirekk36</a> — 8 lut 2017, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T14:59:24+01:00</updated>
<published>2017-02-08T14:59:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182088#p182088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182088#p182088"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182088#p182088"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ja też musiałem już kilka razy pompki robić <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> za karę na forum<br /></div><br /><br />Ja myślę, że niektórym to i brzuszki by się przydały <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=4651">mczarny</a> — 8 lut 2017, o 14:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T13:57:19+01:00</updated>
<published>2017-02-08T13:57:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182080#p182080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182080#p182080"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182080#p182080"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent">ja też musiałem już kilka razy pompki robić <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> za karę na forum<br /></div>Te, o których pisałeś dziś wcześniej? O czym nie miał się SunRiver dowiedzieć? (Tu mogę napisać, Sun do działów dla początkujących nie zagląda <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />)</div><br /><br />pssssst <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> cichosza ... tamtego miał nikt nie widzieć <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=54">mirekk36</a> — 8 lut 2017, o 13:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-02-08T13:56:26+01:00</updated>
<published>2017-02-08T13:56:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182079#p182079</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182079#p182079"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182079#p182079"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ja też musiałem już kilka razy pompki robić <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> za karę na forum<br /></div>Te, o których pisałeś dziś wcześniej? O czym nie miał się SunRiver dowiedzieć? (Tu mogę napisać, Sun do działów dla początkujących nie zagląda <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=12752">Marhef</a> — 8 lut 2017, o 13:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T13:44:12+01:00</updated>
<published>2017-02-08T13:44:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182078#p182078</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182078#p182078"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182078#p182078"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />każą pompki robić ehhh....<br /></div><br />Wiesz sam pisałeś o karze - więc aż się prosiło żeby ją zlecić <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .... a co ? ja też musiałem już kilka razy pompki robić <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> za karę na forum<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Bartek123 napisał(a):</div><div class="quotecontent"><br />Jeszcze (chyba <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ) jak chcesz przekazać zmienną jako argument funkcji _delay_ms(zmienna) to wtedy nagle program zaczyna zjadać dużooooo pamięci. A tym z my_delay jest lepiej. Zresztą co będę pisał spróbuj sobie i zobacz które mniej zajmuje pamięci <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .<br /></div><br /><br />No tak to BODAJŻE najważniejsze w tej zamianie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> do funkcji _delay_ms() NIE MOŻNA przekazywać czasu w postaci zmiennej lecz TYLKO I WYŁĄCZNIE w postaci STAŁEJ DOSŁOWNEJ bo program spuchnie o 2kb z uwagi na dodanie funkcji obsługi liczb float. A taka zamiana daje nam swobodną możliwość żeby nie było dociągania tej biblioteki - więc SAME zalety tej funkcji <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> — 8 lut 2017, o 13:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2017-02-08T13:41:33+01:00</updated>
<published>2017-02-08T13:41:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182077#p182077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182077#p182077"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182077#p182077"><![CDATA[
Jeszcze (chyba <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ) jak chcesz przekazać zmienną jako argument funkcji _delay_ms(zmienna) to wtedy nagle program zaczyna zjadać dużooooo pamięci. A tym z my_delay jest lepiej. Zresztą co będę pisał spróbuj sobie i zobacz które mniej zajmuje pamięci <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=10617">Bartek123</a> — 8 lut 2017, o 13:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2017-02-08T13:36:05+01:00</updated>
<published>2017-02-08T13:36:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182076#p182076</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182076#p182076"/>
<title type="html"><![CDATA[Re: Funkcja my_delay]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17569&amp;p=182076#p182076"><![CDATA[
Dobra - pompki wykonane i to z nadmiarem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />To nie chodzi o to, ze nie oglądam poradników i z nich nie korzystam - robię to jak najbardziej.<br />Po prostu znalazłem temat gdzie &quot;ktoś&quot; polecał tą funkcję zamiast zwykłego _delay_ms i zacząłem się zastanawiać  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />Stąd moje doświadczenie i pytanie.<br />W programach praktycznie nie używam _delay_ms - no chyba, że w miejscu w którym wiem, że mogę bo to nie wpłynie na pracę programu np:<br />zanik napięcia sieci - procek dokonuje wtedy zapisu do Eeprom-u i żeby nie zrobił tego kilka razy dostaje na końcu funkcji zwykłego delaya.<br /><br />Gdzieś czytałem, że na forum mogę zadać każde nawet najgłupsze pytanie a tu masz - każą pompki robić ehhh.... <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=4651">mczarny</a> — 8 lut 2017, o 13:36</p><hr />
]]></content>
</entry>
</feed>