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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-26T15:26:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4923&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-26T15:26:31+01:00</updated>
<published>2013-11-26T15:26:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58647#p58647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58647#p58647"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58647#p58647"><![CDATA[
<div class="quotetitle">krzysztof napisał(a):</div><div class="quotecontent"><br />może podepnę się pod temat ,czyli rozumiem że funkcja której używamy w przerwaniu powinna zostać zdefiniowana jako inline?<br /></div><br /><br />Tzn ja powiem tak - jeśli tylko mogę to w ogóle nie używam funkcji w przerwaniach i w zasadzie w 99% przypadków daje radę<br /><br />czy funkcja jako inline ? hmmm no można ale wystarczy opatrzyć funkcję specyfikatorem static i kompilator sobie zrobi dobrze <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> — 26 lis 2013, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysztoffx]]></name></author>
<updated>2013-11-26T15:13:29+01:00</updated>
<published>2013-11-26T15:13:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58644#p58644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58644#p58644"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58644#p58644"><![CDATA[
może podepnę się pod temat ,czyli rozumiem że funkcja której używamy w przerwaniu powinna zostać zdefiniowana jako inline?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1459">krzysztoffx</a> — 26 lis 2013, o 15:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-26T14:31:02+01:00</updated>
<published>2013-11-26T14:31:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58641#p58641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58641#p58641"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58641#p58641"><![CDATA[
<div class="quotetitle">panbosman napisał(a):</div><div class="quotecontent"><br />Napisałem, że funkcja jest przykładem. Napiszę wieczorem dokładniej.<br /></div><br /><br />Nie - no ja rozumiem ... jeśli to całkiem coś innego niż obsługa przycisków i kompletnie nie widzisz innego wyjścia - to zrób i tak ... ja tylko ogólnie podpowiadam czego warto się wystrzegać albo dlaczego na tzw końcu sięgać po pewne rozwiązania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lis 2013, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[panbosman]]></name></author>
<updated>2013-11-26T14:29:21+01:00</updated>
<published>2013-11-26T14:29:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58640#p58640</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58640#p58640"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58640#p58640"><![CDATA[
Napisałem, że funkcja jest przykładem. Napiszę wieczorem dokładniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=819">panbosman</a> — 26 lis 2013, o 14:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-26T13:38:08+01:00</updated>
<published>2013-11-26T13:38:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58633#p58633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58633#p58633"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58633#p58633"><![CDATA[
wiesz jeśli to libs dla ciebie samego to jeszcze rozumiem - ale oddawanie takiego libsa z callbackami osadzonymi w przerwaniu to już może być mała masakra <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />a jeśli chodzi o tą krótką funkcję z tymi if'ami to jak widać chodzi o obsługę przycisków tylko - więc powiedz mi jaki jest w ogóle sens umieszczania tego w przerwaniu tak w ogóle ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> tym bardziej, że ZERO obsługi drgań styków i takie odejmowanie, dodawanie może działać jakby miało jakieś drgawki nerwowe ... <br /><br />toż to się idealnie nadaje do wrzucenia w pętlę główną w funkcji wewnątrz której ma działać akurat taka obsługa przycisków.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lis 2013, o 13:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[panbosman]]></name></author>
<updated>2013-11-26T13:32:41+01:00</updated>
<published>2013-11-26T13:32:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58632#p58632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58632#p58632"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58632#p58632"><![CDATA[
Zgadzam się na temat wywoływania funkcji w przerwaniu. Zasady o których piszesz są mi znane. Poproszę o poradę w takim razie jak zrobić niezależnego libsa, który w przerwaniu ma modyfikować jakąś zmienną wtedy gdy w projekcie będzie jakaś funkcja, która jej potrzebuje.<br /> Wpadłem na pomysł z umieszczeniem w przerwaniu callbacka. Jeśli jakaś funkcja zarejestruje się do niego to otrzyma tą zmienną. Jeśli nie to pusty przebieg przerwania. Funkcje jest bardzo krótka.<br />np. taka (przykład)<br />[syntax=c]if(bit_is_clear (Przycisk,plus)){Plus=1;ms_P++;} else {Plus=0;ms_P=0;}<br />    if(bit_is_clear(Przycisk,minus)){Minus=1;ms_M++;} else {Minus=0;ms_M=0;}<br />    if(bit_is_clear(Przycisk,enter)){Enter=1;ms_E++;} else {Enter=0;ms_E=0;}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=819">panbosman</a> — 26 lis 2013, o 13:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-26T13:19:58+01:00</updated>
<published>2013-11-26T13:19:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58630#p58630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58630#p58630"/>
<title type="html"><![CDATA[Re: Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58630#p58630"><![CDATA[
po pierwsze to powinieneś się zastanowić czy w ogóle wywoływać jakiekolwiek funkcje w przerwaniach ? Nie piszę tego dlatego - że niby nie można tak robić - bo można ....<br /><br />ale warto tego unikać jak ognia gdy tylko się da ...<br /><br />a jeśli już z jakichś tam względów trzeba - to warto mieć na uwadze jakie to niesie za sobą konsekwencje, bo samo rozważanie o volatile - KTÓRE OCZYWIŚCIE ŻE MUSI BYĆ  W TAKIM WYPADKU, to twoje przerwanie zaczyna zjadać dodatkowo:<br /><br />- więcej pamięci RAM na stos<br />- więcej czasu na skoki i powroty do i z funkcji<br /><br />hmmm poza tym na szczęście kompilator jest na tyle sprytny, że i tak często za takiego nieświadomego programistę i tak w wyniku optymalizacji WYWALI taką funkcję i wstawi jej ciało do przerwania bo tak warto zrobić ...<br /><br />----------------------<br /><br />reasumując - czym różni się zmiana takiej wartości x jak w twoim przykładzie od tego gdyby była ona zmienian w przerwaniu? no NICZYM - nadal podmiana jej wartości będzie odbywać się poza plecami programu głównego np gdzieś w main(). A to już powoduje z marszu że MUSI BYĆ volatile<br /><br />no chyba że tej zmiennej nie używasz nigdzie indziej w swoim programie głównym<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lis 2013, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[panbosman]]></name></author>
<updated>2013-11-26T13:11:15+01:00</updated>
<published>2013-11-26T13:11:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58628#p58628</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58628#p58628"/>
<title type="html"><![CDATA[Zmienna volatile a funkcja w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4923&amp;p=58628#p58628"><![CDATA[
Witam.<br />Jeżeli w przerwaniu uruchamiamy funkcję, która to funkcja w swoim ciele modyfikuje zmienną, to czy ta zmienna musi <strong>być volatile</strong>?<br /><br />[syntax=c]ISR(TIMER0_COMP_vect) // 1ms<br />    {<br />    funkcja();<br />    }[/syntax]<br /><br />[syntax=c]volatile static uint8_t x; // ?<br /><br />void funkcja (void)<br />{<br />x++;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=819">panbosman</a> — 26 lis 2013, o 13:11</p><hr />
]]></content>
</entry>
</feed>