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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-13T21:21:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=17056&amp;mode</id>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-12-13T21:21:44+01:00</updated>
<published>2016-12-13T21:21:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177415#p177415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177415#p177415"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177415#p177415"><![CDATA[
Bardziej &quot;eleganckim&quot; rozwiązaniem jest zastosowanie mechanizmu callbacków.<br />Poczytaj: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic2783.html" >topic2783.html</a><!-- l --><br /><br />A tymczasem spróbuj jakoś tak:<br />[syntax=c]#define PORT_KEY1 PORTC<br />#define PIN_KEY1 PINC<br />#define KEY1 (1&lt;&lt;PC7)        <br />#define KEY1_DOWN (PIN_KEY1 &amp; KEY1) <br />                                             <br />volatile uint16_t key_lock1;<br /><br />uint8_t key(void);<br />.<br />.<br />.<br />int main( void ) {<br />    <br />    PORT_KEY1 |= KEY1;<br /><br />    while(1){<br />pomiar();<br />if( key() ) uart();<br />alarm();<br />ekran();<br />}<br /><br />}<br /><br />uint8_t key(void) {  <br />    <br />    static uint8_t temp = 1;<br />      <br />    if( !key_lock1 &amp;&amp; !KEY1_DOWN ) {<br />        key_lock1 = 50000;<br /><br />        temp = !temp;<br />    }<br />    else if( key_lock1 &amp;&amp; KEY1_DOWN ) key_lock1++;<br />    <br />    return temp;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 13 gru 2016, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-13T20:32:01+01:00</updated>
<published>2016-12-13T20:32:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177408#p177408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177408#p177408"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177408#p177408"><![CDATA[
Dzięki bardzo za odpowiedź. W sumie myslałem nad własnie takimi jakby flagami( jeszcze nie tesotwałem) . Zastanawiam sie tylko czy to jak to mówią &quot;eleganckie&quot; rozwiązanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 13 gru 2016, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-13T20:12:45+01:00</updated>
<published>2016-12-13T20:12:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177404#p177404</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177404#p177404"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177404#p177404"><![CDATA[
czy już pisałeś obsługę klawiszy ?<br />jeżeli tak to kliknięciem zmieniaj wartość zmiennej z 1 na 0 i odwrotnie.<br />jeżeli jeden to wykonuj funkcję 1.<br />jeżeli 0 to wykonuj funkcję 2.<br /><br />albo kliknięcie to inkrementacja &quot;zmienna++;&quot;<br /><br />jeżeli zmienna==1 to - f_1;f_2...<br />jeżeli zmienna==2 to - f_3; f_5...<br />jeżeli !zmienna to - f_1;f_2;f_3.....<br />...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 13 gru 2016, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-13T19:33:21+01:00</updated>
<published>2016-12-13T19:33:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177397#p177397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177397#p177397"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177397#p177397"><![CDATA[
Dzięki za podpowiedzi. Mam jeszcze jeden problem lub może nie problem, a takie rozmyślanie. Powiem o co chodzi...Trochę sie waham o tym pisać, ponieważ nie jest to związane za bardzo z tematem wątku. Problem polega na tym, że w pętli głównej, mam kilka funkcji i program sobie działa. Pokaże to ta obrazowo: <br />[syntax=c]while(1){<br />pomiar();<br />uart(); &lt;--- komunikacja z PC<br />alarm();<br />ekran();<br />}[/syntax]<br /><br />Jednak chciałbym wprowadzić do programu taką zmianę. Program działa ciągle ale bez komunikacji z PC. Jednak gdy wcisnę na chwilę klawisz to aktywuje się działanie funkcji uart(); , wyłączam działanie funkcji pomiar(); natomiast pozostałe funkcje pracują. I taką zmianę chciałbym wporwadzać na okres od kliknięcia klawisza do ponownego kliknięcia klawisza. <br />Zastanawiam sie jak można to zrealizować. Rozmyślałem nad przerwaniami , ale do tej pory korzystałem z nich, aby po np. jakimś przerwaniu zewnętrznym wykonać dany algorytm. Natomiast tutaj trochę to innaczej wygląda.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 13 gru 2016, o 19:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-12-13T11:54:34+01:00</updated>
<published>2016-12-13T11:54:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177359#p177359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177359#p177359"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177359#p177359"><![CDATA[
Spróbuj tak:<br />[syntax=c]void pom(){<br /> <br />if(flaga_sek){<br /><br />if(l_sek%10==0)// pomiar 1 minuta<br />{<br />pm = odczyt(5);  // Uwy z czujnika CO<br />liczba= pm*25UL*2UL;<br />wartosc=liczba/10; // Uwy w mV<br />par_b=38275/10000; // parametr b rownania kwadratowego<br />display= ((6476*wartosc)/10000)+par_b; // wartosc na wyswietlaczu<br />//flaga_sek=0; // nie tutaj<br />}<br /><br />flaga_sek=0; // tutaj<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 13 gru 2016, o 11:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-13T11:39:47+01:00</updated>
<published>2016-12-13T11:39:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177358#p177358</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177358#p177358"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177358#p177358"><![CDATA[
Przepraszam muszę poprawić nad swoim wyjasnienie tematu na przyszłość, jeśli wgl o coś pytam. Spowodowane jest to tym, że jak mi coś nie wychodzi to jeste zdenerwowany i się nie cierpliwie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Po raz kolejny dziękuję za odzew z waszej strony. <br />Zmienne flaga_sek pochodzi o timera. Robię coś podobnego jak Pan Mirek w BB przy opisie czujników one wire. <br />Problem polegał na tym, że jak wykonuje kilka rzeczy w programie w jednym czasie to pod warunkiem if(flaga_sek){} muszą znaleźć się w tym samym miejscu wszystkie te rzeczy, a nie oddzielnie ( kilka tych samych warunków). Nie wiem czy jasno to powiedziałem... Jak coś to wyjasnie to jaśniej ;p Dzięki wielkie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 13 gru 2016, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-13T06:56:48+01:00</updated>
<published>2016-12-13T06:56:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177319#p177319</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177319#p177319"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177319#p177319"><![CDATA[
<div class="quotetitle">mucios15 napisał(a):</div><div class="quotecontent"><br />  <br /> [syntax=c]    if(flaga_sek){......<br />        if(l_sek%10==0){......[/syntax]<br /></div><br />Tak jak kolega &quot;<strong>michal1210</strong>&quot; napisał.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> - gdzie i w jaki sposób ustawiasz flaga_sek ?<br /><br />  w pierwszym wierszu warunek jest spełniony gdy flaga_sek &gt; 0.<br />(gdzieś systematycznie musisz przypisywać flaga_sek=1; )<br /><br />  w drugim wierszu warunek jest spełniony gdy reszta z dzielenia wartości sekund przez 10 wynosi 0.<br />(czyli co 10 sek.)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 13 gru 2016, o 06:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[michal1210]]></name></author>
<updated>2016-12-13T00:38:35+01:00</updated>
<published>2016-12-13T00:38:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177317#p177317</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177317#p177317"/>
<title type="html"><![CDATA[Re: Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177317#p177317"><![CDATA[
Nie pokazałeś co zmienia zmienną &quot;flaga_sek&quot; na wartość większą od zera (prawdę)<br /><br />Jeśli ona jest tylko powołana do życia na początku programu to automatycznie przypisaną ma wartość 0 więc warunek się nie wykona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=998">michal1210</a> — 13 gru 2016, o 00:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-13T00:04:31+01:00</updated>
<published>2016-12-13T00:04:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177310#p177310</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177310#p177310"/>
<title type="html"><![CDATA[Wyeliminowanie delay'ów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17056&amp;p=177310#p177310"><![CDATA[
Witam wszystkich, próbuję zrozumieć działanie programów, w których to nie używa się opóźnień w postaci _delay_ms. <br />Wykorzystuje do tego celu timer oraz flagi tak jak to Pan Mirek wytłumaczył w BB. Jednak przerobienie programu, wkórym były opóźnienia w postaci delay, na program gdzie czas dedykuje tylko timer troche sprawia mi kłopoty. <br />Np. tutaj. <br />[syntax=c]void pom(){<br /><br />if(flaga_sek){<br />if(l_sek%10==0)// pomiar 1 minuta<br />{<br /> <br /><br />pm = odczyt(5);  // Uwy z czujnika CO<br />liczba= pm*25UL*2UL;<br />wartosc=liczba/10; // Uwy w mV<br />par_b=38275/10000; // parametr b rownania kwadratowego<br />display= ((6476*wartosc)/10000)+par_b; // wartosc na wyswietlaczu<br /><br /><br /><br />flaga_sek=0;<br />}<br /><br />}<br /><br />Gdy ustawie flagi to funkcja się nie wykonuję, natomiast gdy dam samego if(l_sek%10==0) to działa. Nie wiem co jest grane.[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 13 gru 2016, o 00:04</p><hr />
]]></content>
</entry>
</feed>