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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-07-11T07:15:08+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15757&amp;mode</id>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-07-11T07:15:08+01:00</updated>
<published>2016-07-11T07:15:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163841#p163841</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163841#p163841"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163841#p163841"><![CDATA[
<div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />Świetna wiadomość, możesz podesłać jakiegoś linka gdzie jest opis jak tego używać<br />lub pod jakim hasłem szukać ?<br /></div>Szczegóły jak zwykle w <a href="http://www.atmel.com/Images/Atmel-8159-8-bit-AVR-microcontroller-ATmega8A_datasheet.pdf"  class="postlink"><strong>datasheet</strong></a>, strona 117, rozdział <strong>21.6. Input Capture Unit</strong>. Wprawdzie ta jednostka służy nieco innym celom, ale przecież można zignorować zawartość ICR1 i po prtostu wykorzystać samo przerwanie (ustawiając bit TICIE1 w rejestrze TIMSK) z filtrowaniem sygnału na pinie (kluczowe jest tutaj ustawienie bitu ICNC1 w rejestrze TCCR1B).<br /><br /><div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent">PS. Zamiast wejścia ICP1 można też ewentualnie użyć wejścia komparatora analogowego.<br /></div><br />Czy to wiąże się ze sprawdzaniem stanu w pętli głównej programu<br />czy nadal można to zrobić &quot;sprzętowo&quot; ?</div><br />Jak już wspomniał kolega Mirek, komparator analogowy ma swoje przerwanie. Obawiam się jednak, że komparator sam w sobie nie posiada funkcji redukcji szumów. Dopiero skonfigurowanie jego wyjścia jako źródła sygnału dla jednostki Input Capture timera 1 pozwala na skorzystanie z tej opcji. Czyli tak czy inaczej, niezależnie od użytego pinu i tak trzeba będzie skorzystać z przerwania Input Capture. Jeśli więc masz możliwość użycia pinu ICP1, będzie to prostsze rozwiązanie.<br /><br />Wadą rozwiązania jest to, że wykorzystujemy funkcjonalność (przerwanie Input Capture), która jest czasami potrzebna do innych celów (w Atmega8A jest tylko jeden taki pin) i blokujemy rejestr ICR1, więc nie będzie możliwe skorzystanie ze wszystkich dostępnych trybów pracy timera 1 (np. tryb 14 fast PWM wykorzystuje rejestr ICR1 do przechowywania wartości TOP). Poza tymi ograniczeniami z timera 1 można korzystać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 lip 2016, o 07:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-10T21:57:54+01:00</updated>
<published>2016-07-10T21:57:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163838#p163838</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163838#p163838"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163838#p163838"><![CDATA[
<div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />czy nadal można to zrobić &quot;sprzętowo&quot; ?<br /></div><br />No a nie zaglądałeś do noty PDF ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Toż zawsze masz przerwanie od komparatora<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lip 2016, o 21:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[McSwirus]]></name></author>
<updated>2016-07-10T21:10:43+01:00</updated>
<published>2016-07-10T21:10:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163837#p163837</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163837#p163837"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163837#p163837"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Jeśli masz wolne wejście ICP1 i nie wykorzystujesz w programie rejestru ICR1, można by spróbować wykorzystać sprzętowy &quot;noise canceler&quot; mikrokontrolera. Jeśli redukcja szumów na wejściu ICP1 jest włączona, stan stabilny na tym wejściu musi trwać przez 4 kolejne takty zegara (czyli ok. 271ns przy taktowaniu 14.7456MHz), aby przerwanie zostało wywołane (flaga ustawiona).<br /></div><br /><br />Świetna wiadomość, możesz podesłać jakiegoś linka gdzie jest opis jak tego używać<br />lub pod jakim hasłem szukać ?<br />Muszę zorientować się jak mam to podłączyć i jak zmodyfikować program.<br /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Rozwiązanie takie miałoby taką zaletę, że uniknąłbyś niepotrzebnych przerwań. Ich obsługa zajmuje czas mikrokontrolera, a przecież zaraz po szpilce może nastąpić prawidłowe zbocze. Obsługa przerwania od tego prawidłowego zbocza będzie musiała wtedy poczekać do zakończenia poprzedniego. Dodatkowo jeśli takich niechcianych przerwań będzie dużo, utrudni to mikrokontrolerowi wykonywanie innych funkcji.<br /></div><br /><br />Widzę, że kolega doskonale rozpoznał mój problem i wynalazł dobre rozwiązanie,<br />za to wielkie dzięki. Pozostaje do-edukować się <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Oczywiście sprawdzenie stanu pinu można dla pewności wykonywać w procedurze obsługi przerwania, ale w zdecydowanej większości przypadków będzie to raczej formalność (no chyba, że tych zakłóceń masz bardzo dużo i ich czas trwania bywa większy od 271ns).<br /></div><br /><br />W takiej sytuacji pewnie można odpuścić sprawdzanie stanu INT0 (PD2 w Atmega8).<br />Zakłócenia pojawiają się pojedyncze na kilka ms przed zboczem narastającym,<br />tzn. przed każdym zboczem narastającym jest jedno silne zakłócenie ale jego wystąpienie<br />na osi czasu jest w różnych punktach przebiegu.<br /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />PS. Zamiast wejścia ICP1 można też ewentualnie użyć wejścia komparatora analogowego.<br /></div><br /><br />Czy to wiąże się ze sprawdzaniem stanu w pętli głównej programu<br />czy nadal można to zrobić &quot;sprzętowo&quot; ?<br /><br />Wielkie dzięki za podpowiedzi.<br />McSwirus<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14412">McSwirus</a> — 10 lip 2016, o 21:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-07-10T16:44:32+01:00</updated>
<published>2016-07-10T16:44:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163817#p163817</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163817#p163817"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163817#p163817"><![CDATA[
Jeśli masz wolne wejście ICP1 i nie wykorzystujesz w programie rejestru ICR1, można by spróbować wykorzystać sprzętowy &quot;noise canceler&quot; mikrokontrolera. Jeśli redukcja szumów na wejściu ICP1 jest włączona, stan stabilny na tym wejściu musi trwać przez 4 kolejne takty zegara (czyli ok. 271ns przy taktowaniu 14.7456MHz), aby przerwanie zostało wywołane (flaga ustawiona).<br /><br />Rozwiązanie takie miałoby taką zaletę, że uniknąłbyś niepotrzebnych przerwań. Ich obsługa zajmuje czas mikrokontrolera, a przecież zaraz po szpilce może nastąpić prawidłowe zbocze. Obsługa przerwania od tego prawidłowego zbocza będzie musiała wtedy poczekać do zakończenia poprzedniego. Dodatkowo jeśli takich niechcianych przerwań będzie dużo, utrudni to mikrokontrolerowi wykonywanie innych funkcji.<br /><br />Oczywiście sprawdzenie stanu pinu można dla pewności wykonywać w procedurze obsługi przerwania, ale w zdecydowanej większości przypadków będzie to raczej formalność (no chyba, że tych zakłóceń masz bardzo dużo i ich czas trwania bywa większy od 271ns).<br /><br />PS.<br />Zamiast wejścia ICP1 można też ewentualnie użyć wejścia komparatora analogowego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 10 lip 2016, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-10T16:24:33+01:00</updated>
<published>2016-07-10T16:24:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163810#p163810</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163810#p163810"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163810#p163810"><![CDATA[
<div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />P.S. Jeden programista zasugerował mi, żeby w pierwszej linii procedury obsługi przerwania<br />zablokować wszystkie przerwania<br /></div><br />No wiesz początkujący programiści mają prawo takie rzeczy sugerować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... nie każdy bowiem początkujący doczyta w nocie PDF procka, że po uruchomieniu przerwania wszystkie inne są wyłączone na ten czas automatycznie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> więc powielanie tej procedury w kodzie jest po prostu najzwyklejszym nonsensem ...<br /><br />A sytuacja ta nie dotyczy jak pytasz tylko ATmega8 ... to dotyczy KAŻDEGO procka AVR8 bez wyjątku <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> — 10 lip 2016, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[McSwirus]]></name></author>
<updated>2016-07-10T13:54:29+01:00</updated>
<published>2016-07-10T13:54:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163799#p163799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163799#p163799"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163799#p163799"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Wskazówka jest taka, że no jak w ogóle można myśleć o delayach w przerwaniu, gdy ty i tak rozważasz czasy nanosekundowe <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Nie ma to nic wspólnego z tym czy uda się zrobić delaya nanosekundowego bo sama pojedyncza instrukcja asemblerowa NOP przy taktowaniu np 8MHz to już opóźnienie = 125 ns - więc w czym problem ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ja mówię, że to już kompletny nonsens wstawiać jeszcze opóźnienia delay do przerwania w którym i tak przeszkadza ci opóźnienie samego asemblerowego prologu i epilogu przerwania ...<br /></div><br /><br />I wszystko jasne, już przepatrzyłem kod asm: 27 instrukcji push, 1 in, 1 eor, łącznie mi dało 56 taktów procka.<br />Przy 14.7456 MHz daje to czas 3.8 us (mikro sekundy) zatem o wiele dłuższy niż potrzebowałem,<br />myślę, że śmiało mogę w pierwszej linii procedury sprawdzić stan wejścia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Tak Panie Mirku, teraz wszystko rozumiem, po prostu wcześniej nie sprawdziłem<br />ile czasu trwa jeden takt procka, u mnie to 68ns, wystarczyły by 4 NOP'y ale są niepotrzebne.<br /><br />P.S. Jeden programista zasugerował mi, żeby w pierwszej linii procedury obsługi przerwania<br />zablokować wszystkie przerwania, jednak na necie znalazłem, że procek wykonuje to sprzętowo,<br />czyli blokuje przerwania na wejściu w procedurę i odblokowuje na wyjściu.<br />Czy na 100% Atmega8A właśnie tak robi z INT0 ?<br />W kodzie asm nie ma żadnej instrukcji a testów nie mogę wykonać dzisiaj,<br />a chciał bym wiedzieć, skróciło by to moje testy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Pozdrawiam<br />McSwirus<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14412">McSwirus</a> — 10 lip 2016, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-10T13:24:09+01:00</updated>
<published>2016-07-10T13:24:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163795#p163795</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163795#p163795"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163795#p163795"><![CDATA[
<div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />I tu chyba nie zrozumiałem <br />Czy sugerujesz, że nie dam rady napisać delaya 300ns ?<br />Być może w tej chwili jeszcze nie, ale zawsze można dać<br />jakąś pętelkę z inkrementacją zmiennej, a to może trwać kilka setek ns.<br />Ale być może źle coś zrozumiałem. Jak możesz to rozjaśnij mi w głowie.<br /></div><br /><br />Wskazówka jest taka, że no jak w ogóle można myśleć o delayach w przerwaniu, gdy ty i tak rozważasz czasy nanosekundowe <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Nie ma to nic wspólnego z tym czy uda się zrobić delaya nanosekundowego bo sama pojedyncza instrukcja asemblerowa NOP przy taktowaniu np 8MHz to już opóźnienie = 125 ns - więc w czym problem ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ja mówię, że to już kompletny nonsens wstawiać jeszcze opóźnienia delay do przerwania w którym i tak przeszkadza ci opóźnienie samego asemblerowego prologu i epilogu przerwania ...<br /><br /><div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />Co do filtrowania zakłóceń na wejściu INT0 to filtr RC 100Ohm, 100nF nie daje rezultatów a jedynie wydłuża czas narastania i spadania sygnału.<br /></div><br />No na tym polu to ja ci akurat nie pomogę bo nie czuję się w tym za dobrze - może ktoś inny jakieś cenne uwagi ew podpowie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lip 2016, o 13:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[McSwirus]]></name></author>
<updated>2016-07-10T13:15:48+01:00</updated>
<published>2016-07-10T13:15:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163793#p163793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163793#p163793"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163793#p163793"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />[...] Za to możesz sobie łatwo sprawdzić ile to trwa , wystarczy podejrzeć plik *.lss po kompilacji czyli źródło w asemblerze i podliczyć ile masz instrukcji ASM a później sprawdzić ile każda z nich zajmuje taktów procka i podliczyć to sobie ...<br /></div><br /><br />Dzięki za wskazówkę, na pewno przepatrzę ten plik.<br /><br /><div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />2. zasady mówią, żeby nie dawać &quot;delay'ów&quot; w tych procedurach,<br />tyle, że nie mam pomysłu jak to wykonać bez oczekiwania np.: 300ns.<br /></div><br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />No no nooo ... to z delayami rozumiem, że byś sobie co? poradził ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> chyba żartujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />I tu chyba nie zrozumiałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Czy sugerujesz, że nie dam rady napisać delaya 300ns ?<br />Być może w tej chwili jeszcze nie, ale zawsze można dać<br />jakąś pętelkę z inkrementacją zmiennej, a to może trwać kilka setek ns.<br />Ale być może źle coś zrozumiałem. Jak możesz to rozjaśnij mi w głowie.<br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Odnośnie tych szpilek nanosekundowych to spróbuj może jakimś kondkiem powalczyć - ale to już pewnie trzeba dobierać doświadczalnie<br /></div><br /><br />Walczyłem filtrem LC na zasilaniu, muszę zastosować lepsze kondensatory (szybsze, więc pewnie kilka mniejszych równolegle).<br />Co do filtrowania zakłóceń na wejściu INT0 to filtr RC 100Ohm, 100nF nie daje rezultatów a jedynie wydłuża czas narastania i spadania sygnału. Użyję jeszcze dobrze skręconej parki w ekranie, może coś się zmieni.<br /><br />P.S. Walkę ciągnę na 2 frontach: soft i hardware <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Dzięki.<br />McSwirus<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">maverick_as napisał(a):</div><div class="quotecontent"><br />Wiem , to mało odkrywcze, ale być może lepiej zrezygnować z przerwania sprzętowego i w bardziej &quot;wyszukany&quot; sposób wyłapywać porgramowo przejście 0 -&gt; 1.<br />Pozdr.<br /></div><br /><br />Nad tym się też zastanawiałem, jednak najważniejsza jest szybka reakcja na przerwanie.<br />W pętli głównej mam procedury transmisji danych do PC'ta, więc reakcja na zmianę stanu<br />mogła by być zdecydowanie za wolna. Na razie powalczę z przerwaniami.<br /><br />Dzięki<br />McSwirus<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14412">McSwirus</a> — 10 lip 2016, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maverick_as]]></name></author>
<updated>2016-07-10T12:51:45+01:00</updated>
<published>2016-07-10T12:51:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163788#p163788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163788#p163788"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163788#p163788"><![CDATA[
Wiem , to mało odkrywcze, ale być może lepiej zrezygnować z przerwania sprzętowego i w bardziej &quot;wyszukany&quot; sposób wyłapywać porgramowo przejście 0 -&gt; 1.<br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9169">maverick_as</a> — 10 lip 2016, o 12:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-10T12:31:41+01:00</updated>
<published>2016-07-10T12:31:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163784#p163784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163784#p163784"/>
<title type="html"><![CDATA[Re: Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163784#p163784"><![CDATA[
<div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />tylko nie wiem ile ? Być może wystarczająco długo, dłużej niż 300ns<br /></div><br />No może być spokojnie dużo dłużej niż 300 ns w zależności od taktowania procka ... Za to możesz sobie łatwo sprawdzić ile to trwa , wystarczy podejrzeć plik *.lss po kompilacji czyli źródło w asemblerze i podliczyć ile masz instrukcji ASM a później sprawdzić ile każda z nich zajmuje taktów procka i podliczyć to sobie ...<br /><br /><div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />2. zasady mówią, żeby nie dawać &quot;delay'ów&quot; w tych procedurach,<br />tyle, że nie mam pomysłu jak to wykonać bez oczekiwania np.: 300ns.<br /></div><br />No no nooo ... to z delayami rozumiem, że byś sobie co? poradził ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> chyba żartujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">McSwirus napisał(a):</div><div class="quotecontent"><br />3. Czy mogę potraktować nóżkę PD2 (INT0) jako wejście i bezkarnie<br />odczytać jej stan wewnątrz procedury obsługi przerwania ?<br /></div><br />A co ma być w tym karnego albo bezkarnego <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ??? Kto ci zabroni odczytać stan tego pinu w przerwaniu ? toż to normalna procedura jak jedzenie chleba naszego powszedniego <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Odnośnie tych szpilek nanosekundowych to spróbuj może jakimś kondkiem powalczyć - ale to już pewnie trzeba dobierać doświadczalnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lip 2016, o 12:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[McSwirus]]></name></author>
<updated>2016-07-10T11:23:45+01:00</updated>
<published>2016-07-10T11:23:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163775#p163775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163775#p163775"/>
<title type="html"><![CDATA[Fałszywe przerwania zewnętrzne]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15757&amp;p=163775#p163775"><![CDATA[
Witam,<br /><br />jestem nowy na forum, to moje początki programowania uC.<br /><br />Stworzyłem pewien układ prototypowy oparty na Atmega8A z zegarkiem 14.7456 MHz.<br />Podaję zewnętrzny sygnał 0-5V na INT0 - reagujące na zbocze narastające.<br />Sygnał o częstotliwości od 16Hz do 200Hz z wypełnieniem około 80% czasu 5V i 20% czasu 0V.<br />Gdy mam stan niski w sygnale pojawiają się zakłócenia, takie szpilki 2-3V<br />o czasie trwania ok 250-350ns. Urządzenie będzie pracowało w bardzo<br />trudnych warunkach jeśli chodzi o zakłócenia, jestem na etapie<br />testów nowych filtrów LC na rdzeniach do filtrowania zakłóceń zasilania,<br />ale część zakłóceń pochodzi od fal elektromagnetycznych i z nimi<br />mam także wielki problem aby wyfiltrować.<br /><br />Gdy pojawia się taka szpilka często generowane jest przerwanie INT0.<br /><br />Aby zapobiec programowo temu zjawisku chciałem w procedurze obsługi przerwania<br />na początku dodać sprawdzenie czy na wejściu INT0 mam stan wysoki czy niski<br />aby podjąć decyzję czy to &quot;fałszywe&quot; wywołanie przerwania (szpilką),<br />czy może to właściwe stanem wysokim. <br /><br />I tu mam problem gdyż nie mogę się dokopać w sieci do informacji:<br />1. ile taktów procesor potrzebuje na wywołanie tego przerwania (INT0),<br />   na pewno odkłada na stos szereg rejestrów a to zajmuje czas,<br />   tylko nie wiem ile ? Być może wystarczająco długo, dłużej niż 300ns <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />2. zasady mówią, żeby nie dawać &quot;delay'ów&quot; w tych procedurach,<br />   tyle, że nie mam pomysłu jak to wykonać bez oczekiwania np.: 300ns.<br />3. Czy mogę potraktować nóżkę PD2 (INT0) jako wejście i bezkarnie<br />   odczytać jej stan wewnątrz procedury obsługi przerwania ?<br /><br />Za wszelkie uwagi z góry dziękuję, prośba moja dotyczy kodu,<br />z zakłóceniami na poziomie sprzętu walczę i powolutku idę do przodu.<br /><br />McSwirus<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14412">McSwirus</a> — 10 lip 2016, o 11:23</p><hr />
]]></content>
</entry>
</feed>