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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=15860&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-27T18:54:11+01:00</updated>
<published>2016-07-27T18:54:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164837#p164837</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164837#p164837"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164837#p164837"><![CDATA[
<div class="quotetitle">squelch napisał(a):</div><div class="quotecontent"><br />Flagę zerujemy poprzez wpisnie jedynki więc jak polecą zera to nic się nie stanie.<br /></div><br /><br />no w przypadku UCSRA który nie jest tylko rejestrem flag przerwań trzeba podejść nieco inaczej ... zresztą słusznie zauważył wyżej kolega<br /><br /><div class="quotetitle">squeez napisał(a):</div><div class="quotecontent"><br />Każdy rejestr jest opisany w datasheet i tam zawsze trzeba zacząć, bo lepiej to sprawdzić niż domniemywać. Różnice też mogą być między procesorami dlatego dobry nawyk to czytanie DS.<br /></div><br /><br />--------------------<br /><br />Wcześniej pytałeś o rejest flag EIFR wtedy bez gadania <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zerujemy flagę tak jak tobie pisałem wcześniej w tym rejestrze<br /><br />ale już dla UCSRA trzeba podejść inaczej i tu można użyć OR ... A zatem PDF PDF i jeszcze raz PDF<br /><br />z tym, że warto zapamiętać to podejście do rejestru flag takiego jak EIFR albo TIFR ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2016, o 18:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[squelch]]></name></author>
<updated>2016-07-27T18:48:13+01:00</updated>
<published>2016-07-27T18:48:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164836#p164836</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164836#p164836"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164836#p164836"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A co w przypadku flagi TXC w rejestrze UCSRA (atmega 8)<br />Jeśli tam &quot;polecą zera&quot; to wyzerujemy sobie U2X (i MPCM). To możne być już &quot;groźne&quot;.<br /></div><br /><br />Flagę zerujemy poprzez wpisnie jedynki więc jak polecą zera to nic się nie stanie. Bo przecież nie możesz ustawiać flag sprzętowych aby się wykonywały przerwania<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9939">squelch</a> — 27 lip 2016, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2016-07-27T11:15:56+01:00</updated>
<published>2016-07-27T11:15:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164814#p164814</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164814#p164814"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164814#p164814"><![CDATA[
A co w przypadku flagi TXC w rejestrze UCSRA (atmega 8)<br />Jeśli  tam &quot;polecą zera&quot; to wyzerujemy sobie U2X (i MPCM). To możne być już &quot;groźne&quot;.<br />Chyba, że są mechanizmy  zabezpieczające, o których nie wiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 27 lip 2016, o 11:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[squelch]]></name></author>
<updated>2016-07-27T11:01:59+01:00</updated>
<published>2016-07-27T11:01:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164812#p164812</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164812#p164812"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164812#p164812"><![CDATA[
Ok teraz zaskoczyłem ale nadal nie dokońca rozumiem<br />Czyli chodzi oto że flagi mogę zerować poprzez wpisanie do bitu 1 a jak wpisze do danego bitu zero to nic się nie stanie bo przecież nie mogę ot tak wywołać sobie np. przerwania poprzez wpisanie 0.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />czyli jeśli np flaga INTF1 była ustawiona na 1 to ty ją tu (sorki za wyrażenie) zachlastasz<br /></div><br />Bit ustawiony na jeden w rejestrze oznacza że flaga nie jest zgłoszona a bit ustawiony na zero że flaga jest ustawiona zgłoszona. W takim razie super odczytam że jeden na pozycji tego bitu INTF1 i dalej będzie jeden na pozycji bitu bo or tak zadziała czyli flaga nadal jest nieustawiona czyli wszystko ładnie zadziała <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9939">squelch</a> — 27 lip 2016, o 11:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-27T09:55:55+01:00</updated>
<published>2016-07-27T09:55:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164807#p164807</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164807#p164807"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164807#p164807"><![CDATA[
<div class="quotetitle">squelch napisał(a):</div><div class="quotecontent"><br />Ale tym poleceniem EIFR=(1&lt;&lt;INTF0) wpisujemy do bitów innych flag zera przez co niechcący je ustawiamy<br /></div><br /><br />Posłuchaj - jeszcze raz na spokojnie, w punktach <br /><br />1. w jaki sposób kasujemy flagę przerwania w AVR ? - odpowiedź: wpisując jedynkę<br /><br />2. co się stanie jeśli nie wiedząc o mechanizmie z pkt 1 niechcący wpiszemy 0 ? - odpowiedź: nic się nie stanie nie WYZERUJEMY flagi bo ją się zeruje jak pkt.1<br /><br />dlatego jeśli napiszesz <br /><br />[syntax=c]EIFR=(1&lt;&lt;INTF0)[/syntax]<br /><br />to nic się nie stanie z bitami do których polecą zera (na tym polega atmelowskie zabezpieczenie zerowania flag)<br /><br />Za to jeśli użyjesz tu OR !!! to będziesz miał masakrę bo pomyśl sobie jeśli jakaś flaga będzie ustawiona w innym bicie to pisząc<br /><br />[syntax=c]EIFR |= (1&lt;&lt;INTF0)[/syntax]<br /><br />będzie to tak<br /><br />[syntax=c]EIFR = EIFR | (1&lt;&lt;INTF0)[/syntax]<br /><br />czyli jeśli np flaga INTF1 była ustawiona na 1 to ty ją tu (sorki za wyrażenie) zachlastasz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli ta jedynka też będzie zapisana co będzie oznaczało , że INTF1 też ma się skasować <br /><br /><br />teraz jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 lip 2016, o 09:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[squelch]]></name></author>
<updated>2016-07-27T08:29:19+01:00</updated>
<published>2016-07-27T08:29:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164801#p164801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164801#p164801"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164801#p164801"><![CDATA[
Ale tym poleceniem EIFR=(1&lt;&lt;INTF0) wpisujemy do bitów innych flag zera przez co niechcący je ustawiamy i teraz mogą się zgłosić a tą operacją  EIFR|=(1&lt;&lt;INTF0) odczytujemy zawartość rejestru i ustawiamy wybraną flagę na zero.<br />Czy nie powinno się stosować EIFR|=(1&lt;&lt;INTF0) <br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9939">squelch</a> — 27 lip 2016, o 08:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-26T21:22:00+01:00</updated>
<published>2016-07-26T21:22:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164784#p164784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164784#p164784"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164784#p164784"><![CDATA[
Tak się składa, że już niejednokrotnie o tym i pisałem i mówiłem w wielu kolejnych moich poradnikach ...<br /><br />w zasadzie to przypominam tylko to co jest w nocie PDF że flagę przerwania w AVR kasuje się poprzez zapis jedynki do bitu flagi ot wszystko<br /><br />a nie można tego robić z operacją OR bo możemy niechcący źle wpłynąć na inne flagi aktywnych przerwań<br /><br />Sam sobie rozpisz te dwa przykłady EIFR = (1&lt;&lt;INTF0); i EIFR |= (1&lt;&lt;INTF0); sprawdź co będzie to lepiej zrozumiesz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lip 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[squelch]]></name></author>
<updated>2016-07-26T20:36:23+01:00</updated>
<published>2016-07-26T20:36:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164782#p164782</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164782#p164782"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164782#p164782"><![CDATA[
Ok rozumiem w czym rzecz ale dlaczego mirku tak zerujemy flagę czy mógłbyś coś więcej o tym powiedzieć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9939">squelch</a> — 26 lip 2016, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-26T15:58:06+01:00</updated>
<published>2016-07-26T15:58:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164761#p164761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164761#p164761"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164761#p164761"><![CDATA[
<div class="quotetitle">squelch napisał(a):</div><div class="quotecontent"><br />Wiem że mirek dobrze to napisał nie chce zarzucać tutaj że to jest źle napisane tylko tego nie rozumiem.<br /></div><br />Kiedyś mirek źle napisał <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />flagę zerujemy tak:<br /><br />[syntax=c]EIFR = (1&lt;&lt;INTF0);[/syntax]<br /><br />a nie taj<br /><br />[syntax=c]EIFR |= (1&lt;&lt;INTF0);[/syntax]<br /><br />porównaj i zapamiętaj na zawsze ... to jest szczególnie ważne gdy się korzysta z kilku przerwań<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lip 2016, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-07-26T12:58:32+01:00</updated>
<published>2016-07-26T12:58:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164753#p164753</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164753#p164753"/>
<title type="html"><![CDATA[Re: Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164753#p164753"><![CDATA[
Chodzi o to, że flaga INTF0 może już być ustawiona zanim odblokowane zostaną przerwania. I wtedy po odblokowaniu przerwań od razu wykonało by się przerwanie INT0. A to może  być w pewnych sytuacjach nie wskazane. Dlatego dla pewności, przed odblokowaniem przerwania INT0, kasowana jest jego flaga. Tym sposobem mamy pewność, że przerwanie wystąpi wtedy gdy na pinie INT0 zmieni się stan.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 38 minutach ]</span></strong><br /><br />Po resecie procesora wszystkie piny są wejściami w stanie wysokiej impedancji. Napięcie na tych pinach może zmieniać się od GND do VCC.<br /><br />Bity ISCx1 i ISCx0 odpowiedzialne za wybór staniu, który wyzwala przerwania zewnętrzne są wyzerowane, czyli przerwanie jest wyzwalane stanem niskim. Skoro pin INT0 po resecie jest wejściem pływającym to może się zdarzyć, że napięcie na nim w pewnej chwili będzie miało wartość bliską GND. I w tym momencie zostanie ustawiona flaga INTFx.<br /><br />Może to się stać zanim odblokowane zostaną przerwania zewnętrzne. Dlatego tak jak pisałem wyżej dla pewności dobrze jest tą flagę wyzerować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 26 lip 2016, o 12:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[squelch]]></name></author>
<updated>2016-07-26T12:24:10+01:00</updated>
<published>2016-07-26T12:24:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164749#p164749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164749#p164749"/>
<title type="html"><![CDATA[Flaga przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15860&amp;p=164749#p164749"><![CDATA[
Cze<br /><br />Przedstawię teraz jak ja rozumie flagę przerwania:<br />No według mnie to sprawa wygląda tak że jak wystąpi przerwanie to zostaje ustawiona flaga danego przerwania i my jak odblokujemy przerwanie to wtedy program skoczy do procedury obsługi przerwania. Ale nie zawsze to jest nam konieczne czasami wystarczy same sprawdzanie flagi a nie skok do procedury obsługi przerwania.<br /><br />Tak ja to rozumie ale nie wiem czy dobrze więc jak coś to prosiłbym mnie poprawić.<br /><br />W takim razie moje pytanie brzmi dlaczego mirek napisał tak:<br />[syntax=c]int main(void)<br />{<br />.......................<br />GIMSK|=(1&lt;&lt;INT0);<br />EIFR|=(1&lt;&lt;INTF0);<br />}[/syntax]<br /><br />Czyli kasujemy flagę wystąpienia przerwania ale dlaczego odrazu po ustawieniu zezwolenia na przerwania.<br /><br />Rozumiem dlaczego kasujemy flagę w przerwaniu ale tutaj dlaczego.<br /><br />Wiem że mirek dobrze to napisał nie chce zarzucać tutaj że to jest źle napisane tylko tego nie rozumiem.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9939">squelch</a> — 26 lip 2016, o 12:24</p><hr />
]]></content>
</entry>
</feed>