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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-10T16:50:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15971&amp;mode</id>
<entry>
<author><name><![CDATA[Situs]]></name></author>
<updated>2016-08-10T16:50:29+01:00</updated>
<published>2016-08-10T16:50:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165808#p165808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165808#p165808"/>
<title type="html"><![CDATA[Re: jednorazowe wywoływanie funkcji w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165808#p165808"><![CDATA[
[syntax=c]uint8_t flaga1 = 0x01 ;<br />uint8_t flaga2 = 0x01 ;<br />while(1)<br />{<br />if(!(PINA &amp; 0x08))<br />{<br />instrukcja1() ;<br />if(flaga1 == 0x01)<br />{<br />instrukcja2() ;<br />flaga1 = 0x00 ;<br />}<br />}<br />if(!(PINA &amp; 0x04))<br />{<br />instrukcja1() ;<br />if(flaga2 == 0x01)<br />{<br />instrukcja2() ;<br />flaga2 = 0x00 ;<br />}<br />}<br />}[/syntax]<br />Jakbyś chciał by instrukcja2 wykonywała się nie razem dwa razy(raz w pierwszym if'ie raz w drugim (oczywiście po spełnieniu warunków)) tylko raz niezależnie czy w pierwszym if'ie czy drugim to zamień wszystkie flaga2 i flaga1 na flaga i zamień[syntax=c]uint8_t flaga1 = 0x01 ;<br />uint8_t flaga2 = 0x01 ;[/syntax] na [syntax=c]uint8_t flaga = 0x01[/syntax]Poza tym by jeszcze raz się instrukcja1 wykonała zmieniasz wartość zmiennej flaga1, flaga2 lub flaga na 0x01 Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14339">Situs</a> — 10 sie 2016, o 16:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BoskiMario]]></name></author>
<updated>2016-08-10T09:02:15+01:00</updated>
<published>2016-08-10T09:02:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165778#p165778</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165778#p165778"/>
<title type="html"><![CDATA[Re: jednorazowe wywoływanie funkcji w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165778#p165778"><![CDATA[
[syntax=c]u_int8_t i=0, j=0;<br /><br />    while(1)<br />    {<br />            if(!(PINA &amp; 0x08))<br />            {<br />                            instrukcja1(); //&lt;--------  ta funkcja powinna być wywoływana każdorazowo<br />                            if (i == 0)<br />                            {<br />                                instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu gdy spełniony jest warunek (!(PINA &amp; 0x08))<br />                                i = 1;<br />                            }<br />            }<br />            if(!(PINA &amp; 0x04))<br />            {<br />                            instrukcja1(); //&lt;---------ta funkcja powinna być wywoływana każdorazowo<br />                            if (j == 0)<br />                            { <br />                                  instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu do tego warunku (!(PINA &amp; 0x04))<br />                                  j = 1;<br />                             }<br />    }[/syntax]<br /><br />To takie najprostsze rozwiązanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4832">BoskiMario</a> — 10 sie 2016, o 09:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2016-08-10T08:57:30+01:00</updated>
<published>2016-08-10T08:57:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165777#p165777</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165777#p165777"/>
<title type="html"><![CDATA[Re: jednorazowe wywoływanie funkcji w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165777#p165777"><![CDATA[
Użyj zmiennej pomocniczej jako flaga.<br />po pierwszym wykonaniu instrukcji(2) resetuj flagę i ustaw ją z powrotem poza pętlą. Wykonanie się funkcji uzależnij dodatkowo od stanu flagi.<br /><br />coś takiego np:<br />[syntax=c]while(1)<br />{<br />uint8_t flaga=1;<br />        if(!(PINA &amp; 0x08))<br />                        {<br />                        instrukcja1(); //&lt;--------  ta funkcja powinna być wywoływana każdorazowo<br />                       <br />if(flaga){<br />flaga=0<br /> instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu gdy spełniony jest warunek (!(PINA &amp; 0x08))<br />     }                 <br />  }<br />        if(!(PINA &amp; 0x04))<br />                        {<br />                        instrukcja1(); //&lt;---------ta funkcja powinna być wywoływana każdorazowo<br />                        instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu do tego warunku (!(PINA &amp; 0x04))<br />                        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 10 sie 2016, o 08:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matej1410]]></name></author>
<updated>2016-08-10T08:37:11+01:00</updated>
<published>2016-08-10T08:37:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165774#p165774</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165774#p165774"/>
<title type="html"><![CDATA[jednorazowe wywoływanie funkcji w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15971&amp;p=165774#p165774"><![CDATA[
Witam.<br /><br />Nie mogę poradzić sobie z wykonaniem pewnej instrukcji tylko &quot;jeden raz&quot;.<br />Chciałbym, żeby funkcja instrukcja2 została wywołana tylko raz natomiast instrukcja1 za każdym razem. <br />Próbowałem zrobić inkrementację zmiennej wewnątrz if i napisać program tak, żeby tylko przy określonej wartości tej zmiennej funkcja instrukcja2 się wykonywała, jednakże niesie to za sobą takie konsekwencje, że program w takim inkrementującym liczniku &quot;grzęźnie&quot; i pętla while przestaje sprawdzać warunki: if(!(PINA &amp; 0x08)) oraz if(!(PINA &amp; 0x04)). Prosze o wskazówkę jak ugryźć ten problem?<br /><br />[syntax=c]while(1)<br />{<br />if(!(PINA &amp; 0x08))<br />{<br />instrukcja1(); //&lt;--------  ta funkcja powinna być wywoływana każdorazowo<br />                        instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu gdy spełniony jest warunek (!(PINA &amp; 0x08))<br />}<br />if(!(PINA &amp; 0x04))<br />{<br />instrukcja1(); //&lt;---------ta funkcja powinna być wywoływana każdorazowo<br />instrukcja2(); //&lt;-------- tylko przy pierwszym wejściu do tego warunku (!(PINA &amp; 0x04))<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1912">matej1410</a> — 10 sie 2016, o 08:37</p><hr />
]]></content>
</entry>
</feed>