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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-09-28T19:04:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4319&amp;mode</id>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-09-28T19:04:31+01:00</updated>
<published>2013-09-28T19:04:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51272#p51272</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51272#p51272"/>
<title type="html"><![CDATA[Re: Obsługa przycisku w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51272#p51272"><![CDATA[
heh, ok. Początki są trudne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dzięki wszystkim za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 28 wrz 2013, o 19:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-09-28T18:28:02+01:00</updated>
<published>2013-09-28T18:28:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51267#p51267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51267#p51267"/>
<title type="html"><![CDATA[Re: Obsługa przycisku w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51267#p51267"><![CDATA[
<div class="quotetitle">t0mek napisał(a):</div><div class="quotecontent"><br />jestem początkujący dlatego pytam... timerów nie uruchamiałem bo zwłoki czasowej używam tylko i wyłącznie do eliminacji drgań. Zrobię tak jak mówicie, dzięki za pomoc<br /></div><br /><br />Jeśli w książce nie doszedłeś jeszcze do porządnej obsługi klawiszy np w rozdziale &quot;Wstęp do systemów czasu rzeczywistego&quot; to posiłkuj się taką uproszczoną ale za to bardzo dobrze działającą wersją obsługi klawiszy a na dodatek nieblokującą:<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 />i zapamiętaj sobie to co pisał wyżej kolega Antystatyczny. Jest taka jedna zasada, lepiej skoczyć z mostu niż:<br /><br />1. w przerwaniu używać delayów<br />2. w przerwaniu używać obsługi LCD<br /><br />nigdy i w żadnym przerwaniu, pod żadnym pozorem się tego nie robi. O tym musisz wiedzieć nawet jak ktoś cię obudzi nagle w środku nocy i błyśnie lampą błyskową w oczy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ok ? <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 wrz 2013, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-09-28T17:36:54+01:00</updated>
<published>2013-09-28T17:36:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51261#p51261</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51261#p51261"/>
<title type="html"><![CDATA[Re: Obsługa przycisku w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51261#p51261"><![CDATA[
jestem początkujący dlatego pytam... timerów nie uruchamiałem bo zwłoki czasowej używam tylko i wyłącznie do eliminacji drgań. Zrobię tak jak mówicie, dzięki za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 28 wrz 2013, o 17:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2013-09-28T17:27:19+01:00</updated>
<published>2013-09-28T17:27:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51256#p51256</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51256#p51256"/>
<title type="html"><![CDATA[Re: Obsługa przycisku w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51256#p51256"><![CDATA[
[syntax=c]uint8_t key_lock;<br />uint8_t flaga;<br /><br /><br /><br />ISR(INT0_vect){<br /><br />       flaga=1;<br />      <br />}<br /><br /><br />void obsluga_przycisku(void){<br /><br />                            if ((flaga) &amp;&amp; !(key_lock)) ++temp; // sprawdza czy nastąpiło przerwanie<br />                            if (temp&gt;19) temp=0; // jesli temp przekroczy 19 ustawi 0<br />                           <br />                           lcd_locate(1,12);<br />                           lcd_int(tab&#91;temp&#93;&#91;1&#93;); // wyswietla zmienna z tablicy w zaleznosci od wartosci temp<br />                           flaga=0;<br />                            if (key_lock) key_lock++;<br /><br />                           }[/syntax]<br /><br />Pisałem z pamięci, więc może być gdzieś jakiś babol, ale to raczej w tym kierunku należy iść a nie w _delay_ms w przerwaniu.<br /><br />Na końcu napisałeś -  else sei(); - to trochę nie tak, po zakończeniu obsługi przerwania automatycznie wraca globalne zezwolenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 28 wrz 2013, o 17:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-09-28T16:52:49+01:00</updated>
<published>2013-09-28T16:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51242#p51242</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51242#p51242"/>
<title type="html"><![CDATA[Obsługa przycisku w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4319&amp;p=51242#p51242"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Podczas tworzenia mojego projektu natknąłem się na kolejny problem. Chce spowodować aby po naciśnięciu przycisku dokonało się przerwanie zewnętrzne w którym zmienną temp zwiększyło mi o 1. Przerwanie działa ale...<br />I teraz dwa przypadki:<br /><br />1. Jak usunę warunek sprawdzania PIND2 to dodaje mi do zmiennej temp raz 1, a czasami 2 co jest dla mnie zjawiskiem niekorzystnym<br />2. Jak dodam warunek sprawdzający PIND2 to znowu muszę bardzo szybki nacisnąć dwa razy wtedy mi doda prawidłowo.<br /><br />Przestawiałem INT0 na zmiane zbocza, reakcje na stan niski itd.. no i wsumie nic nie pomaga. Jak dodam w pętli głównej warunek i zwłoke czasową to chodzi prawidłowo, ale mi bardzo zależy aby to było w przerwaniu.<br /><br />PD2 to pin przerwania INT0<br /><br />Poniżej kod przerwania:<br /><br /><br />[syntax=c]ISR(INT0_vect)<br />{<br /><br /><br />                  _delay_ms(80);<br />                  if (!(PIND &amp; (1&lt;&lt;PD2))) // sprawdza czy na PD2 jest masa<br />                  {<br />                   ++temp;  // zwieksza zmienna temp o 1<br />               if (temp&gt;19) temp=0; // jesli temp przekroczy 19 ustawi 0<br />               _delay_ms(100);<br />               lcd_locate(1,12);<br />               lcd_int(tab&#91;temp&#93;&#91;1&#93;); // wyswietla zmienna z tablicy w zaleznosci od wartosci temp<br />                  }<br />               else sei();[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 28 wrz 2013, o 16:52</p><hr />
]]></content>
</entry>
</feed>