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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-03T17:39:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14722&amp;mode</id>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2016-03-03T17:39:52+01:00</updated>
<published>2016-03-03T17:39:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155359#p155359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155359#p155359"/>
<title type="html"><![CDATA[Re: Dziwny problem z obsługą przycisku na PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155359#p155359"><![CDATA[
Tevis Skoro chcesz od razu tak testować to nie dziw się ze programy które piszesz nie działają. niestety trzeba najpierw pojąć o co chodzi w programowaniu, poznać zasady które są dobrze w książce opisane.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />marnowaniem przerwań<br /></div><br />W skrócie to jakby grać w tetrisa na najlepszym komputerze jaki świat wyprodukował. A więc na tetrisie to komputer się marnuje z takimi potężnymi zasobami <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak samo jest mniej więcej w tym przypadku <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=288">Janadamis</a> — 3 mar 2016, o 17:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tevis]]></name></author>
<updated>2016-03-03T17:21:53+01:00</updated>
<published>2016-03-03T17:21:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155357#p155357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155357#p155357"/>
<title type="html"><![CDATA[Re: Dziwny problem z obsługą przycisku na PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155357#p155357"><![CDATA[
Znalazłem rozwiązanie - dla innych użytkowników:<br />Pod koniec procedury obsługi przerwania należy ustawić odpowiednią flagę w PCIFR na 1 ponieważ w innym przypadku po obsłudze ISR przerwanie wykonuje się po raz drugi  (z tego co zrozumiałem jest &quot;zakolejkowane&quot;).<br /><br />Czy mógłby Pan rozwinąć o co chodzi z &quot;marnowaniem przerwań&quot;? W procesorach bez PCINT jest to oczywiste, ponieważ mamy np. tylko dwa wejścia INTx. Ale gdy praktycznie każda nóżka może służyć jako przerwanie jakie są przeciwwskazania żeby np. w panelu sterowania kilka przycisków obsługiwać właśnie w ten sposób?<br /><br />Mam książkę i czytałem blogi ale stety lub niestety jestem bardzo niecierpliwy i wszystko chcę od razu przetestować na żywym organizmie <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=12105">Tevis</a> — 3 mar 2016, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-03-03T15:19:16+01:00</updated>
<published>2016-03-03T15:19:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155346#p155346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155346#p155346"/>
<title type="html"><![CDATA[Re: Dziwny problem z obsługą przycisku na PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155346#p155346"><![CDATA[
Z twojego postu jak na razie wynika to, że kompletnie nie rozumiesz jak działają w ogóle przerwania a w szczególności przerwania typu PCINT. <br /><br />Wprowadzanie jakichkolwiek delayów do przerwań to po prostu koszmar ... zapamiętaj sobie jedno NIGDY tak się nie robi. <br /><br />Chcesz dowiedzieć się podstaw na temat przerwań? zaglądaj na bloga:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/12/przerwania-okiem-poczatkujacego.html" >http://mirekk36.blogspot.com/2013/12/pr ... acego.html</a><!-- m --><br /><br />odnośnie przerwań PCINT też coś będzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/12/przerwania-dla-poczatkujacych-czesc-03.html" >http://mirekk36.blogspot.com/2013/12/pr ... sc-03.html</a><!-- m --><br /><br />ale daj sobie spokój z marnowaniem przerwań na potrzeby przycisków - zajrzyj lepiej 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 />jeśli interesują cię proste i ciekawe sposoby na ich obsługę ... a najlepiej jak zaczniesz od książki:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />to naprawdę sporo się tobie wyjaśni<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 mar 2016, o 15:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tevis]]></name></author>
<updated>2016-03-03T14:44:56+01:00</updated>
<published>2016-03-03T14:44:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155340#p155340</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155340#p155340"/>
<title type="html"><![CDATA[Dziwny problem z obsługą przycisku na PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14722&amp;p=155340#p155340"><![CDATA[
Witam serdecznie<br /><br />Jestem na etapie nauki, więc z góry proszę o wyrozumiałość. <br />Chciałem sprawdzić działanie przerwań PCINT w celu obsługi przycisku, na ten moment używam funkcji delay ponieważ interesuje mnie istota działania tych przerwań, pomijając na ten moment kwestie zajętości procesora.<br /><br />ATmega164A<br />Do pinu PB0 (PCINT8) podpięty jest przycisk.<br />Do pinu PD7 podpięta jest dioda.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />int main (void){<br /><br />PCICR |= (1&lt;&lt;PCIE1);//włączenie przerwań PCINT 8..15<br />PCMSK1 |= (1&lt;&lt;PCINT8);//włączenie przerwania PCINT8<br />sei();//zezwolenie na przerwania globalne<br /><br />DDRD |= (1&lt;&lt;PD7);//wyjście na diodę<br />DDRB &amp;= ~(1 &lt;&lt; PB0);//wejście przycisku monostabilnego<br />PORTB |= (1&lt;&lt;PB0);//ustawienie jedynki na wejściu<br /><br />while(1){}<br />}<br /><br />ISR(PCINT1_vect){<br /><br />if(bit_is_clear(PINB, PB0)){//jeśli po którymś zboczu jest stan niski<br />_delay_ms( 100 );//poczekaj<br /><br />if(bit_is_clear(PINB, PB0)){//jeśli dalej stan niski<br /><br />PORTD ^= (1&lt;&lt;PD7);//przełącz diode<br /><br />};<br />};<br />}[/syntax]<br /><br />Generalnie jeśli klika się szybko to działa. Problem w tym że jeśli przytrzymam przycisk dłużej to przerwanie wykonuje się drugi raz - co ciekawe wykonuje się drugi raz i koniec. Niezależnie od tego jak długi czas oczekiwania ustawie przy przytrzymywaniu przycisku przerwanie zawsze wykonuje się drugi raz. Nie mam pomysłu dlaczego tak się dzieje, ponieważ teoretycznie po naciśnięciu przez chwile jest drganie styków, a następnie trzymając przycisk cały czas jest poziom niski, w związku z tym po wykonaniu tej funkcji jedyne możliwe następne zbocze wystąpi po puszczeniu przycisku. Nie mam pomysłu dlaczego tak się dzieje.<br /><br />Z góry dziękuję za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12105">Tevis</a> — 3 mar 2016, o 14:44</p><hr />
]]></content>
</entry>
</feed>