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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-15T09:22:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=13220&amp;mode</id>
<entry>
<author><name><![CDATA[olitroniks]]></name></author>
<updated>2015-10-15T09:22:31+01:00</updated>
<published>2015-10-15T09:22:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142486#p142486</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142486#p142486"/>
<title type="html"><![CDATA[Re: Prosty licznik problem z klawiszem i inkrementacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142486#p142486"><![CDATA[
Witam powiem tak prostota zagadnienia wcisnęła mnie w fotel a ja 2 dni rwałem włosy z głowy jeszcze z trochę i do fryzjera nie trzeba było by iść:) Dziękuję za błyskawiczną pomoc ale to pewnie nie koniec dla mnie pozostaje jeszcze tylko klawisz który wyłączy zliczanie i ponownie włączy dzięki serdeczne <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=11257">olitroniks</a> — 15 paź 2015, o 09:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[michal98]]></name></author>
<updated>2015-10-14T20:01:29+01:00</updated>
<published>2015-10-14T20:01:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142437#p142437</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142437#p142437"/>
<title type="html"><![CDATA[Re: Prosty licznik problem z klawiszem i inkrementacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142437#p142437"><![CDATA[
Może moja odpowiedź  nie będzie zbyt dydaktyczna profesjonalna, ale i tak odpowiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pseudo kod do obsługi przycisku :<br /><br />-sprawdź czy wciśnięty <br />-krótka przerwa (drgania styków )<br />-czy nadal wciśnięty <br />-inkrementacja zmiennej<br />-czekaj aż przycisk nie będzie wciśniety  coś w stylu : <br />------------while(sigin) _delay_ms (1);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4341">michal98</a> — 14 paź 2015, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-10-14T12:24:02+01:00</updated>
<published>2015-10-14T12:24:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142390#p142390</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142390#p142390"/>
<title type="html"><![CDATA[Re: Prosty licznik problem z klawiszem i inkrementacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142390#p142390"><![CDATA[
Polecam jako uzupełnienie BB poczytać tą serię poradników, a szczególnie ten:<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><br />Myślę, żę po przeczytaniu wiele powinno Ci się wyjaśnić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 14 paź 2015, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[olitroniks]]></name></author>
<updated>2015-10-14T12:11:56+01:00</updated>
<published>2015-10-14T12:11:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142389#p142389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142389#p142389"/>
<title type="html"><![CDATA[Prosty licznik problem z klawiszem i inkrementacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13220&amp;p=142389#p142389"><![CDATA[
Witam wszystkich to mój pierwszy post na forum dlatego wszystkich na wstępie serdecznie pozdrawiam. Niedawno dorwałem zestaw oraz BB i w końcu po latach zwlekania próbuję coś tam programować mam mały kłopot z moim pierwszym w życiu prostym programem jest to licznik zrobiony na przykładach z książki mam dwa dwu cyfrowe liczniki na 7segment do PD0 mam podlaczony klawisz w przyszłości ma być tam podłączony czujnik pojemnościowy kłopot w ty ze nie wiem jak zwiększać wartość pierwszego countera ale tylko o +1 po naciśnięciu tego klawisza chodzi mi o to ze jeżeli nacisnę i ciągle będę trzymał ten klawisz nie chce zęby ta wartość się zwiększała ciągle ++ bo jak później podłącze pojemnościowy czujnik i gdy on będzie widział obiekt przez pewien okres czasu ma doliczyć tylko wartosc jeden następnie gdy nie ma obiektu i gdy znowu się pojawi kolejny obiekt to znów ma zwiększyć o 1 . Trochę zakręciłem ale wstawie kod proszę o jakieś wskazówki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/delay.h&gt;<br />#include &quot;my_led.h&quot;<br /><br />//Klawisze<br />#define KEY_1 (1&lt;&lt;PC4)<br />#define KEY_2 (1&lt;&lt;PC5)<br />#define KEY_3 (1&lt;&lt;PC6)<br />#define KEY_DN !(PINC &amp; KEY_1)<br />#define KEY_UP !(PINC &amp; KEY_2)<br />#define KEY_ST !(PINC &amp; KEY_3)<br />//Sygnał zliczajacy<br />#define IN_PIN (1&lt;&lt;PD0)<br />#define IN_SIG !(PIND &amp; IN_PIN)<br />//sygnal dzwiekowy<br />#define SIG_PIN (1&lt;&lt;PC7)<br />#define SIG_TOG PORTC^= SIG_PIN<br /><br />uint8_t sygnal(void)<br />    {<br />    if( IN_SIG )// klawisz wciśnięty ?<br />    {<br />    _delay_ms(80);// czas drgań styków<br />    if( IN_SIG ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br /><br />    }<br /><br />    return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />    }<br /><br /><br /><br />//********************************************************************<br /><br />int main (void)<br /><br />{<br />//*******************inicjalizacja************************************<br /><br />my_led_init(); // inicjalizacja wyswietlacza multipleksowanego<br /><br />//testowa inicjalizacja zmiennych i liczb wyswietlanych na starcie<br />         cy1=MINUS;<br />         cy2=MINUS;<br /> cy3=MINUS;<br />         cy4=MINUS;<br />//*********************inicjalizacja klawiszy**************************<br />    DDRC &amp;= ~KEY_1;<br />    DDRC &amp;= ~KEY_2;<br />    DDRC &amp;= ~KEY_3;<br />    DDRD &amp;= ~IN_PIN;<br />    //podciaganie do vcc<br />    PORTC |= KEY_1;<br />    PORTC |= KEY_2;<br />    PORTC |= KEY_3;<br />    PORTD |= IN_PIN;<br />    //inicjalizacja sygnalu dzwiekowego<br />    DDRC |= SIG_PIN;<br />    PORTC &amp;= ~SIG_PIN;<br /><br />sei();   //wlaczenie globalnego zezwolenia na przerwania<br /><br />//**********************petla glowna programu*********************<br />    int8_t licznik=00;<br />    uint8_t d1=0,d2,d3,d4;<br />    uint8_t licznik2 = 00;<br /><br /><br /><br /><br />    _delay_ms(2000);<br />while (1)<br />{<br /><br />                    if (KEY_UP)<br />    licznik++;<br />                    if (KEY_DN)<br />                    licznik--;<br /><br />                    if (sygnal())<br />                    licznik2++;<br /><br /><br /><br /><br /><br />//pierwszy counter<br />                                d1=(licznik2)/10;<br />                                if(d1) cy1=d1; else cy1=(licznik2&gt;99)?0:0;<br />            d2=(licznik2-(d1*10));<br />            cy2=d2;<br />//drugi counter<br />            d3=(licznik)/10;<br />            if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:0;<br />            d4=(licznik-(d3*10));<br />            cy4=d4;<br /><br /><br /><br />_delay_ms(150);<br />if(licznik&gt;99) licznik=00;<br />if(licznik&lt;00) licznik=99;<br /><br />if(licznik2&gt;99) licznik2=00;<br />                                        if (licznik&lt;licznik2)  licznik2=00;<br /><br /><br /><br /><br />}<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11257">olitroniks</a> — 14 paź 2015, o 12:11</p><hr />
]]></content>
</entry>
</feed>