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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-09T14:59:50+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9352&amp;mode</id>
<entry>
<author><name><![CDATA[MikieMan]]></name></author>
<updated>2014-12-09T14:59:50+01:00</updated>
<published>2014-12-09T14:59:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107932#p107932</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107932#p107932"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107932#p107932"><![CDATA[
No mnie na pierwszy rzut oka to odrzuca pierwsza linijka  <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /> <br />Częstotliwość pracy mikrokontrolera ustawia się we właściwościach projektu, a nie w main.<br /><br />Dla początkującego to jak Amen w pacierzu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3503">MikieMan</a> — 9 gru 2014, o 14:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[joker1309]]></name></author>
<updated>2014-12-09T11:45:45+01:00</updated>
<published>2014-12-09T11:45:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107912#p107912</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107912#p107912"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=107912#p107912"><![CDATA[
&quot;troszeczkę&quot; odkopie swój temat. Nie miałem czasu za bardzo zająć się tym, dlatego cały czas stoję w miejscu. Znalazłem dużo programów ale wszystkie na atmega8, a ja używam atmega 328 który ma inne timery/przerwania. Chciałbym napisać taki program ale nie wiem jak dokładnie :<br />program jest narazie tytlko do obslugi drgań styków<br /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000"><em>#define F_CPU 1000000UL </em>    // &lt;---- <strong>TEGO NIGDY nie dajemy w kodzie programu</strong></span><br /></div><br /><span style="color: #FF0000">Normalnie ostatnio jakaś masakra z tym <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .... plaga wręcz - ale nie ma co się dziwić skoro na innych forach i blogach wszędzie się początkującym wkłada to łopatą do głowy. To jednak pomimo to proszę panie autor TEGO nigdy nie robić a przynajmniej na tym forum - mirekk36</span><br />  <br />[syntax=c]#include &lt;avr/io.h&gt;  // biblioteka do obslugi we/wy<br />#include &lt;avr/interrupt.h&gt;  // biblioteka do obslugi przewań<br /><br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PB1)<br />#define KLAWISZ_1 (1&lt;&lt;PD6)<br />#define KLAWISZ_2 (1&lt;&lt;PD7)<br />  <br />volatile uint8_t stan_przycisku1;  //zmienna zawierajaca informacje o stanie przycisku 1<br />volatile uint8_t stan_przycisku2; /zmienna zawierajaca informacje o stanie przycisku 2<br />volatile uint8_t czas_minal; // zmienna informujaca ze timer odliczyl 20ms<br />  <br /><br />  <br />void UstawienieTimera0 (void)  //konfiguracja timera0  <br />{  <br />// jak go ustawić żeby odliczał 20ms na taktowaniu 1MHz ?<br />}  <br /><br />void Timer (void)<br />{<br />// po odliczeniu czasu<br />czas_mina=1;<br />}<br />  <br />  <br />ISR() // przewanie ma się włączyć TYLKO po zmianie stanu przycisku 1 lub 2<br />{  <br />unit8_t zmienna_pomocnicza_przycisku_1;<br />unit8_t zmienna_pomocnicza_przycisku_2;<br /><br />if(!zmienna_pomocnicza_przycisku_1 &amp;&amp; !(PIND &amp; KLAWISZ_1)){<br />czekaj 20ms (przy wykorzystaniu timera0)<br />if (!zmienna_pomocnicza_przycisku_1 &amp;&amp; !(PIND &amp; KLAWISZ_1)){<br />volatile uint8_t stan_przycisku_1=1<br />}<br />}<br />else if (zmienna_pomocnicza_przycisku_1 &amp;&amp; (PIND &amp; KLAWISZ_1)){<br />czekaj 20ms (przy wykorzystaniu timera0)<br />if (zmienna_pomocnicza_przycisku_1 &amp;&amp; (PIND &amp; KLAWISZ_1)){<br />volatile uint8_t stan_przycisku_1=1<br />}<br />}<br /><br />if(!zmienna_pomocnicza_przycisku_2 &amp;&amp; !(PIND &amp; KLAWISZ_2)){<br />czekaj 20ms (przy wykorzystaniu timera0)<br />if (!zmienna_pomocnicza_przycisku_2 &amp;&amp; !(PIND &amp; KLAWISZ_2)){<br />volatile uint8_t stan_przycisku_1=1<br />}<br />}<br />else if (zmienna_pomocnicza_przycisku_2 &amp;&amp; (PIND &amp; KLAWISZ_2)){<br />czekaj 20ms (przy wykorzystaniu timera0)<br />if (zmienna_pomocnicza_przycisku_2 &amp;&amp; (PIND &amp; KLAWISZ_2)){<br />volatile uint8_t stan_przycisku_2=1<br />}<br />}<br /><br />}<br />  <br />  <br />int main(void)   <br />{  <br />  sei();     //wlaczenie obslugi przerwan  <br />  UstawienieTimera0();  //konfiguracja timera<br />  while(1) {    //petla glowna programu  <br />    <br />    //kod programu korzystajacy ze zmiennej -&gt; stan przyciskow  <br />   //po odczytaniu klawisza zimenna czas_minal=0<br />    <br />  }  <br />}[/syntax]<br /><br />takie coś wymyśliłem, nie wiem czy ma to prawo działać ale nie chce kopiować gotowych programów bo nie wiem jak one działają i są w nich często jakies dziwne zmienne dla początkującego, a to co jest tutaj jest dla mnie proste tylko nie wiem czy da się tak zrobić : ). Jak kod nie jest jasny mogę wytłumaczyć o co mi chodziło. Prosiłbym o pomoc z timerem i przerwaniem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6804">joker1309</a> — 9 gru 2014, o 11:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-11-20T22:27:13+01:00</updated>
<published>2014-11-20T22:27:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105218#p105218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105218#p105218"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105218#p105218"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Strasznie zakręcony ten link który podałeś, jak napisałem jestem mega początkującym. Chyba że przytrzymanie przycisku to nie jest łatwa sprawa : d.<br /></div><br /><br />W rzeczy samym na początek nauki jest to troszkę ciężkie do skumania ale wcześniej czy później i tak będziesz musiał się z tym zmierzyć.<br />Więc lepiej wcześniej i pójdziesz właściwą drogą programowania  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />ps. zacznij może od części 1<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html" >http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html</a><!-- m --><br /><br />i części 2<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html" >http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html</a><!-- m --><br /><br />żeby mieć cały pogląd na zagadnienie ujęte w części 3<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 20 lis 2014, o 22:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[joker1309]]></name></author>
<updated>2014-11-20T22:11:19+01:00</updated>
<published>2014-11-20T22:11:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105212#p105212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105212#p105212"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105212#p105212"><![CDATA[
Strasznie zakręcony ten link który podałeś, jak napisałem jestem mega początkującym. Chyba że przytrzymanie przycisku to nie jest łatwa sprawa : d.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6804">joker1309</a> — 20 lis 2014, o 22:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2014-11-20T21:27:51+01:00</updated>
<published>2014-11-20T21:27:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105195#p105195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105195#p105195"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105195#p105195"><![CDATA[
A ja przypominam o tym temacie <a href="http://forum.atnel.pl/topic7402.html"  class="postlink">http://forum.atnel.pl/topic7402.html</a>, bo jeden z zielonych lub pinkowy może usunąć temat.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 20 lis 2014, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2014-11-20T21:17:02+01:00</updated>
<published>2014-11-20T21:17:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105191#p105191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105191#p105191"/>
<title type="html"><![CDATA[Re: Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105191#p105191"><![CDATA[
Zajrzyj tutaj <br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-zwoka-czasowa-cd3.html" >http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html</a><!-- m --><br />To jest to czego szukasz <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=930">kurnachatka</a> — 20 lis 2014, o 21:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[joker1309]]></name></author>
<updated>2014-11-20T21:36:10+01:00</updated>
<published>2014-11-20T21:10:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105188#p105188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105188#p105188"/>
<title type="html"><![CDATA[Przytrzymanie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9352&amp;p=105188#p105188"><![CDATA[
Witam,<br />jestem mega początkującym (AVR mam od wczoraj : D). Chcę zrobić program który obsługuje jeden przycisk i dwie diody i działa tak :<br />- przycisk nie wduszony : świeci się LED2.<br />- przycisk wduszony : świeci się LED1<br />-przycisk wduszony dłużej niż 1 sek : świeci się LED 1 i LED2.<br /><br />program jaki zrobiłem działa tak jak powinien, ale zastanawiam się nad jego &quot;forma&quot;.Zrobiłem to tak troche &quot;na chłopski rozum&quot; bez timerów/przerwań itp. i chciałbym wiedzieć jak to się robi &quot;normalnie&quot;. Program:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PB1)<br />#define KLAWISZ (1&lt;&lt;PD7)<br />uint8_t KLAWISZ_WCISNIETY;<br />uint16_t CZAS;<br /><br />int main(void) {<br /><br />    DDRB  |= LED1 | LED2;<br />    PORTB |= LED2;<br /><br />    DDRD  &amp;=~ KLAWISZ;<br />    PORTD |=  KLAWISZ;<br />    KLAWISZ_WCISNIETY = 0;<br /><br />   while (1) //Pętla główna<br />   {<br />      if(!KLAWISZ_WCISNIETY &amp;&amp; !(PIND &amp; KLAWISZ)){<br />      KLAWISZ_WCISNIETY = 1;<br />      PORTB |=LED1;<br />      PORTB &amp;=~LED2;<br />      for(CZAS=0;!(PIND &amp; KLAWISZ) &amp;&amp; CZAS &lt; 250;CZAS++){<br />      _delay_ms(4);<br />      }<br />     if(CZAS==250){<br />      PORTB |=LED1;<br />      PORTB |=LED2;<br /><br />      }<br />      }<br />      else if(KLAWISZ_WCISNIETY &amp;&amp; (PIND &amp; KLAWISZ)){<br />      KLAWISZ_WCISNIETY = 0;<br />      PORTB |=LED2;<br />      PORTB &amp;=~LED1;<br />        }<br />        }<br /><br />}[/syntax]<br />Z góry dzięki za pomoc : ).<br /><br />edit: wykorzystałem pętle for żeby odliczała 4ms a nie od razu 1 sek bo jak puszczę klawisz i będzie &quot;_delay_ms(1000)&quot; to i tak poczeka sekundę, a w takiej formie jak jest teraz jak puszcze to w najgorszej opcji poczeka 4ms, niezauważalne : P<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6804">joker1309</a> — 20 lis 2014, o 21:10</p><hr />
]]></content>
</entry>
</feed>