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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-06-15T21:49:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3327&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-15T21:49:25+01:00</updated>
<published>2013-06-15T21:49:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39370#p39370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39370#p39370"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39370#p39370"><![CDATA[
<div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Trzeba będzie Mirku utworzyć nowy dział w dział w kategorii PROGRAMOWANIE.<br /></div><br /><br />Racja! aż się zdziwiłem teraz - że nie ma działu Asembler <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... niedługo utworzę<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Dostępne są książki Mikrokontrolery AVR ATmega w praktyce i Mikrokontrolery AVR ATtiny w praktyce,<br /></div><br /><br />Mam obydwie i bardzo wysoko je sobie cenię jeśli chodzi o asemblera i przykłady - na prawdę z nimi można dużo szybciej ogarnąć asm <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> — 15 cze 2013, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-06-15T20:41:25+01:00</updated>
<published>2013-06-15T20:41:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39357#p39357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39357#p39357"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39357#p39357"><![CDATA[
Atmega w praktyce mogę pożyczyć bo kurzy mi się na półce.<p>Statystyki: Napisane przez Gość — 15 cze 2013, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-06-15T20:29:52+01:00</updated>
<published>2013-06-15T20:29:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39353#p39353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39353#p39353"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39353#p39353"><![CDATA[
Trzeba będzie Mirku utworzyć nowy dział w dział w kategorii PROGRAMOWANIE.<br /><br />Bardzo miło wspominam zabawę asemblerem AVR  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Chętnie sobie przypomnę. Może podpowiem parę rzeczy. Warto na początek przeczytać i mieć pod ręką:<br />- AVR Instruction Set Manual<br />- AVR Assembler User Guide / AVR Assembler 2 User Guide<br />- przykłady ze specyfikacji mikrokontrolera<br /><br />Z pierwszej pozycji dowiesz się m.in. dlaczego instrukcja w przykładach instrukcja ldi nie używa R0 tylko R16. Przewodnik użytkownika daje informację o tym co poza rozkazami jest potrzebne m.in. o sekcjach w pamięci mikrokontrolera takich jak .cseg .dseg<br />Tu jako środowisko najlepiej moim zdaniem nadaje się AVR Studio 4.19 ze względu na symulator, ale oczywiście możesz pozostać przy Eclipse.<br /><br />Dostępne są książki Mikrokontrolery AVR ATmega w praktyce i Mikrokontrolery AVR ATtiny w praktyce, ale bez nich też dasz sobie radę. Za darmo możesz mieć przykładowe kody z tych książek a w nich m.in. DFT.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 cze 2013, o 20:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-15T11:00:42+01:00</updated>
<published>2013-06-15T11:00:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39335#p39335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39335#p39335"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39335#p39335"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />1. Rozumiem, że w celu inkrementowania zmiennej należy skorzystać z rejestru. Czy w przypadku prostego przypisania jakieś wartości do zmiennej rownież korzystam z rejestru?<br />Chodzi mi o np. coś takiego: timer2_flag = 1;<br /><br />2. Nie bardzo czuję dlaczego zmieniają się znaczniki w SREG podczas inkrementacji zmiennej. Da sie to jakoś w kilku słowach wyjaśnić?<br /></div><br /><br />oczywiście, że wszystko da się wyjaśnić - ale wiesz - to jest kwestia już nauki pisania kodów w asemblerze - i stąd doładnie to wszystko wynika. Więc tak w oderwaniu od asemblera to trudno w szczegółach wyjaśnić a więc w uproszczeniu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />1. oczywiście, że tak bo nie ma w asemblerze AVR bezpośredniego zapisu stałej do pamięci RAM, musi to być zrobione za pomocą rejestru. Musisz po prosty też poczytać opisy rozkazów asm a sporo ci się wyjaśni co możesz a czego nie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />2. bo w asemblerze panie kochany są znaczniki operacji arytmetycznych np CarryFlag (przeniesienie) i podobne ... i w asemblerze korzysta się z tych znaczników jak byś jadł bułkę z kiełbasą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a programując w C - czochra cię to doszczętnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />3. ..... aaaa! nie było trzy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />i teraz tak - oczywiście w szczegółach mogłem coś pokrębasić np z tym dodawaniem inc r16, a co za tym idzie nie pamiętam tak na prawdę też już dokładnie czy to zmienia znacznik carry ale chyba tak bo jak dodasz do 255 liczbę 1 to musi nastąpić przeniesienie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... dlatego jeszcze raz powiem - po szczegóły - to w tył zwrot i do asemblera marsz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">Antystatyczny napisał(a):</div><div class="quotecontent"><br />Całą tę nagość chcę jedynie przećwiczyć i zrozumieć kiedy mogę sobie pozwolić na brak prologu i epilogu<br /></div><br /><br />nagość będziesz mógł uprawiać - gdy poznasz właśnie chociaż podstawy asemblera - wtedy ganiaj nago <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> — 15 cze 2013, o 11:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-15T09:21:45+01:00</updated>
<published>2013-06-15T09:21:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39331#p39331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39331#p39331"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39331#p39331"><![CDATA[
wtedy kiedy operacje w przerwaniu nie będą wykorzystywały rejestrów procesora albo wtedy gdy obsługę ISR napiszesz sobie jako wstawkę asemblerową i sam odłożysz stosowne bajty na stos a później zdejmiesz. Tyle że w tym konkretnym przypadku nawet jeśli zrobisz to sam w asemblerze to zyskasz może tylko 1-2 rozkazy związane ze stosem (push i pop)<br /><br />czyli co to znaczy że nie będą wykorzystywane rejestry ? np:<br /><br />[syntax=c]PORTA |= (1&lt;&lt;PA3);[/syntax]<br /><br />taka najprostsza operacja zostanie w asemblerze zamieniona na jeden rozkaz asemblerowy<br /><br />[syntax=asm]sbi PORT, BIT<br />reti[/syntax]<br /><br />czyli nie wymaga rejestrów ani (CO WAŻNE) nie zmienia znaczników<br /><br />ale już twoje inkrementowanie zmiennej z RAM jak zrobić bez rejestrów w asemblerze AVR ? nie da rady <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />musi to być mniej więcej coś takiego<br /><br />[syntax=asm]ld R16, timer_flag<br />inc r16<br />sts timer_flag, r16<br /><br />reti[/syntax]<br /><br />mogłem pomylić się co do mnemoników i ich użycia bo już dawno asemblera nie używałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale jak widzisz użłem rejestru R16 - czyli musiałbym już go przynajmniej odłożyć. A skoro robię zwiększanie o 1 to zmienią się znaczniki więc i rejestr SREG też trzeba odłożyć - więc wyszłoby mniej więcej coś takiego<br /><br />[syntax=asm]push R16<br />ld R16, SREG<br />push R16<br /><br />ld R16, timer_flag<br />inc r16<br />sts timer_flag, r16<br /><br />pop r16<br />out SREG, r16<br />pop r16<br /><br />reti[/syntax]<br /><br />czyli już praktycznie masz prolog i epilog jak w C bez ISR_NAKED - no może dojdzie tam jeszcze odłożenie rejestru R0 - możesz zajrzeć i porównać sobie w pliku *.lss<br /><br />czyli reasumując daj sobie spokój z ISR_NAKED w tak prostym kodzie obsługi przerwania bo i tak kompilator zrobi to bardzo dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... no chyba że chcesz w celach ćwiczebnych pisać wstawki asm - to ok<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 cze 2013, o 09:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[charsz]]></name></author>
<updated>2013-06-15T09:15:32+01:00</updated>
<published>2013-06-15T09:15:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39330#p39330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39330#p39330"/>
<title type="html"><![CDATA[Re: ISR_NAKED - dziwne zachowanie programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3327&amp;p=39330#p39330"><![CDATA[
A to nie jest tak, ze jak uzywasz ISR_NAKED to przynajmniej reti musisz wykonac?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=926">charsz</a> — 15 cze 2013, o 09:15</p><hr />
]]></content>
</entry>
</feed>