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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-22T10:57:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=15181&amp;mode</id>
<entry>
<author><name><![CDATA[stagem50]]></name></author>
<updated>2016-04-22T10:57:02+01:00</updated>
<published>2016-04-22T10:57:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=159009#p159009</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=159009#p159009"/>
<title type="html"><![CDATA[Re: Obsługa klawisza-problem z przełączeniem funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=159009#p159009"><![CDATA[
Witam.<br />Przeszukaj poradniki Mirka. W jednym z nich jest rozwiązany ten problem. Mianowicie w delay jest zdefiniowany bardzo krotki czas który działa w pętli i w tej pętli jest funkcja sprawdzająca czy jest wciśnięty jakiś przycisk który przerywa pętle i z niej wychodzi przerywając NATYCHMIAST deleya. Dokładnie jest to opisane w poradniku Mirka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1780">stagem50</a> — 22 kwi 2016, o 10:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-04-21T22:32:42+01:00</updated>
<published>2016-04-21T22:32:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158999#p158999</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158999#p158999"/>
<title type="html"><![CDATA[Re: Obsługa klawisza-problem z przełączeniem funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158999#p158999"><![CDATA[
<div class="quotetitle">Bartek123 napisał(a):</div><div class="quotecontent"><br />Powinieneś usunąć w jakiś sposób te delay'e.<br /></div><br />Poczytaj o timerach programowych.<br /><div class="quotetitle">Pablo Maximus napisał(a):</div><div class="quotecontent"><br />Widzę, że muszę doczytać jak te różne pętle krążą.<br /></div><br />Poczytaj o tablicach (możesz wykorzystać tablicę zamiast tych dwóch pętli for w funkcji miganko).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 21 kwi 2016, o 22:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pablo Maximus]]></name></author>
<updated>2016-04-21T20:06:06+01:00</updated>
<published>2016-04-21T20:06:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158994#p158994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158994#p158994"/>
<title type="html"><![CDATA[Re: Obsługa klawisza-problem z przełączeniem funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158994#p158994"><![CDATA[
Dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Widzę, że muszę doczytać jak te różne pętle krążą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10047">Pablo Maximus</a> — 21 kwi 2016, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2016-04-21T19:49:59+01:00</updated>
<published>2016-04-21T19:49:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158992#p158992</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158992#p158992"/>
<title type="html"><![CDATA[Re: Obsługa klawisza-problem z przełączeniem funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158992#p158992"><![CDATA[
Masz delay w funkcji miganko policz ile ona trwa 50ms x 16 = 800ms więc klawisz musisz trzymać przez około 800ms lub więcej. Powinieneś usunąć w jakiś sposób te delay'e. Po za tym przez zmienną a i drugi warunek obsługi klawisza pętla musi obiec 255 razy zanim zmieni się efekt co daje nam 800ms x 255 = 204 sekund więc musisz trzymać klawisz co najmniej przez 204 sekund aby zmienił się efekt. <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=10617">Bartek123</a> — 21 kwi 2016, o 19:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pablo Maximus]]></name></author>
<updated>2016-04-21T18:43:08+01:00</updated>
<published>2016-04-21T18:43:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158990#p158990</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158990#p158990"/>
<title type="html"><![CDATA[Obsługa klawisza-problem z przełączeniem funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15181&amp;p=158990#p158990"><![CDATA[
Napisałem procedurę do obsługi klawisza: <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define K1 (1&lt;&lt;PA7)<br />#define K2(1&lt;&lt;PA6)<br /><br />#define LED1 (1&lt;&lt;PD0)<br />#define LED2 (1&lt;&lt;PD1)<br />#define LED3 (1&lt;&lt;PD2)<br />#define LED4 (1&lt;&lt;PD3)<br />#define LED5 (1&lt;&lt;PD4)<br />#define LED6 (1&lt;&lt;PD5)<br />#define LED7 (1&lt;&lt;PD6)<br />#define LED8 (1&lt;&lt;PD7)<br /><br />void miganko(void);<br />uint8_t a, blok, efekt;<br /><br />int main(void) {<br /><br />DDRD |= (0xff); //port D jako wyjście<br />PORTD |= (0xff); //wygaszenie led<br />DDRA &amp;= ~(K1); //port A jako wejście<br />PORTA |= (K1); //podciągnięcie rezystora wewnętrznego do VCC<br />_delay_ms(50);<br /><br />while (1)<br />{<br /><br /><br />//-------------------------- obsługa klawisza ------------------------<br /><br />if ((!(PINA &amp; K1)) &amp;&amp; blok == 0) //sprawdzanie czy klawisz jest wciśnięty i czy funkcja została już wykonana<br />{<br />++a;<br />if ((!(PINA &amp; K1)) &amp;&amp; a == 0) // usunięcie efektu drgań styków<br />{<br />blok = 1; // zabezpieczenie przed ponownyn wykonaniem procedury obsługi klawisza w czasie gdy klawisz dalej jest przyciśnięty<br />efekt++;<br />}<br />}<br /><br />if ((PINA &amp; K1) &amp;&amp; blok == 1)  //sprawdzanie czy klawisz został puszczony<br />{<br />++a;<br />if (((PINA &amp; K1)) &amp;&amp; a == 0) // usunięcie efektu drgań styków<br />{<br />blok = 0;// odblokowanie wykonywania procedury obsługi klawisza przy jego wciśnięciu<br />}<br />}<br />//-------------------------- koniec obsługi klawisza ------------------------<br /><br /><br />if(efekt&gt;8)efekt=0;<br /><br />if(efekt==0) PORTD = (0xff);<br /><br />if(efekt==1) PORTD = ~(LED1);<br /><br />if(efekt==2) PORTD = ~(LED2);<br /><br />if(efekt==3) PORTD = ~(LED3);<br /><br />if(efekt==4) PORTD = ~(LED4);<br /><br />if(efekt==5) miganko();<br /><br />if(efekt==6) PORTD = ~(LED6);<br /><br />if(efekt==7) PORTD = ~(LED7);<br /><br />if(efekt==8) PORTD = ~(LED8);<br /><br />}<br /><br />}<br /><br />void miganko(void)<br />{<br />uint8_t i, temp=1;<br /><br />for(i=1; i&lt;8; i++)<br />{<br />PORTD =~(temp);<br />temp=temp*2;<br />_delay_ms(50);<br />}<br />for(i=1; i&lt;8; i++)<br />{<br />PORTD =~(temp);<br />temp=temp/2;<br />_delay_ms(50);<br />}<br />}[/syntax]<br />Po każdorazowym naciśnięciu klawisza dioda przeskakuje o jedno miejsce aż do momentu gdy wartość zmiennej &quot;efekt==5&quot; - w tym momencie uruchamia się funkcja &quot;miganko&quot;. Od tego momentu mam problem bo teoretycznie po naciśnięciu przycisku zmienna &quot;efekt&quot; powinna przyjąć wartość 6 i powinna zaświecić się dioda 6 ale tak się nie dzieje  <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> Cały czas działa funkcja &quot;miganko&quot; i wduszanie przycisku nic nie zmienia. Siedzę już nad tym kilka godzin i nie mogę wymyślić co jest źle <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10047">Pablo Maximus</a> — 21 kwi 2016, o 18:43</p><hr />
]]></content>
</entry>
</feed>