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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-17T19:54:22+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=12361&amp;mode</id>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2015-07-17T19:54:22+01:00</updated>
<published>2015-07-17T19:54:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134828#p134828</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134828#p134828"/>
<title type="html"><![CDATA[Re: ATOMIC BLOCK dla Cortex M3 i M4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134828#p134828"><![CDATA[
Dziękuję za odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> W sumie to chodziło mi i o ustawienie, o dekrementowanie i sprawdzanie if(!timer). Wszystko co pozwoli napisać prostą libke do korzystania z timerów programowych. No właśnie z tym M0 to może być problem bo tam chyba nie ma instrukcji <br />ldrex/strex. Jeszcze to muszę sprawdzić. <br /><br />Jak macie coś do dodania ciekawego to zachęcam <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=1039">fullmoonguy</a> — 17 lip 2015, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-07-17T08:28:11+01:00</updated>
<published>2015-07-17T08:28:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134775#p134775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134775#p134775"/>
<title type="html"><![CDATA[Re: ATOMIC BLOCK dla Cortex M3 i M4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134775#p134775"><![CDATA[
Jeśli timer programowy (zmienna) jest 32bitowy to operacje odczytu i zapisu są &quot;niepodzielne&quot;, więc problemu nie ma <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Jeśli musi być dłuższy to... w sumie nie wiem co by było najbardziej eleganckie - ja bym spłodził coś z ldrex/strex, ale niech się lepiej wypowie ktoś mądrzejszy ode mnie, żebym głupot nie nagadał. <br /><br />Nic nie piszesz o języku, więc strzelam że C. Od wersji C11 jest też nagłówek &lt;stdatomic.h&gt; (<a href="http://en.cppreference.com/w/c/atomic"  class="postlink">klik</a>), który pozwala definiować zmienne atomowe i &quot;operować&quot; nimi. Ale nie wiem jak to się spisuje w praktyce.<br /><br />Dodano:<br /><br />Jeszcze mi przyszło do głowy, że może Koledze chodziło nie tyle o samo ustawianie i odczytywanie co o np. inkrementację. Jeśli tak to również przyda się ldrex/strex. Atomowa inkrementacja:<br /><br />[syntax=c]void atomic_inc(uint32_t *ptr){<br />    <br />    uint32_t val;<br />    do {<br />val = __LDREXW(ptr);<br />val++;<br />    } while ( __STREXW(val, ptr) );<br /><br />}[/syntax]<br /><br />w sumie to samo można uzyskać korzystając z funkcji z stdatomic (np. atomic_fetch_add). <br /><br />Co do M0 to się nie wypowiadam, bo to taka bida, że może nie mieć takich bajerów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez Gość — 17 lip 2015, o 08:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2015-07-17T08:09:19+01:00</updated>
<published>2015-07-17T08:09:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134773#p134773</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134773#p134773"/>
<title type="html"><![CDATA[Re: ATOMIC BLOCK dla Cortex M3 i M4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134773#p134773"><![CDATA[
Potrzebuje tego do atomowego ustawiania i odczytywania programowego timera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 17 lip 2015, o 08:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-07-16T21:57:32+01:00</updated>
<published>2015-07-16T21:57:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134761#p134761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134761#p134761"/>
<title type="html"><![CDATA[Re: ATOMIC BLOCK dla Cortex M3 i M4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134761#p134761"><![CDATA[
AVRowy ATOMIC BLOCK to tylko wyłączenie przerwań. W Cortexie też możesz wyłączyć... tylko po co.<br />Wszystko zależy co chcesz zrobić. Możesz np.:<br />- zablokować wyjątki do pewnego priorytetu (patrz PRIMASK)<br />- skorzystać z bit bandingu<br />- skorzystać z instrukcji ldrex/strex<br />- itd...<br /><br />Wszystko zależy od tego, do czego Ci ten atomic potrzebny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez Gość — 16 lip 2015, o 21:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2015-07-16T20:06:02+01:00</updated>
<published>2015-07-16T20:06:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134738#p134738</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134738#p134738"/>
<title type="html"><![CDATA[ATOMIC BLOCK dla Cortex M3 i M4]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12361&amp;p=134738#p134738"><![CDATA[
Istnieje coś takiego ? W sumie to interesuje mnie rozwiązanie także dla M0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 16 lip 2015, o 20:06</p><hr />
]]></content>
</entry>
</feed>