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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-10-01T22:24:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1596&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-10-01T22:24:36+01:00</updated>
<published>2012-10-01T22:24:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16307#p16307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16307#p16307"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16307#p16307"><![CDATA[
Sam siebie poprawię  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . W języku C tak powinno być:<br />[syntax=c]enum stany_klawisza {IDLE, SHORT, LONG, REPEAT};<br />enum stany_klawisza minusStatus = IDLE;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 1 paź 2012, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-10-01T21:27:45+01:00</updated>
<published>2012-10-01T21:27:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16303#p16303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16303#p16303"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16303#p16303"><![CDATA[
Mam nadzieję, że <strong>minusStatus</strong> to zmienna globalna, bo w innym przypadku to tam może być cokolwiek.<br />[syntax=c] enum {IDLE, SHORT, LONG, REPEAT};  //Możliwe stany klawisza[/syntax]Powyższy zapis  to nie wiem co to właściwie jest. Może za mało wiem  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br />Ja bym zrobił tak:<br />[syntax=c]enum {IDLE, SHORT, LONG, REPEAT} minusStatus;<br />//albo nawet tak jak to zmienna lokalna<br />enum {IDLE, SHORT, LONG, REPEAT} minusStatus = IDLE;<br />//albo tak<br />enum stany_klawisza {IDLE, SHORT, LONG, REPEAT};<br />stany_klawisza minusStatus = IDLE;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 1 paź 2012, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-10-01T14:16:03+01:00</updated>
<published>2012-10-01T14:16:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16282#p16282</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16282#p16282"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16282#p16282"><![CDATA[
Możesz pokazać jak używasz tej funkcji w programie, bo nie wiem po co keyStatus jest argumentem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 1 paź 2012, o 14:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-10-01T12:35:24+01:00</updated>
<published>2012-10-01T12:35:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16279#p16279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16279#p16279"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16279#p16279"><![CDATA[
Na podstawie Mirkowej funkcji SuperDebounce wydaje mi się że musisz jeszcze dodać jedną zmienną która określa z którego PINU będziesz korzystać czy to jest PIND czy PINC etc. Bo narazie w twojej funkcji masz zadeklarowane zmienne odpowiadające za status i za   numer pinu. <br /><br />Jeśli masz niebieską książkę to rzuć okiem na to jakie zmienne są zadeklarowane w funkcji Mirka SuperDebounce.. <br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 1 paź 2012, o 12:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-30T19:45:59+01:00</updated>
<published>2012-09-30T19:45:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16265#p16265</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16265#p16265"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16265#p16265"><![CDATA[
O! i taka droga mi się podoba <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... nie jestem w stanie na razie dłużej posiedzieć przy kodzie ale może ktoś inny coś zauważy - a warto analizować takie kody panowie - bo to pokazuje właściwą drogę. Jak widać wcale nie trzeba koniecznie korzystać z SuperDebounce() ale tworzyć własne rozwiązania <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... a tu proszę z timerami programowymi<br /><br />Tylko że no tak na szybko patrząc to przydałby się jeszcze jeden parametr określający port bo teraz funkcja jest na sztywno związana z PIND ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 wrz 2012, o 19:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-28T11:34:32+01:00</updated>
<published>2012-09-28T11:34:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16095#p16095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16095#p16095"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=16095#p16095"><![CDATA[
No widzisz - wszystko sprowadza się ZAWSZE do jednego. Tzn ludzie szukają &quot;świętego grala&quot; z tą obsługą pojedynczych klawiszy, bo to takie przecież proste, że aż nikomu nie chce się pochylić nad tym aby rozrysować sobie algorytm i opisać jak wygląda czy jak powinna wyglądać taka obsługa. Rzadko kto próbuje to przeanalizować tak jak ja to rozpisałem w pierwszej (niebieskiej) książce. Czyli nikomu nie chce się często pomyśleć nad tym żeby programowo rozróżnić takie stany jak: PRESS, PUSH oraz AutoREPEAT, a szkoda.<br /><br />rzuć proszę okiem na ten post:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post16079.html#p16079" >post16079.html#p16079</a><!-- l --><br /><br />A potem jeszcze raz sprawdź sobie SuperDebounce() i nie po to żeby zaraz na siłę z tego korzystać - tylko żeby spróbować zrozumieć jak podejść do pisania takich procedur. <br /><br />Podpowiem że realizacja właśnie takiego efektu, że np:<br /><br />mamy regulację głośności w TV. Pojawia się na dole często długi pasek postępu i gdy klikamy pojedynczo na pilocie klawisz &quot;głośniej&quot; to pasek skacze o bardzo małe wartości, próba w ten sposób zrobienia głośności na maxa trwałaby wieki. Tymczasem zwykle fajnie to działa że gdy trzymamy klawisz przyciśnięty dłużej to ...... co ?? to pasek zaczyna tym szybciej rosnąć im dłużej go trzymamy - prawda ? I o taki efekt pewnie ci chodzi. Dla mnie np to JEDNA Z PODSTAWOWYCH możliwści i opcji obsługi klawiszy, a związana jest z opcją AutoREPEAT .... i właśnie dzięki niej w SuperDebounce() bez mrugnięcia okiem takie coś zrealizować można a do tego jak widać:<br /><br />1. zupełnie nieblokująco<br />2. bez żadnych _delay'ów<br /><br />spójrz też na zmienną key_time w moich funkcjach obsługi RC5 (piloty) .... toż ta samo-inkrementująca się zmienna właśnie do tego mi służy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Oczywiście nie tylko do tego - ma jeszcze 100 innych zastosowań <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... ale piszę ci to wszystko żebyś zobaczył - że jak człowiek RAZ usiądzie i wymyśli sobie porządną obsługę klawisza to później przydaje się ona w praktycznie niezmienionej postaci dzięki callbackom w KAŻDEJ sytuacji i dowolnym programie.<br /><br />Dlatego zachęcam do napisania sobie takiej uniwersalnej obsługi, niż za każdym razem walczyć w kodzie o realizację jakiegoś tam celu .... bo to - dopiero zajmuje czas a o pamięci FLASH już nie wspomnę (to tak a'porpos innego tematu)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 wrz 2012, o 11:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-26T19:52:43+01:00</updated>
<published>2012-09-26T19:52:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15994#p15994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15994#p15994"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15994#p15994"><![CDATA[
Można też i tak:<br /><br /><br />[syntax=c]if( (switchState = SwitchIsPressed(PD0)) )<br />{<br />   if( 1 == switchState ) {<br />      // jeśli wciśnięto krótko<br />   } else {<br />      // jeśli wciśnięto długo<br />   }<br />} else {<br />  // jeśli nie wciśnięto<br />}[/syntax]<br /><br />albo tak:<br /><br />[syntax=c]switch( SwitchIsPressed(PD0) ) {<br />   case 1: // jeśli krótko<br />   case 2: // jeśli długo<br />   case 0: // jeśli w ogóle<br />}[/syntax]<br /><br />i pewnie jeszcze na tysiąc różnych podobnych sposobów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 wrz 2012, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-09-26T19:34:33+01:00</updated>
<published>2012-09-26T19:34:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15991#p15991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15991#p15991"/>
<title type="html"><![CDATA[Re: Funkcja obsługi switchy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1596&amp;p=15991#p15991"><![CDATA[
Możesz tak:<br />[syntax=c]uint8_t switchState;<br />//...<br />switchState = SwitchIsPressed(PD0);<br />if( switchState &gt; 0)<br />{<br />   //...<br />}[/syntax]<br />ale Twoja funkcja &quot;pisana na szybko&quot; oczywiście wymaga poprawek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 wrz 2012, o 19:34</p><hr />
]]></content>
</entry>
</feed>