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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-16T12:53:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=49&amp;t=4696&amp;mode</id>
<entry>
<author><name><![CDATA[Grzegorz]]></name></author>
<updated>2013-11-16T12:53:10+01:00</updated>
<published>2013-11-16T12:53:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57108#p57108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57108#p57108"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57108#p57108"><![CDATA[
<div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />bo jak Ci już pisałem na priva od 2 lat podchodzę do AVR-ków jak jeż do jabłka <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /></div><br />Przeca się nikomu nie pali. Ja jak robiłem swój własny programator do C51/S51, to zajęło mi to chyba pół roku - programu obsługującego to na PC jeszcze nie sfinalizowałem, choć tak ogólnie to te podstawowe funkcje ma i programowanie działa. Na dodatek wbudowałem sobie na wstępie w hardwerze taki fajny feler, nad którym tydzień siedziałem i mi ręce, nogi a nawet i kapcie opadały - przy odczytywaniu flashu zamiast poprawnego kodu miałem zawsze jakiś dziwny zbiór liczb, które szły sobie jakimś tam wzorkiem po kolei.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1582">Grzegorz</a> — 16 lis 2013, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-16T12:46:34+01:00</updated>
<published>2013-11-16T12:46:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57107#p57107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57107#p57107"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57107#p57107"><![CDATA[
NO sprawdzenie formy zapisu nie będzie problemem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> . Teraz morduję timery i przerwania <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=327">woycek</a> — 16 lis 2013, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz]]></name></author>
<updated>2013-11-16T11:47:12+01:00</updated>
<published>2013-11-16T11:47:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57073#p57073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57073#p57073"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57073#p57073"><![CDATA[
<div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />&quot;Grzesiu&quot; na pokładzie AVR Studio 4.19<br /></div><br />No to generalnie chyba nie powinno być problemu co do kompatybilności. Nie wiem czy w 4.19 można sobie w zapisie bitowym oddzielać bity kreskami (0b0000_0000), no ale to już chyba sam wybadać będziesz umiał.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1582">Grzegorz</a> — 16 lis 2013, o 11:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-16T10:32:29+01:00</updated>
<published>2013-11-16T10:32:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57064#p57064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57064#p57064"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=57064#p57064"><![CDATA[
&quot;Grzesiu&quot; na pokładzie AVR Studio 4.19...bo jak Ci już pisałem na priva od 2 lat podchodzę do AVR-ków jak jeż do jabłka <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br />&quot;2rs232&quot; dokładnie o to mi chodziło dzięki...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=327">woycek</a> — 16 lis 2013, o 10:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[2rs232]]></name></author>
<updated>2013-11-15T09:27:24+01:00</updated>
<published>2013-11-15T09:27:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56941#p56941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56941#p56941"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56941#p56941"><![CDATA[
woycek, o te przykłady chodziło?<br /><br />[syntax=asm];---------------------------------------------------------------------------------------------------------------------<br />; przykład 1<br />;---------------------------------------------------------------------------------------------------------------------<br /><br />;&gt;    ldi r16,0b0000_0001 ;w r16 robimy sobie maskę bitów do zatogglowania, w tym przypadku bit 0 zostanie zatogglowany<br />;&gt;    in r17,PORTA     ;wczytaj zawartość portu A do r17<br />;&gt;    eor r17,r16      ; r17 = (r17 xor r16)<br />;&gt;    out PORTA,r17    ;zapisz zmodyfikowaną zawartość r17 do portu A<br /><br />.equPORT_WYJ0 = PORTA<br />.equDDR_WYJ0  = DDRA<br />.equPIN_WYJ0  = PINA<br />.equWYJ0  = 0;PA0 <br /><br />;ustawienie lini portu jako wyjście<br />sbiDDR_WYJ0,WYJ0;wyjście<br /><br />; &quot;togglowanie&quot;<br /><br />ldir16,(1&lt;&lt;WYJ0)<br />inr17,PORT_WYJ0<br />eorr17,r16<br />outPORT_WYJ0,r17<br />;---------------------------------------------------------------------------------------------------------------------------<br /><br />;---------------------------------------------------------------------------------------------------------------------<br />; przykład 2<br />;---------------------------------------------------------------------------------------------------------------------<br /><br />;&gt;    ldi r16,0b1001_0001 ;w r16 robimy sobie maskę bitów do zatogglowania, w tym przypadku bity 0, 4 i 7 zostaną zatogglowane<br />;&gt;    out PINA,r16<br /><br />.equPORT_WYJ_0 = PORTA<br />.equDDR_WYJ_0  = DDRA<br />.equPIN_WYJ_0  = PINA<br />.equWYJ_0  = 0;PA0 <br /><br />.equPORT_WYJ_4 = PORTA<br />.equDDR_WYJ_4  = DDRA<br />.equPIN_WYJ_4  = PINA<br />.equWYJ_4  = 4;PA4 <br /><br />.equPORT_WYJ_7 = PORTA<br />.equDDR_WYJ_7  = DDRA<br />.equPIN_WYJ_7  = PINA<br />.equWYJ_7  = 7;PA7<br /><br />.equPORT_COM_WYJ_047 = PORTA;wspólny dla 0,4,7<br />.equDDR_COM_WYJ_047  = DDRA;wspólny dla 0,4,7<br />.equPIN_COM_WYJ_047  = PINA;wspólny dla 0,4,7<br /><br />;ustawienie lini portu jako wyjścia<br /><br />inr17,DDR_COM_WYJ_047  ;wczytaj zawartość portu A do r17<br />orir17,(1&lt;&lt;WYJ_7)|(1&lt;&lt;WYJ_4)|(1&lt;&lt;WYJ_0) ;0 4 7 będą wyjściami<br />outDDR_COM_WYJ_047,r17  ;ustaw 0,4 i 7 jako wyjście<br /><br />;lub<br /><br />sbiDDR_WYJ_0,WYJ_0;wyjście<br />sbiDDR_WYJ_4,WYJ_4;wyjście<br />sbiDDR_WYJ_7,WYJ_7;wyjście<br /><br />; &quot;togglowanie&quot;<br /><br />ldir16,(1&lt;&lt;WYJ_7)|(1&lt;&lt;WYJ_4)|(1&lt;&lt;WYJ_0)<br />outPIN_COM_WYJ_047,r16<br /><br />;lub<br /><br />sbiPIN_WYJ_0,WYJ_0<br />sbiPIN_WYJ_4,WYJ_4<br />sbiPIN_WYJ_7,WYJ_7<br />;----------------------------------------------------------------------------------------------------------------------------[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1670">2rs232</a> — 15 lis 2013, o 09:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz]]></name></author>
<updated>2013-11-14T16:11:43+01:00</updated>
<published>2013-11-14T16:11:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56819#p56819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56819#p56819"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56819#p56819"><![CDATA[
<div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />No OK.To ja poproszę powyższy przykład, ale z użyciem nazw symbolicznych.<br /></div><br />Który dokładnie powyższy?<br /><br /><br /><div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />No OK.Czyli na początku programu deklarujemy np pin pierwszy portu A jako &quot;Wy1&quot;. i jak teraz będzie wyglądała zmiana jego stanu <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><br /></div><br />Analogicznie do takiego z nazwami oryginalnymi. Powiesz mi dokładnie o który fragment kodu Ci chodzi, to Ci wkleję, łącznie z liniami definicji, które powinny się najlepiej na początku programu znajdować. I napisz może też od razu z jakiego asemblera/środowiska korzystasz, bo asembler to nie asembler - w AVRach ja korzystam z Atmel Studio 6 (najnowsze wydanie).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1582">Grzegorz</a> — 14 lis 2013, o 16:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-14T13:05:49+01:00</updated>
<published>2013-11-14T13:05:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56794#p56794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56794#p56794"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56794#p56794"><![CDATA[
No OK.<br />To ja poproszę powyższy przykład, ale z użyciem nazw symbolicznych.<br />Czyli na początku programu deklarujemy np pin pierwszy portu A jako &quot;Wy1&quot;. i jak teraz będzie wyglądała zmiana jego stanu <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  <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=327">woycek</a> — 14 lis 2013, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz]]></name></author>
<updated>2013-11-10T04:54:26+01:00</updated>
<published>2013-11-10T04:54:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56068#p56068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56068#p56068"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=56068#p56068"><![CDATA[
<div class="quotetitle">2rs232 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Grzegorz napisał(a):</div><div class="quotecontent">Cytuj:<br />14.2.2 Toggling the pin<br /><br />Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.<br /></div><br />Niestety trzeba pamiętać, że w nie wszystkich AVR jest to dostepne <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /></div><br /><br />No to chyba wtenczas też nie problem, prawda? Xorujesz sobie co trzeba i pasikonik. Czterolinijkowy - czyli czterorozkazowy - przykład dla zainteresowanych podaję poniżej i myślę, że nie ma w tym wielkiej filozofii. Przy okazji wychodzi na jaw znowu to, o czym powyżej pisałem: jest rozkaz <strong>ANDI</strong>, jest rozkaz <strong>ORI</strong>, ale nie ma rozkazu <strong>EOI</strong> - chłopcy go wycięli, bo musieli łostro łoszczędać. Gdyby był, można by to załatwić trzema rozkazami. No ale wróćmy do meritum, z tego programiku można sobie też zrobić macro albo podprogram, jeżeli sytuacja pisania tego się notorycznie powtarza i/albo komuś tak wygodniej - należy jednak wziąć pod uwagę, że skok do i powrót z podprogramu zabiera też kilka ładnych cykli procesora - w czasowo krytycznych projektach może to być niewskazane, bo w nich liczyć się może każdy cykl. Oczywiście jeżeli robimy to w przerwaniach, to trzeba sobie przed wykonaniem czegokolwiek uratować rejestr stanu i rejestry, z których korzystamy, a po wykonaniu zadania ich stan przywrócić - w tym celu najwygodniej będzie korzystać ze stosu. Żeby pasowało z wcześniejszym przykładem, wybrałem tak samo bit 0 portu A. Może jeszcze jedna uwaga - jeżeli w ten sposób (programowo) modyfikujemy bity portu z dwóch różnych miejsc w programie (np. w przerwaniach i programie głównym), należy zadbać o to, żeby te programy ze sobą nie kolidowały, np. zablokować przerwania na ten czas. Może się bowiem tak zdarzyć, że ten wykonywany w programie głównym program zostanie przerwany po drugiej albo trzeciej linijce przerwaniem, które też będzie dokonywało modyfikacji bitów na porcie A, a my po powrocie z przerwania wpiszemy do portu z powrotem to, co było wcześniej zapisane i zmodyfikowane przez nas w r17, i będzie ciężki burak. Ciężki w tym sensie, bo taki błąd jest bardzo trudny do znalezienia - objawy tego feleru występują przeważnie bardzo rzadko, bo prawdopodobieństwo trafienia się przerwania w tym momencie jest bardzo małe - mowa oczywiście o programie głównym, który jest znacznie dłuższy niż tylko cztery linijki. Dlatego lepiej używać jednorozkazowej modyfikacji bitu poprzez <strong>SBI PINA,0</strong> albo modyfikacji kilku bitów naraz za pomocą wysłania bajtu do rejestru PINA rozkazem <strong>OUT</strong> (przykład na końcu postu).<br /><br />[syntax=asm]ldi r16,0b0000_0001 ;w r16 robimy sobie maskę bitów do zatogglowania, w tym przypadku bit 0 zostanie zatogglowany<br />in r17,PORTA     ;wczytaj zawartość portu A do r17<br />eor r17,r16      ; r17 = (r17 xor r16)<br />out PORTA,r17    ;zapisz zmodyfikowaną zawartość r17 do portu A[/syntax]<br /><br />--<br />[syntax=asm]ldi r16,0b1001_0001 ;w r16 robimy sobie maskę bitów do zatogglowania, w tym przypadku bity 0, 4 i 7 zostaną zatogglowane<br />out PINA,r16[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1582">Grzegorz</a> — 10 lis 2013, o 04:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-08T15:29:13+01:00</updated>
<published>2013-11-08T15:29:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55854#p55854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55854#p55854"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55854#p55854"><![CDATA[
<div class="quotetitle">2rs232 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Grzegorz napisał(a):</div><div class="quotecontent">Cytuj:<br />14.2.2 Toggling the pin<br /><br />Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.<br /></div><br />Niestety trzeba pamiętać, że w nie wszystkich AVR jest to dostepne <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /></div><br />ATtiny2313 sobie z tym radzi <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=327">woycek</a> — 8 lis 2013, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[2rs232]]></name></author>
<updated>2013-11-08T12:27:23+01:00</updated>
<published>2013-11-08T12:27:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55842#p55842</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55842#p55842"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55842#p55842"><![CDATA[
<div class="quotetitle">Grzegorz napisał(a):</div><div class="quotecontent"><br />Cytuj:<br />14.2.2 Toggling the pin<br /><br />Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.<br /></div><br />Niestety trzeba pamiętać, że w nie wszystkich AVR jest to dostepne <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1670">2rs232</a> — 8 lis 2013, o 12:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-08T12:02:14+01:00</updated>
<published>2013-11-08T12:02:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55840#p55840</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55840#p55840"/>
<title type="html"><![CDATA[Re: Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55840#p55840"><![CDATA[
Dziękuję pięknie &quot;Grzesiu&quot;....jak to ktoś już na tym forum opisał &quot;wielki słoń przede mną...ale zjem go po kawałku&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . A tak apropo zamigałem sobie diodką przy pomocy AVR i się cieszę jak dziecko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=327">woycek</a> — 8 lis 2013, o 12:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz]]></name></author>
<updated>2013-11-08T01:27:25+01:00</updated>
<published>2013-11-08T01:27:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55820#p55820</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55820#p55820"/>
<title type="html"><![CDATA[Re: Help]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55820#p55820"><![CDATA[
<div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />Przesiadam się z poczciwej '51 na AVR i boli jak ...... Od dłuższego czasu gapię się na listę rozkazów asemblera dla AVR-ków i nie mogę znaleźć rozkazu negującego bit(dla '51 był to CPL), a nie chce mi się wierzyć że takiego rozkazu nie ma. Gdyby ktoś zechciał mnie naprowadzic, było by miło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Ja taką przesiadkę mam za sobą - generalnie nie narzekam, choć z początku mi formalnie przy tym flaki przewracało, szczególnie mnie denerwowało to, że z powodu braku miejsca w 16-bitowym rozkazie już w trakcie „produkcji” zaczęli panowie się pocić, oszczędzać i finalnie obcinać co niektóre fajne - bo wygodne - rozkazy asemblera; i tym sposobem nie znajdziesz na przykład rozkazu dodania liczby do rejestru w trybie bezpośrednim, czyli analogicznego odpowiednika rozkazu SUBI rd,K. Choć to też nie problem bo dodawanie to odjęcie odwrotności w obrębie np. jednego bajta, czyli odpowiednim knifem możesz dodać bezpośrednio liczbę do rejestru za pomocą odejmowania bezpośredniego. Również dostęp do pamięci SRAM i FLASH jest trochę pogmatwany, bo początek SRAM'u to rejestry systemowe a przy FLASH'u musisz wskaźnik zawsze pomnożyć przez dwa. No ale cóż... coś za coś, jest jednak wiele zalet tych procesorów, przede wszystkim ich szybkość jest nieporównywalna z C51 (tym standardowym, bo są też wersje przyśpieszone i o większej pamięci) oraz pojemność pamięci programu i przede wszystkim SRAM'u. W C51 masz tylko 128 lub 256 bajtów i nie dość, że kłopotliwy dostęp do tej drugiej połówki, to jeszcze w tym minimalnym RAMie musisz sobie gdzieś stos zagnieździć, i to nie mały, jeśli chcesz komfortowo pisać i wykonywać sobie podprogramy. Jest jeszcze parę innych niedogodności lub jak kto woli - kwiatków - w AVR (nazywając to tak na pierwszy rzut oka przy przesiadaniu się z innego procesora), no ale elaboratów nie mam zamiaru tutaj z wiadomych przyczyn robić.<br /><br /><br /><br /><div class="quotetitle">woycek napisał(a):</div><div class="quotecontent"><br />No tak ten rozkaz rozumiem...ale np. do tej pory w przerwaniu np. co 1 sekundę wykonywałem CPL P0.0 i już ...czyli co sekundę zmieniał mi się stan na wyjściu P0.0... a w AVR widzę że trzeba trochę pokombinować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Niekoniecznie trzeba kombinować, ani też xorować, akurat w przypadku portów wyjściowych jest do tego odpowiednio - bo nietypowo - zinterpretowany rozkaz. Załóżmy, że Twój P0.0 w C51 to PORTA0 w AVR, wtenczas, żeby zmienić jego stan (na odwrotny), wpisujesz jedynkę (i za każdym razem tylko jedynkę) do bitu tego portu poprzez <strong>SBI PINA,0</strong>. Oczywiście port musi być ustawiony jako wyjście, żeby otrzymać Twój pożądany efekt. Wtenczas tak samo jednym rozkazem możesz sobie zmieniać w przerwaniach co sekundę stan końcówki dowolnego portu. Dodam może jeszcze tylko, że normalnie rejestr PINx służy do odczytywania stanu pinu, gdy dany pin rejestru jest skonfigurowany jako wejście. W dokumentacji ATMega128 jest to togglowanie opisane tak:<br /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><strong>14.2.2 Toggling the pin</strong><br /><br />Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1582">Grzegorz</a> — 8 lis 2013, o 01:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-07T13:21:01+01:00</updated>
<published>2013-11-07T13:21:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55719#p55719</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55719#p55719"/>
<title type="html"><![CDATA[Re: Help]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55719#p55719"><![CDATA[
No tak ten rozkaz rozumiem...ale np. do tej pory w przerwaniu np. co 1 sekundę wykonywałem CPL P0.0 i już ...czyli co sekundę zmieniał mi się stan na wyjściu P0.0... a w AVR widzę że trzeba trochę pokombinować <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=327">woycek</a> — 7 lis 2013, o 13:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Waldek_jb]]></name></author>
<updated>2013-11-07T13:15:13+01:00</updated>
<published>2013-11-07T13:15:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55717#p55717</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55717#p55717"/>
<title type="html"><![CDATA[Re: Help]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55717#p55717"><![CDATA[
Witam.<br /><br />  No nie,to się spóźniłem.  <img src="https://forum.atnel.pl/images/smilies/icon_evil.gif" alt=":evil:" title="Zły" /> a tak chciałem być #1 i podpowiedzieć, że Mirek na pewno pomoże.<br /><br />  Cóż mi pozostało... hm... tylko krzyczeć  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> ,że TEMAT ZA KRÓTKI  <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=1693">Waldek_jb</a> — 7 lis 2013, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-07T13:10:11+01:00</updated>
<published>2013-11-07T13:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55716#p55716</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55716#p55716"/>
<title type="html"><![CDATA[Re: Help]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55716#p55716"><![CDATA[
EORRd,RsSuma Exclusive OR zawartości rejestrów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2013, o 13:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[woycek]]></name></author>
<updated>2013-11-07T12:57:16+01:00</updated>
<published>2013-11-07T12:57:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55715#p55715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55715#p55715"/>
<title type="html"><![CDATA[Help -  rozkaz negujący bit w AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4696&amp;p=55715#p55715"><![CDATA[
Przesiadam się z poczciwej '51 na AVR i boli jak ...... Od dłuższego czasu gapię się na listę rozkazów asemblera dla AVR-ków i nie mogę znaleźć rozkazu negującego bit(dla '51 był to CPL), a nie chce mi się wierzyć że takiego rozkazu nie ma. Gdyby ktoś zechciał mnie naprowadzic, było by miło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><span style="color: #FF0000">Poprawiłem tytuł <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> - Sonix</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=327">woycek</a> — 7 lis 2013, o 12:57</p><hr />
]]></content>
</entry>
</feed>