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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-19T12:26:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8841&amp;mode</id>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-19T12:26:58+01:00</updated>
<published>2014-10-19T12:26:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99661#p99661</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99661#p99661"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99661#p99661"><![CDATA[
A jednak kolego sie mylisz! Tlumaczenie wychodzi Ci lepiej niz myslisz <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> dziekuje, wszystko jasne!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 19 paź 2014, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-10-18T12:50:13+01:00</updated>
<published>2014-10-18T12:50:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99509#p99509</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99509#p99509"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99509#p99509"><![CDATA[
Może faktycznie niezbyt precyzyjnie się wyraziłem. Miałem na myśli to, że sekwencja odwołań do rejestrów będzie bardziej optymalna od sekwencji instrukcji z dostępem selektywnym (poprzez pola struktury - operator kropki) np.:<br /><br />[syntax=c]PORTA.OUTSET = 0x20;<br />PORTA.OUTCLR = 0x21;<br />PORTA.OUTTGL = 0x22;<br /><br />PORTA_OUTSET = 0x20;<br />PORTA_OUTCLR = 0x21;<br />PORTA_OUTTGL = 0x22;[/syntax]<br />Przy włączonej optymalizacji, pierwsza linia doda dwie instrukcje ładujące bezpośrednio (ldi) adres struktury (PORTA). Pozostałe instrukcje pozostają bez wpływu na różnicę czasów wykonywania kodu (std/sts).<br /><br />Pliki nagłówkowe nie będą zawierać stałych z kropką, ponieważ jest to operator języka C/C++, wyrażający dostęp do pola struktury...<br />Jak widzisz definicje z '_' są bezpośrednim wskazaniem na miejsce (adres) w pamięci, a sama nazwa peryferium to struktura (w przypadku portów jest to typ strukturalny PORT_t).<br /><br />PS. Staram się tłumaczyć w dość prosty sposób, ale wiem że nie mam do tego talentu i nie bardzo mi to wychodzi <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 18 paź 2014, o 12:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-18T06:58:11+01:00</updated>
<published>2014-10-18T06:58:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99472#p99472</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99472#p99472"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99472#p99472"><![CDATA[
<div class="quotetitle">atmel napisał(a):</div><div class="quotecontent"><br />Przy zapisie PORTA.OUTSET, PORTA jest strukturą, a OUTSET polem tej struktury. Występuje tutaj standardowe działanie operatora selekcji lub jak ktoś woli kropki, a więc dostęp do składowej struktury jest możliwy jedynie po pośrednim jej zaadresowaniu w asm. W związku z tym, aby uzyskać jeszcze efektywniejszy kod należy prócz najlepszego ustawienia optymalizacji zwrócić jeszcze uwagę na zapis PORTA_OUTSET, który to jest bezpośrednim aliasem na rejestr OUTSET portu A.<br /></div><br /><br />Jeśli dobrze Cię zrozumiałem to : polecenie PORTA<strong>.</strong>OUTSET powinno dać bez optymalizacji inny kod wynikowy niż PORTA<strong>_</strong>OUTSET ?<br /><br />Sprawdziłem to na swoim eclipse: są identyczne!<br /><br />PORTA.OUT = PIN5_bm;<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 05 06 sts0x0605, r24[/syntax]<br />PORTA_OUTSET = PIN5_bm;<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 05 06 sts0x0605, r24[/syntax]<br /><br />W pliku iox32e5.h znalazłem tylko:<br />[syntax=c]#define PORTA_OUTSET  _SFR_MEM8(0x0605)[/syntax]<br />brak tam definicji z &quot;.&quot;<br /><br />ps. pamiętaj że mówisz do laika <img src="https://forum.atnel.pl/images/smilies/icon_e_geek.gif" alt=":geek:" title="Świr" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 18 paź 2014, o 06:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-10-17T15:10:08+01:00</updated>
<published>2014-10-17T15:10:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99418#p99418</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99418#p99418"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99418#p99418"><![CDATA[
Przy zapisie PORTA.OUTSET, PORTA jest strukturą, a OUTSET polem tej struktury. Występuje tutaj standardowe działanie operatora selekcji lub jak ktoś woli kropki, a więc dostęp do składowej struktury jest możliwy jedynie po pośrednim jej zaadresowaniu w asm. W związku z tym, aby uzyskać jeszcze efektywniejszy kod należy prócz najlepszego ustawienia optymalizacji zwrócić jeszcze uwagę na zapis PORTA_OUTSET, który to jest bezpośrednim aliasem na rejestr OUTSET portu A. Kwestia tutaj jest bardzo subtelna, ponieważ przy największym poziomie optymalizacji, pojedyncze odwołania do rejestrów poprzez pola struktury zachowują się tak samo jak bezpośredni dostęp do rejestrów. Jednak warto wiedzieć w czym rzecz.<br /><br />Zauważ że działanie OUT i OUTSET nie jest tożsame, a mianowicie instrukcja &quot;sts&quot; dokonuje zapisu do dwóch zupełnie innych rejestrów (0x0604 i 0x0605), a ich działanie jest odmienne.<br />W przywoływanej książce było omówienie kwestii działania kompilatora (teraz już nie pamiętam który to rozdział) i jego bezwzględnej &quot;ostrożności&quot; wobec rejestrów takich jak m.in. R24, który jest traktowany specjalnie, ponieważ służy przekazywaniu argumentów do funkcji. W tym miejscu należałoby zagłębić się bardziej w kwestie działania samego kompilatora, a nie chcę tego robić, ponieważ jeśli się nie mylę zostało to zrobione w książce &quot;AVR. Praktyczne projekty&quot;.<br /><br /><div class="quotetitle">doman napisał(a):</div><div class="quotecontent"><br />co robi taki zapis? ldi r24, 0x20 -&gt; ładuje wartość 0x20 do r24 ?<br />sts 0x605, r24 -&gt; ładuje do sramu wartość rejestru r24 ?<br /></div><br />Zgadza się. Przy czym to miejsce w pamięci SRAM jest jednym z rejestrów IO procesora.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 17 paź 2014, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-17T09:30:09+01:00</updated>
<published>2014-10-17T09:30:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99398#p99398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99398#p99398"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99398#p99398"><![CDATA[
<div class="quotetitle">atmel napisał(a):</div><div class="quotecontent"><br />Dodatkowo odrębną kwestią są nieidentyczne zapisy typu: PORTA.OUTSET i PORTA_OUTSET (dla pojedynczych odwołań optymalizator sobie i tak to uprości, różnice są w przypadku wielokrotnych odwołań), ale polecam bardziej zagłębić się w ten rozdział, skoro Kolega powołuje się na książki.<br /></div><br />Zagłębię się bardziej  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo nawet nie zwróciłem uwagi na zapis peryferium.rejestr i peryferium_rejestr, ale na razie od francuza mam tylko praktyczne projekty&quot;.<br /><br /><div class="quotetitle">atmel napisał(a):</div><div class="quotecontent"><br />Przedstawiony fragment kodu asm jasno pokazuje atomowość dostępu, nie rozumiem gdzie tu Kolega widzi niejasność.<br /></div><br /><br />A no tu: <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .OUT jest taki sam jak .OUTSET ? <br /><br />PORTA.OUT = PIN5_bm<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 04 06 sts0x0604, r24[/syntax]<br />PORTA.OUTSET = PIN5_bm; ...... ........ ....... atomowy?<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 05 06 sts0x0605, r24[/syntax]<br /><br />Kompletnie nie znam assemblera, jeszcze bardziej nawet niż C  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> ale się doedukowuję ciągle więc wybaczcie niewiedze  <img src="https://forum.atnel.pl/images/smilies/icon_e_geek.gif" alt=":geek:" title="Świr" /> Wydawało mi się że atomowy dostęp dotyczy tylko jednej instrukcji sbi/cbi zamiast ldi -&gt; out (wartość bezpośrednia do rejestru zamiast załadowanie do zmiennej i wysłanie zmiennej &quot;out&quot; do rejestru)?<br /><br />co robi taki zapis?  ldi r24, 0x20  -&gt; ładuje wartość 0x20 do r24 ?<br />                          sts 0x605, r24  -&gt; ładuje do sramu wartość rejestru r24 ?<br /><br /> <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 17 paź 2014, o 09:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-10-16T20:38:32+01:00</updated>
<published>2014-10-16T20:38:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99350#p99350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99350#p99350"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99350#p99350"><![CDATA[
Oczywiście że nie przez Atmel, ale czyż nie po to są te nowe rejestry aby ich używać...?<br />Znacznie upraszcza to wynikowy kod i pomaga ustrzec się wielu problemów. Jak najbardziej można również używać poprzednich zapisów, jednak w większości przypadków zdecydowaną większość można zastąpić ich nowym odpowiednikiem.<br />Wiadomo, wszystko zależy od konkretnego zastosowania, a to zalecenie było atmel'a, a nie firmy Atmel <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />W obu książkach Pana Tomasza Francuz, które posiadam (&quot;AVR. Praktyczne projekty&quot; oraz &quot;AVR. Układy peryferyjne&quot;) jest wielokrotne odwołanie do tych metod. Potwierdzeniem moich słów wraz z atomowością dostępu jest podrozdział &quot;Atomowa modyfikacja stanu pinów i wsparcie dla RMW&quot; rozdziału 7 (&quot;Lepiej i prościej, czyli porty IO procesora na sterydach&quot;). Konkretnie strony 196-199 książki &quot;AVR. Praktyczne projekty&quot;.<br /><br />Dodatkowo odrębną kwestią są nieidentyczne zapisy typu: PORTA.OUTSET i PORTA_OUTSET (dla pojedynczych odwołań optymalizator sobie i tak to uprości, różnice są w przypadku wielokrotnych odwołań), ale polecam bardziej zagłębić się w ten rozdział, skoro Kolega powołuje się na książki.<br /><br />Przedstawiony fragment kodu asm jasno pokazuje atomowość dostępu, nie rozumiem gdzie tu Kolega widzi niejasność.<br />Oczywiście dwie instrukcje assemblera nie wykluczają dostępu atomowego (rejestr R24, jest rejestrem specjalnym przy wywoływaniu funkcji i jest on odtwarzany po każdym jej powrocie).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 16 paź 2014, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-16T16:58:18+01:00</updated>
<published>2014-10-16T16:58:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99318#p99318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99318#p99318"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99318#p99318"><![CDATA[
Dzięki za podpowiedź doman89  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /> <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zalecane jest używanie OUTSET, OUTCLR i OUTTGL.<br /></div><br /><br />Kto tak zaleca, atmel? Wiem że takie rejestry są, &quot;wiem co robią&quot;, (może nie do końca wiem jak to robią) ale nie wiedziałem że jest to zalecana metoda! <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" /> W przykładach Francuza nie zauważyłem żeby stosował OUTSET itd.<br /><br />PORTA.OUTSET = PIN5_bm; ...... ........ ....... atomowy?<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 05 06 sts0x0605, r24[/syntax]<br /><br />Mimo wszystko dalej nie wiem na 100% jak pisać kod żeby wykonywał się najszybciej <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Poczytam jeszcze raz noty, książki i wrócę do tematu.<br /><br />// wszystkie przykłady asm są z &lt;main&gt; i pisane dla xmega32e5 bez optymalizacji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 16 paź 2014, o 16:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-10-16T15:18:07+01:00</updated>
<published>2014-10-16T15:18:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99301#p99301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99301#p99301"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99301#p99301"><![CDATA[
W xmega są rejestry o dostępie atomowym w przypadku wykonywania na porcie sumy (|), iloczynu (&amp;) lub alternatywy wykluczającej (^).<br />Odpowiednio dla zapisu: <strong>PORTA.OUT |= PIN0_bm;</strong> jest to: <strong>PORTA.OUTSET = PIN0_bm;</strong><br />Oczywiście nie powodują one uzyskania identycznego kodu wynikowego, a jedynie ich działanie jest identyczne. Zalecane jest używanie OUTSET, OUTCLR i OUTTGL.<br /><br />W przypadku innych rejestrów nie ma już tak różowo i trzeba stosować &quot;stare&quot; zapisy. Suffix &quot;_gc&quot; zmienia konfigurację rejestru zamazując tym samym jego poprzednią wartość. Dla zbiorczych konfiguracji może okazać się, że faktycznie nie zmieniane są pewne bity. Dzieje się tak dlatego, że inny zapis z &quot;_gc&quot; może zmieniać tylko niektóre z bitów, ale nie wszystkie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 16 paź 2014, o 15:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-10-16T13:48:29+01:00</updated>
<published>2014-10-16T13:48:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99291#p99291</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99291#p99291"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99291#p99291"><![CDATA[
<div class="quotetitle">doman napisał(a):</div><div class="quotecontent"><br />jeśli chodzi o _gc to jestem pewny na 99,99% że nie zmienia innych bitów w rejestrze<br /></div><br />A ja nie jestem tego taki pewien. W dokumencie o którym wspomniałeś pokazują taką konfigurację USARTa:<br /><br />[syntax=c]USARTC0.INTCTRL = (USARTC0.INTCTRL &amp; ~USART_RXCINTLVL_gm ) | USART_RXCINTLVL_MED_gc;[/syntax]<br />co mniej więcej odpowiada temu:<br /><br />[syntax=c]USARTC0.INTCTRL &amp;= ~USART_RXCINTLVL_gm;<br />USARTC0.INTCTRL |= USART_RXCINTLVL_MED_gc;[/syntax] <br />jako alternatywę podają konfigurację <strong>wszystkich </strong>przerwań USARTa razem za jednym zamachem:<br /><br />[syntax=c]USARTC0.INTCTRL = USART_RXCINTLVL_MED_gc |<br />USART_TXCINTLVL_OFF_gc |<br />USART_DREINTLVL_LO_gc;[/syntax]<br /><br />Mi się zdaje że zasada wciąż pozostaje ta sama: chcesz ustawić/skasować jakaś pozycję bitową bez tykania pozostałych bitów, stosujesz sumę/iloczyn bitowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 16 paź 2014, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-10-16T11:39:23+01:00</updated>
<published>2014-10-16T11:39:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99281#p99281</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99281#p99281"/>
<title type="html"><![CDATA[Re: [xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99281#p99281"><![CDATA[
Witam,<br /><br />Kolega (choć mógłbym pisać bracie xD - ze względu na nick), stosuj raczej zapis:<br />&quot;|=&quot; - zawsze masz pewność, że nie zmieniasz innych bitów w danym rejestrze, jeżeli takowe się znajdują.<br /><br />&quot;=&quot; - zawsze przypisuje operację na sztywno czyli dla mikroklocka to może być wpisane do danego rejestru np. 0b00000100. Czyli jeden ustawisz na 1, resztę skasujesz.<br /><br />Ja proponuję zawsze stosować zapisy &quot;|=&quot; i  &quot;&amp;=&quot; bo może się zdarzyć, że gdzieś będziesz konfigurował rejestry np. TCCRx w dwóch linijkach i z automatu dasz tylko &quot;=&quot; i znów problem będzie do rozwiązania, a czasem patrzysz i nie widzisz, że zapomniałeś &quot;głupiego&quot; znaczka &quot;|&quot; - wiem z własnego doświadczenia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89 </span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 16 paź 2014, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman]]></name></author>
<updated>2014-10-16T09:15:45+01:00</updated>
<published>2014-10-16T09:15:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99274#p99274</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99274#p99274"/>
<title type="html"><![CDATA[[xmega] _bm _gc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8841&amp;p=99274#p99274"><![CDATA[
Witam, spotkałem się z dwoma zapisami zarówno &quot;po staremu&quot; jak i &quot;po nowemu&quot; ze znakiem &quot;|=&quot; i bez. Niestety w komentarzach nie znalazłem odpowiedzi na proste pytanie. Szukałem też w nocie atmela starting with C code for xmega.<br /><br />[syntax=c]PORTA = (1&lt;&lt;5); // ustawia bit 5, kasuje resztę<br />PORTA |=(1&lt;&lt;5); //ustawia bit 5, reszta bitów bez zmian<br /><br />//ale spotkałem się z zapisami:<br /><br />PORTA.OUT = PIN5_bm;  //ustawia bit 5, ale czy kasuje resztę bitów?<br />PORTA.OUT |= PIN5_bm; //jeśli kod wyżej nie kasuje reszty bitów to po co &quot;|=&quot; ?<br /><br /><br />PORTA.OUT |= PIN1_bm | PIN3_bm;  //powinno wyglądać tak? :<br />PORTA.OUT = PIN1_bm | PIN3_bm;  //czy tak? :[/syntax]<br /><br />jeśli chodzi o _gc to jestem pewny na 99,99% że nie zmienia innych bitów w rejestrze, bo można zazwyczaj w danym rejestrze ustawić kilka _gc co spowodowało by bałagan, a w dodatku nigdzie nie znalazłem przykładu w którym byłby kod peryfer.rejestr |= per_opis_gc; wszędzie było: peryf.rejestr= per_opis_gc;<br /><br /><br /><br />PORTA.OUT = PIN5_bm<br />[syntax=asm]c4:80 e2       ldir24, 0x20; 32<br />  c6:80 93 04 06 sts0x0604, r24[/syntax]<br /><br />PORTA.OUT |= PIN5_bm<br />[syntax=asm]c4:80 91 04 06 ldsr24, 0x0604<br />c8:80 62        ori r24,  0x20; 32<br />ca:80 93 04 06 sts0x0604, r24[/syntax]<br /><br />Więc coś się jednak dzieje więcej - musze tylko jeszcze rozszyfrować co <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />ori : Logical OR Register and Constant<br />ldi : Load Immediate<br />sts : Store Direct to SRAM<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5642">doman</a> — 16 paź 2014, o 09:15</p><hr />
]]></content>
</entry>
</feed>