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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-17T01:08:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6390&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-17T01:08:55+01:00</updated>
<published>2014-03-17T01:08:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74671#p74671</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74671#p74671"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74671#p74671"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />i wychodzi na to że jednak zaczeka. Jeżeli wystąpi zbocze na INT0/INT1 nawet w trakcie wykonywania innego przerwania, zostanie ustawiona flaga INTFx i potem, jak bit I w rejestrze SREG zostanie ponownie ustawiony to przerwanie INT zostanie obsłużone....<br /></div><br /><br />No a jak inaczej mógłby działać system przerwań? gdyby było inaczej to w zasadzie można byłoby takie procki na śmietnik tylko wyrzucać albo do starych kalkulatorów używać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Flagi sprzętowe przerwań - tak jak już widzisz same się nie skasują i dzięki temu kaskadowo może się wykonać szereg różnych przerwań jedno po drugim<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 mar 2014, o 01:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2014-03-16T23:58:03+01:00</updated>
<published>2014-03-16T23:58:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74663#p74663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74663#p74663"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74663#p74663"><![CDATA[
Flaga żądania przerwania zostaje ustawiona, kiedy zostaną spełnione odpowiednie warunki. Flaga żądania może zostać usunięta ręcznie (bodajże trzeba do niej 1 wpisać), albo automatycznie poprzez wywołanie żądanego przerwania. Przerwanie zostanie wywołane, kiedy flaga żądania jest ustawiona, odblokowane jest to konkretne przerwanie, oraz ustawiona jest globalna flaga zezwolenia na przerwania.<br /><br />Krócej - tak.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 16 mar 2014, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2014-03-16T23:48:27+01:00</updated>
<published>2014-03-16T23:48:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74661#p74661</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74661#p74661"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74661#p74661"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />bo przecież procedura przerwania nie zaczeka w kolejce na odblokowanie przerwań(a może jednak zaczeka...?).<br /></div><br />poczytałem w nocie do M324PA:<br /><a href="http://forum.atnel.pl/_obrazki/o/360/63351f04df0b760d0b81c9a58097ed5e.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/360/63351f04df0b760d0b81c9a58097ed5e.jpg" alt="Obrazek" /></a><br /><br />i wychodzi na to że jednak zaczeka. Jeżeli wystąpi zbocze na INT0/INT1 nawet w trakcie wykonywania innego przerwania, zostanie ustawiona flaga INTFx i potem, jak bit I w rejestrze SREG zostanie ponownie ustawiony to przerwanie INT zostanie obsłużone.... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Dobrze to rozumiem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 16 mar 2014, o 23:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2014-03-16T23:46:25+01:00</updated>
<published>2014-03-16T23:46:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74659#p74659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74659#p74659"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74659#p74659"><![CDATA[
Użycie przy ciele przerwania argumentu ISR_NOBLOCK, powoduje, że po ~5 cyklach zegarowych od wystąpienia żądania przerwania (chyba 2 na skok do tablicy wektorów, 2 na jmp w tablicy, potem 1 na sei) działanie programu może zostać (ponownie) przerwane przez dowolne przerwanie. W przypadku wystąpienia przerwania bez tego argumentu, możliwość przerwania pracy programu (przerwania) jest zablokowana do czasu wyjścia z takiego przerwania (reti).<br /><br />Albo krócej - tak.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 16 mar 2014, o 23:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2014-03-16T23:37:41+01:00</updated>
<published>2014-03-16T23:37:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74658#p74658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74658#p74658"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74658#p74658"><![CDATA[
hm... czyli jak użyję tego parametru dla przerwania od przepełnienia timera:<br />ISR(XXX_vect, ISR_NOBLOCK)<br />{<br />...<br />}<br />to obsługa tego przerwania będzie mogła zostać przerwana przez INT0 i INT1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 16 mar 2014, o 23:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2014-03-16T23:32:06+01:00</updated>
<published>2014-03-16T23:32:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74657#p74657</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74657#p74657"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74657#p74657"><![CDATA[
Rozdział 22.16 AVR libc user manual radzi:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Nested interrupts The AVR hardware clears the global interrupt flag in SREG before entering an interrupt vector. Thus, normally interrupts will remain disabled inside the handler until the handler exits, where the RETI instruction (that is emitted by the compiler as part of the normal function epilogue for an interrupt handler) will eventually re-enable further interrupts. For that reason, interrupt handlers normally do not nest. For most interrupt handlers, this is the desired behaviour, for some it is even required in order to prevent infinitely recursive interrupts (like UART interrupts, or level-triggered external interrupts). In rare circumstances though it might be desired to re-enable the global interrupt flag as early as possible in the interrupt handler, in order to not defer any other interrupt more than absolutely needed. This could be done using an sei() instruction right at the beginning of the interrupt handler, but this still leaves few instructions inside the compiler-generated function prologue to run with global interrupts disabled. <br /><strong>The compiler can be instructed to insert an SEI instruction right at the beginning of an interrupt handler by declaring the handler the following way:</strong><br /><br />ISR(XXX_vect, ISR_NOBLOCK)<br />{<br />...<br />}<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 16 mar 2014, o 23:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2014-03-16T23:32:30+01:00</updated>
<published>2014-03-16T23:20:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74655#p74655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74655#p74655"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74655#p74655"><![CDATA[
no, że czas wolny na obliczenia jest, to ja wiem. Ale jak będzie wykonywało się przerwanie od multipleskowania i akutat w tym czasie wystąpi zbocze narastające na INT0(zakłądam wyzwalanie przerwania zboczem), to nie zostanie wyłapany bit, bo przecież procedura przerwania nie zaczeka w kolejce na odblokowanie przerwań(a może jednak zaczeka...?).<br />Czy ja mogę w w przerwaniu od timera(multipleksowanie) na początku dać sei(), żeby umożliwić wchodzenie w kolejne przerwania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 16 mar 2014, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-03-16T17:58:23+01:00</updated>
<published>2014-03-16T17:58:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74591#p74591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74591#p74591"/>
<title type="html"><![CDATA[Re: przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74591#p74591"><![CDATA[
Przy taktowaniu 20MHz nie powinno być problemu. Cała ramka ma 1,85ms co daje 38us na bit. W tym czasie przy taktowaniu 20MHz procesor wykona 760 instrukcji. Funkcja obsługi przerwania dla multipleksowania trwa znacznie krócej, bo jakieś 70 instrukcji (co można sobie sprawdzić w pliku lss z folderu Release).<br />Oczywiście lepiej byłoby wykorzystać sprzętowe SPI.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 16 mar 2014, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2014-03-16T17:19:43+01:00</updated>
<published>2014-03-16T17:19:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74583#p74583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74583#p74583"/>
<title type="html"><![CDATA[przerwanie w trakcie wykonywania przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6390&amp;p=74583#p74583"><![CDATA[
Witam,<br />mam do wykonania projekt urządzenia opartego na M324PA, który między innymi ma za zadanie odbierać dane wysyłane szeregowo (trzy sygnały - SCK --&gt;INT0, DATA -&gt; jakiś pin, LATCH -- &gt; INT1)(48 bitów, bez CRC)<br /><a href="http://forum.atnel.pl/_obrazki/o/360/e5e2675803ef46dbaad62b1bd59fac79.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/360/e5e2675803ef46dbaad62b1bd59fac79.jpg" alt="Obrazek" /></a><br /><br /><br />, a następnie wyświetlać te tane na 8 multipleksowanych wyświetlaczach 7-seg.<br /><br />Wydaje mi się, że istnieje niebezpieczeństwo, że dane mogą nadejść w momencie przerwania obsługującego multipleksowanie... i wtedy nie odbiorę kompletnych danych...<br />Co mogę zrobić, żeby w trakcie przerwania timera obsługującego multipleksowanie możliwe było wystąpienie przerwnia od INT0 i INT1???<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=360">aaadamw</a> — 16 mar 2014, o 17:19</p><hr />
]]></content>
</entry>
</feed>