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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-11T21:01:28+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11983&amp;mode</id>
<entry>
<author><name><![CDATA[piotreks-89]]></name></author>
<updated>2015-06-11T21:01:28+01:00</updated>
<published>2015-06-11T21:01:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131535#p131535</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131535#p131535"/>
<title type="html"><![CDATA[Re: Uniwersalna funkcja z &quot;Obsługa klawiszy - drgania styków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131535#p131535"><![CDATA[
Te błędy, które kolega wytknął wkradły się do podanego przeze mnie kodu tylko dlatego, że kombinowałem z różnymi opcjami i zapomniałem zmienić ich przed wysłaniem na forum do wersji, którą zaproponował Mirek. <br /><br />W każdym razie - problem rozwiązany <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Kompilator wypluwał już wcześniej warning, że brakuje możliwości zwracania 0 przez funkcję. Po zmianie tych drobnych błędów i dopisaniu na końcu tego &quot;return 0;&quot;, które wcześniej zamulało program, teraz podziałało <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Działający kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LED1 (1&lt;&lt;PB4)<br />#define S1 (1&lt;&lt;PB3)<br /><br />#define LED_ON(LED) (PORTB &amp;= ~(LED)) <br />#define LED_OFF(LED) (PORTB |= (LED))<br />#define LED_TOGGLE(LED) (PORTB ^=(LED))<br /><br />uint8_t key_lock=1;<br /><br />uint8_t debounce(uint8_t port, uint8_t pin);<br /><br />int main(void)<br />{<br />DDRB |= LED1;<br />DDRB &amp;= ~(S1);<br /><br />PORTB |= (LED1 | S1);<br /><br />while(1)<br />{<br />if ( debounce(PINB,S1) ) LED_TOGGLE(LED1);<br />}<br />}<br /><br />uint8_t debounce(uint8_t port, uint8_t pin)<br />{<br />if( !key_lock &amp;&amp; !(port &amp; pin) ) <br />{<br />key_lock=1;<br />return 1;<br />}<br />else if( key_lock &amp;&amp; (port &amp; pin) ) <br />{<br />key_lock++;<br />}<br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=491">piotreks-89</a> — 11 cze 2015, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-06-11T19:22:20+01:00</updated>
<published>2015-06-11T19:22:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131527#p131527</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131527#p131527"/>
<title type="html"><![CDATA[Re: Uniwersalna funkcja z &quot;Obsługa klawiszy - drgania styków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131527#p131527"><![CDATA[
Może dlatego, że masz:<br />[syntax=c]else if( key_lock &amp;&amp; !(port &amp; pin) )[/syntax]<br /><br />a powinno być:<br />[syntax=c]else if( key_lock &amp;&amp; (port &amp; pin) )[/syntax]<br /><br />Oprócz tego masz:<br />[syntax=c]uint16_t key_lock=1;[/syntax]<br />a nie uint8_t?<br /><br />Oprócz tego zainteresuj się obsługą klawiszy z trzeciej części tego poradnika:<br />[syntax=c]http://mirekk36.blogspot.co.uk/2012/10/obsuga-klawiszy-zwoka-czasowa-cd3.html[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 11 cze 2015, o 19:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotreks-89]]></name></author>
<updated>2015-06-11T17:08:12+01:00</updated>
<published>2015-06-11T17:08:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131504#p131504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131504#p131504"/>
<title type="html"><![CDATA[Uniwersalna funkcja z &quot;Obsługa klawiszy - drgania styków 2&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11983&amp;p=131504#p131504"><![CDATA[
Witam!<br /><br />Piszę sobie w wolnej chwili takie uniwersalne funkcje do kolekcji. Doszedłem do obsługi przycisków i ugrzęzłem. Dawno temu (bo to już prawie 3 lata), podpatrzyłem fajny patent Mirka z bloga, z artykułu &quot;Obsługa klawiszy - drgania styków CD...2&quot;. Korzystałem z pierwszego listingu, ale nie jako funkcji tylko zwykłych warunków w pętli nieskończonej. W każdym razie - po przerobieniu listingu na funkcję przestał on działać, jak powinien. Dioda praktycznie nie reaguje (po wciśnięciu trochę mocniej świeci). <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LED1 (1&lt;&lt;PB4)<br />#define S1 (1&lt;&lt;PB3)<br /><br />#define LED_ON(LED) (PORTB &amp;= ~(LED)) <br />#define LED_OFF(LED) (PORTB |= (LED))<br />#define LED_TOGGLE(LED) (PORTB ^=(LED))<br /><br />uint16_t key_lock=1;<br /><br />uint8_t debounce(uint8_t port, uint8_t pin);<br /><br />int main(void)<br />{<br />DDRB |= LED1;<br />DDRB &amp;= ~(S1);<br /><br />PORTB |= (LED1 | S1);<br /><br />while(1)<br />{<br />if ( debounce(PINB,S1) ) LED_TOGGLE(LED1);<br />}<br />}<br /><br />uint8_t debounce(uint8_t port, uint8_t pin)<br />{<br />if( !key_lock &amp;&amp; !(port &amp; pin) ) <br />{<br />key_lock=1;<br />return 1;<br />}<br />else if( key_lock &amp;&amp; !(port &amp; pin) ) <br />{<br />key_lock++;<br />}<br />}[/syntax]<br /><br />Zmiana nastąpiła, gdy na koniec funkcji debounce() dodałem &quot;return 0;&quot;, ale reakcja stała się mułowata i nie zawsze funkcja działała. Jak myślicie, w czym tkwi błąd? <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=491">piotreks-89</a> — 11 cze 2015, o 17:08</p><hr />
]]></content>
</entry>
</feed>