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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-28T19:24:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6175&amp;mode</id>
<entry>
<author><name><![CDATA[Rychu]]></name></author>
<updated>2014-02-28T19:24:21+01:00</updated>
<published>2014-02-28T19:24:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72470#p72470</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72470#p72470"/>
<title type="html"><![CDATA[Re: Poprawna obsługa przycisków + MAKRO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72470#p72470"><![CDATA[
Ponieważ niema takiego rejestru PIND0, tylko jest PIND - rejestr wejściowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3113">Rychu</a> — 28 lut 2014, o 19:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2014-02-28T18:18:39+01:00</updated>
<published>2014-02-28T18:18:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72454#p72454</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72454#p72454"/>
<title type="html"><![CDATA[Re: Poprawna obsługa przycisków + MAKRO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72454#p72454"><![CDATA[
Ok teraz już powoli rozumiem ,mój błąd ,przedobrzyłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Dziękuję za podpowiedź ,bo już powoli się zniechęcałem przyznam.<br /><br />Jeśli to nie problem to można jeszcze prosić o wyjaśnienie ,dlaczego nie działa linia<br />if(!(<span style="color: #BF0000">PIND0</span> &amp; key_S1_down)){<br /><br />,ale po poprawieniu na <br />if(!(<span style="color: #BF0040">PIND</span> &amp; key_S1_down)){<br /><br />działa ,znowu coś przedobrzam ? ,z diodą LED nie miałem tylu problemów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 28 lut 2014, o 18:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-02-28T14:01:28+01:00</updated>
<published>2014-02-28T14:01:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72419#p72419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72419#p72419"/>
<title type="html"><![CDATA[Re: Poprawna obsługa przycisków + MAKRO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72419#p72419"><![CDATA[
<div class="quotetitle">mac34 napisał(a):</div><div class="quotecontent"><br />Troszkę podpatrzałem z BB (str. 179) ,tu mam pytanie Mirek stosuje tam tylko jedną pętlę While(1)<br /></div><br /><br />No to tak jest - gdy się zatrzymujemy w czytaniu książki ... to co pokazuję w tym rozdziale to ABSOLUTNY i tylko dydaktyczny przykład - po to żeby ktoś, kto totalnie pierwszy raz styka się z takimi zagadnieniami - zobaczył w ogóle na czym polega obsługa przycisku - a nie - że jest to zalecana przeze mnie metoda w książce. Widzisz nie doczytałeś chociaż raz do końca książki i stąd takie błędne wnioski wyciągasz ...<br /><br />Tymczasem masz w książce w dalszych rozdziałach opisane to już tak jak się należy stosować - jakiś tam jeden z wielu oczywiście przykładów - funkcja SuperDebounce() .... pewnie nie zaglądałeś hmmm ? <br /><br />ale nawet jeśli tam nie zaglądałeś albo na obecną chwilę wydaje się to zbyt trudne to czemu nie zaglądasz na mojego bloga ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />zobacz pan tutaj <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 />jak może wyglądać super prosta ale KOMPLETNIE nie blokująca metoda obsługi klawiszy<br /><br />i idź dalej przynajmniej tą drogą - a nie zatrzymuj się na tej stronie książki i nie stosuj tysięcy nieskończonych pętli - będzie lepiej - zobaczysz <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=54">mirekk36</a> — 28 lut 2014, o 14:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arturf209]]></name></author>
<updated>2014-02-28T13:42:18+01:00</updated>
<published>2014-02-28T13:42:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72416#p72416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72416#p72416"/>
<title type="html"><![CDATA[Re: Poprawna obsługa przycisków + MAKRO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72416#p72416"><![CDATA[
Przecież sam sobie blokujesz program w ten sposób, dioda pewnie nie miga? Zobacz, procesor wchodzi w jedną pętlę, gdzie jest sprawdzenie warunku a następnie wchodzi w kolejną, nieskończoną, to nie może się udać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=801">arturf209</a> — 28 lut 2014, o 13:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2014-02-27T20:47:44+01:00</updated>
<published>2014-02-27T20:47:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72327#p72327</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72327#p72327"/>
<title type="html"><![CDATA[Poprawna obsługa przycisków + MAKRO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6175&amp;p=72327#p72327"><![CDATA[
Witam chciałbym zapytać o poprawną obsługę przycisków oraz definicje makr.<br />Troszkę podpatrzałem z BB (str. 179) ,tu mam pytanie Mirek stosuje tam tylko jedną pętlę While(1) ,która <br />spełniona jest tylko po naciśnięciu przycisku.<br />Czy nie lepiej było dać jedną nieskończoną pętlę While(1) ,a w niej drugą ,która normalnie jest pomijana gdy nie naciskamy<br />przycisku. Nie wiem pytam ,bo dopiero sie uczę. Bez nieskończonej pętli ,pozostawiamy przecież procek samemu sobie ,też gdzieś była wzmianka w BB.<br /><br />Mój kod poniżej:<br />[syntax=c]//Attiny2313 ,kwarc 8MHz ,miganie z TimeaO ,przyciski startuja i zatrzymuja timer 0<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define LED (1&lt;&lt;PB0)                           //dioda do portu PB0<br />#define toogle_LED PORTB ^=LED<br />#define key_S1_down (1&lt;&lt;PD0)                   //przycisk S1 wylacza timer ,port PD0<br />#define key_S2_down (1&lt;&lt;PD1)                   //przycisk S2 zalacza timer ,port PD1<br /><br />volatile uint8_t sekunda;                                  //deklaracja zmiennej  ,zakres 0-255 ,globalna bo przed main{}<br /><br />int main(void){<br /><br />DDRB = 0b00000001;                          //Port PB.0 jako wyjcie<br />PORTB = 0b11111110;                         //podciąganie reszty nieużywanych pinów<br /><br />PORTD = 0b1111111;                          //podciągnięcie całego portu D<br /><br /><br /><br /><br />sei();                                    //odblokowanie globalnych przerwań<br /><br />TCCR0B |= (1&lt;&lt;CS02);                         //preskaler 256   tabelka 42 PDF<br />TIMSK |= (1&lt;&lt;TOIE0);                        //zezwolenie na przerwanie z przepełniena timera ,tryb normal<br /><br /><br /><br />   sekunda=0;                                       //początkowa wartoć sekundy<br /><br /><br /><br />while(1){<br /><br /><br /><br />if(sekunda==125){<br />toogle_LED;                                    // jeli zmienna globalna ma wartoć 125 ,zmień stan LED<br />sekunda=0;<br />}<br /><br />while(1){                                     //petla sprawdzania przyciskow ,wykonywana tylko gdy nacisniemy przycisk<br />if(!(PIND0 &amp; key_S1_down)){               //sprawdzanie przycisku stop timera<br />_delay_ms(20);                            //odczekaj 20ms<br />if(!(PIND0 &amp; key_S1_down)){               //jesli przycisk nadal wcisniety<br />TCCR0B &amp;= ~(1&lt;&lt;CS02);              // ztrzymaj timer 0<br />}<br />}<br /><br />if(!(PIND1 &amp; key_S2_down)){                //sprawdzanie przycisku start timera<br />_delay_ms(20);                             //odczekaj 20ms<br />if(!(PIND1 &amp; key_S2_down)){                //jesli przycisk nadal wcisniety<br />TCCR0B |= (1&lt;&lt;CS02);                    //załaczenie timera 0<br />}<br />}<br /><br />}                                             //koniec petli sprawdzania przyciskow<br /><br /><br /><br /><br />}                                              // koniec glownej petli while ,nieskonczonej<br />}                                                   //koniec petli main<br /><br /><br /><br /><br /><br />ISR(TIMER0_OVF_vect){                                //przerwanie<br />sekunda++;                                       // zwiększanie wartoci sekunda o 1 co przerwanie<br />}[/syntax]<br /><br /><br />Staram się też zrozumieć działanie Makr ,czy będą poprawne poniżej? :<br /><br /><br /><span style="color: #BF00BF">#define START_Timer0 TCCR0B |= (1&lt;&lt;CS02)      ,makro starujące Timer0<br />#define STOP_TIMER0 TCCR0B &amp;= ~(1&lt;&lt;CS02)      ,makro zatrzymujące Timer0</span><br /><br />rozumiem ,że #define to taki &quot;Bascomowy&quot; alias.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 27 lut 2014, o 20:47</p><hr />
]]></content>
</entry>
</feed>