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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-10T01:48:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14167&amp;mode</id>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-02-10T01:48:39+01:00</updated>
<published>2016-02-10T01:48:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153220#p153220</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153220#p153220"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153220#p153220"><![CDATA[
Może Ci się przyda:<br /><a href="http://forum.atnel.pl/topic5339.html"  class="postlink">http://forum.atnel.pl/topic5339.html</a><br /><br />Przeczytaj sobie jeszcze komentarze pod tym artykułem (szczególnie ten: Anonimowy1 marca 2014 09:47):<br /><a href="http://mirekk36.blogspot.co.uk/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html"  class="postlink">http://mirekk36.blogspot.co.uk/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 10 lut 2016, o 01:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-02-09T23:44:01+01:00</updated>
<published>2016-02-09T23:44:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153211#p153211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153211#p153211"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153211#p153211"><![CDATA[
Rozumiem rozpisałem to na wartościach np. 100 i 255. Dziękuje Jacek. Super to wytłumaczyłeś. Ale ta pętla musi zapierniczać bo to szybko się przekręca... ile to ms trwa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 9 lut 2016, o 23:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-08T22:11:54+01:00</updated>
<published>2016-02-08T22:11:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153112#p153112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153112#p153112"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153112#p153112"><![CDATA[
Przeanalizuj co się stanie gdy zmienna key_lock będzie miała wartość równą 255 i użyta będzie postinkrementacja.<br /><br />1. Pierwszy if nie będzie spełniony.<br />2. Warunek w drugim if-ie (po else) będzie prawdziwy więc sprawdzony zostanie warunek w trzecim if-ie.<br />3. Skoro użyta został postinkrementacja to najpierw zostanie sprawdzone czy key_lock ma wartość zero (nie ma) a potem jej wartość   zwiększy się o jeden. Key_lock się przekręci i będzie mieć wartość równą zero.<br />4. W następnym obiegu pierwszy if nadal nie będzie spełniony (bo przycisk nie jest wciśnięty), drugi if ten po else też nie bo key_lock ma wartość zero. Jeśli ten if się nie wykona to nie zostanie sprawdzony warunek w trzecim if-ie i stan diody LED nie zostanie zmieniony na przeciwny.<br /><br />A teraz to samo ale z użyciem preinkrementacji.<br />1 i 2 to samo co poprzednio.<br />3. W trzecim if-ie najpierw zostanie zwiększona wartość key_lock a potem sprawdzone czy zmienna ma wartość równą zero. Zmienna miała wartość 255. Po zwiększeniu o jeden ma wartość równą zero. Warunek jest prawdziwy i stan diody LED zostanie zmieniony na przeciwny.<br />4. Również to samo co poprzednio.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 8 lut 2016, o 22:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-02-08T21:42:41+01:00</updated>
<published>2016-02-08T21:42:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153106#p153106</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153106#p153106"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153106#p153106"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">elektronikq napisał(a):</div><div class="quotecontent">I jestem w kropce dzisiaj badam ten program i z ++keylock działa a z keylock++ nie działa więc czy ktoś może wytłumaczyć dlaczego jest różnica w jednej pętli i program nie działa?<br /></div><br /><br />Zacznij od podstaw i poczytaj czym różni się pre- i post- inkrementacja</div><br /><br />Rozumiem co robi post - i pre - inkrementacja. W preinkrementacji najpierw zwiększamy o 1 i pobieramy do wyrażenia a w postinkrementacji pobieramy liczbę która ma aktualną wartość a dopiero potem ją zwiększamy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 8 lut 2016, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-08T21:26:29+01:00</updated>
<published>2016-02-08T21:26:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153105#p153105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153105#p153105"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153105#p153105"><![CDATA[
<div class="quotetitle">elektronikq napisał(a):</div><div class="quotecontent"><br />I jestem w kropce dzisiaj badam ten program i z ++keylock działa a z keylock++ nie działa więc czy ktoś może wytłumaczyć dlaczego jest różnica w jednej pętli i program nie działa?<br /></div><br /><br />Zacznij od podstaw i poczytaj czym różni się pre- i post- inkrementacja<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 lut 2016, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-02-08T20:54:31+01:00</updated>
<published>2016-02-08T20:54:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153103#p153103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153103#p153103"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=153103#p153103"><![CDATA[
I jestem w kropce dzisiaj badam ten program i z ++keylock działa a z keylock++ nie działa więc czy ktoś może wytłumaczyć dlaczego jest różnica w jednej pętli i program nie działa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 8 lut 2016, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-20T22:41:56+01:00</updated>
<published>2016-01-20T22:41:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151250#p151250</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151250#p151250"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151250#p151250"><![CDATA[
No właśnie nad tym się zastanawiałem dlaczego jest preinkrementacja a nie postinkrementacja. Wychodzi na to, że dobrze to kminiłem jak zrobię eclipse bo mam z nim problem nadal to, wgram program i sprawdzę. Dziękuje za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 20 sty 2016, o 22:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2016-01-20T13:03:52+01:00</updated>
<published>2016-01-20T13:03:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151192#p151192</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151192#p151192"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151192#p151192"><![CDATA[
Postinkrementacja najpierw sprawdza warunek potem zwiększa zmienną, preinkrementacja najpierw zwiększa potem sprawdza. Tutaj nie ma znaczenia co najpierw bo przecież zmienna i tak przyjmuje wartości od 0 do 255 i potem znów 0 itd.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 20 sty 2016, o 13:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-20T12:58:36+01:00</updated>
<published>2016-01-20T12:58:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151191#p151191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151191#p151191"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151191#p151191"><![CDATA[
A jak będzie tak:<br />       if( !key_lock++ ) <br /><br />to nie zadziała? Ja w pre i postinkrementacji widzę różnicę w obiegu jednej pętli. Dlatego może, źle to rozumiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 20 sty 2016, o 12:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2016-01-20T12:45:01+01:00</updated>
<published>2016-01-20T12:45:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151189#p151189</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151189#p151189"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151189#p151189"><![CDATA[
Zwrot ++ oznacza zwiększanie zmiennej <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=3349">Arek1111111111</a> — 20 sty 2016, o 12:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-20T12:05:03+01:00</updated>
<published>2016-01-20T12:05:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151186#p151186</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151186#p151186"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=151186#p151186"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />jakby była zmienna++ to nigdy by się warunek nie wykonał<br />[syntax=c]if( !key_lock &amp;&amp; !(PINC &amp; KEY1 ) ) key_lock=1;<br />  else if( key_lock &amp;&amp; (PINC &amp; KEY1 ) ) {<br />   if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }<br />  }[/syntax]<br />powiedzmy że key_lock jest 255, wtedy warunek else if( key_lock &amp;&amp; (PINC &amp; KEY1 ) ) jest spełniony, i <br />warunek poniżej zostanie wykonany, bo najpierw key_lock zostanie zwiększony co da nam key_lock=0.<br />[syntax=c]if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }[/syntax]<br /></div><br />A jakim cudem key_lock ma być 255. Tam jest wpisywana 1 i nie ma żadnego zwiększania tej zmiennej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 20 sty 2016, o 12:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2016-01-14T19:56:53+01:00</updated>
<published>2016-01-14T19:56:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150624#p150624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150624#p150624"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150624#p150624"><![CDATA[
jakby była zmienna++ to nigdy by się warunek nie wykonał<br />[syntax=c]if( !key_lock &amp;&amp; !(PINC &amp; KEY1 ) ) key_lock=1;<br />  else if( key_lock &amp;&amp; (PINC &amp; KEY1 ) ) {<br />   if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }<br />  }[/syntax]<br />powiedzmy że key_lock jest 255, wtedy warunek else if( key_lock &amp;&amp; (PINC &amp; KEY1 ) ) jest spełniony, i <br />warunek poniżej zostanie wykonany, bo najpierw key_lock zostanie zwiększony co da nam key_lock=0.<br />[syntax=c]if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 14 sty 2016, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-14T10:25:53+01:00</updated>
<published>2016-01-14T10:25:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150557#p150557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150557#p150557"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150557#p150557"><![CDATA[
A czemu p. Mirek użył ++zmienna a nie zmienna++ ? Przecież to tylko różnica w jednym obiegu? Czy to ma AŻ takie znaczenie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 14 sty 2016, o 10:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2016-01-13T09:44:37+01:00</updated>
<published>2016-01-13T09:44:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150434#p150434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150434#p150434"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150434#p150434"><![CDATA[
Wszystko tak jak kolega aaadamw napisał.<br />key_lock w mgnieniu oka się przekręci - dojdzie do 255 i kolejną wartością będzie 0, wtedy warunek się wykona.<br />To jest coś na podobieństwo opóźnienia ( np. _delay_ms() ) dla wyeliminowania drgań styków, tyle że nie blokuje procesora na czas czekania, robi inne rzeczy a za każdym obiegiem inkrementuje tą zmienną.<br />Jak trwa to za długo, to do zmiennej możesz wstępnie zamiast 0 wpisać np. 100. A jeśli za krótko, to zamiast zmiennej uint8_t wykorzystaj uint16_t - będzie się przekręcał 256 razy dłużej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 13 sty 2016, o 09:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2016-01-13T08:50:32+01:00</updated>
<published>2016-01-13T08:50:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150432#p150432</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150432#p150432"/>
<title type="html"><![CDATA[Re: Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150432#p150432"><![CDATA[
Zapali się jak key_lock się zawinie o będzie 0 - czyli po 254 obrotach pętli while. Tu zapewne chodzi o takie proste ignorowanie drgań styków przycisku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 13 sty 2016, o 08:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-12T21:47:50+01:00</updated>
<published>2016-01-12T21:47:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150386#p150386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150386#p150386"/>
<title type="html"><![CDATA[Działanie na released button]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14167&amp;p=150386#p150386"><![CDATA[
Kod z blogu p. Mirosława:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2012-10-05<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /> <br />#define LED (1&lt;&lt;PC5)<br />#define KEY1 (1&lt;&lt;PC7)<br /> <br />uint8_t key_lock;<br /> <br />//**************** ZWOLNIENIE PRZYCISKU - push_up<br /> <br />int main(void) {<br /> <br /> PORTC |= KEY1;  // podciągamy linie klawiszy do VCC<br /> DDRC |= LED;   // pin LED jako WYjście<br /> <br /> _delay_ms(10);<br /> <br /> while(1) {<br /> <br />  if( !key_lock &amp;&amp; !(PINC &amp; KEY1 ) ) key_lock=1;<br />  else if( key_lock &amp;&amp; (PINC &amp; KEY1 ) ) {<br />   if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }<br />  }<br /> <br /> }<br /> <br />}[/syntax]<br /><br />Jeśli klawisz nie wciśnięty a key_lock = 0 to ustaw key_lock = 1<br />jeśli klawisz puszczony a key_lock różna od zera (będzie różna bo ma 1) to wykonaj kod:<br />[syntax=c]if( !++key_lock ) {<br /> <br />    // reakcja na PUSH_UP (zwolnienie przycisku)<br />    PORTC ^= LED;<br />   }[/syntax]<br />Aby wykonać if warunek musi być spełniony a jak on może być spełniony jak 1 po preinkrementacji wynosi 2. Negujemy logicznie 2 czyli !2 to mamy false. Czyli dioda się nie zapali.<br />Co  rozumiem błędnie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 12 sty 2016, o 21:47</p><hr />
]]></content>
</entry>
</feed>