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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-16T20:20:22+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17832&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-16T20:20:22+01:00</updated>
<published>2017-03-16T20:20:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184942#p184942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184942#p184942"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184942#p184942"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Zostaje mi tylko pożegnać się z tym forum<br /></div><br />a więc żegnam <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> — 16 mar 2017, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-16T20:15:46+01:00</updated>
<published>2017-03-16T20:15:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184938#p184938</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184938#p184938"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184938#p184938"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />TOTALNA BZDURA na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />totalna - nie dość że jeden zwolennik samych błędów kompilatorów, których to już błędów &quot;wiele widział&quot; od razu wywróżył z fusów (nie fusebitów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ).... że to wina kompilatora<br /></div><br />Po pierwsze, nie twierdzę że to na pewno błąd kompilatora. Wydaje mi się to najbardziej prawdopodobnym wytłumaczeniem, ale właśnie dlatego w tym temacie pisałem że chciałem ustalić co jest przyczyną, a nie zgadywać. Błędy w kompilatorach są faktem, tylko totalny laik może myśleć że istnieją programy bezbłędne - a kompilatory są takimi samymi programami jak inne, chociaż bardzo skomplikowanymi.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />sorry że ostrzej reaguję na wypisywanie takich GŁUPOT ale moi drodzy panowie na tym forum nie będziemy rozpowszechniać takich GŁUPOT OK ? to moja gorąca prośba - jak chcecie sobie razem pogadać i siać taki defetyzm zamiast próbować się czegoś nauczyć - to zapraszam was do rozmowy na PW albo pisania takich plotek z magla - na własnym forum, blogu itp<br /></div><br />Zostaje mi tylko pożegnać się z tym forum, skoro można tutaj pisać tylko to co właścicielowi się podoba i co rozumie. Jak widać pewne tematy są jednak poza zasięgiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 16 mar 2017, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-16T17:23:24+01:00</updated>
<published>2017-03-16T17:23:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184917#p184917</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184917#p184917"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184917#p184917"><![CDATA[
<div class="quotetitle">hbtomek napisał(a):</div><div class="quotecontent"><br />Do mnie przemawia wyjaśnienie kol. elvis'a o błędach kompilatora (analiza pliku .lss)<br /></div><br />Z takim podejściem to wy panowie daleko nie zajedziecie jeśli chodzi o logiczne rozwiązywanie problemów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> sorki ale no teraz to już TOTALNA BZDURA na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />totalna - nie dość że jeden zwolennik samych błędów kompilatorów, których to już błędów &quot;wiele widział&quot; od razu wywróżył z fusów (nie fusebitów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ).... że to wina kompilatora i wszelkie jego płonne nadzieje padły po dokonanych próbach , to autor wątku zamiast wykazać się odrobiną zaciętości, nutki detektywistycznej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> poszukiwania błędu - pisze też bzdury a na dodatek dodaje <br /><br /><div class="quotetitle">hbtomek napisał(a):</div><div class="quotecontent"><br />Szkoda czasu na dalsze drążenie problemu<br /></div><br /><br />no już kuriozum w połączeniu z pisaniem o błędzie kompilatora <br /><br />sorry że ostrzej reaguję na wypisywanie takich GŁUPOT ale moi drodzy panowie na tym forum nie będziemy rozpowszechniać takich GŁUPOT OK ? to moja gorąca prośba - jak chcecie sobie razem pogadać i siać taki defetyzm zamiast próbować się czegoś nauczyć - to zapraszam was do rozmowy na PW albo pisania takich plotek z magla - na własnym forum, blogu itp <br /><br />Bo z tego typu bezsensownych tekstów młodzi adepci później zamiast się uczyć, to przy byle swojej porażce - zaczynają ględzić tak jak wy:<br /><br />O! kompilator zrypany<br /><br />O! procesor ma zepsuty w środku Timer0<br /><br />albo inne fantasmagorie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 mar 2017, o 17:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hbtomek]]></name></author>
<updated>2017-03-16T16:55:47+01:00</updated>
<published>2017-03-16T16:55:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184914#p184914</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184914#p184914"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184914#p184914"><![CDATA[
Odinstalowałem dotychczasowe środowisko prog. AVR STUDIO4. Będę instalował Atmel Studio 7.<br />Szkoda czasu na dalsze drążenie problemu (3 tygodnie &quot;stania w miejscu&quot; z pisaniem programu). Do mnie przemawia wyjaśnienie kol. elvis'a o błędach kompilatora (analiza pliku .lss) Mam tylko nadzieję, że &quot;świeże&quot; Atmel Studio będzie pozbawione podobnych utrudnień. <br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16648">hbtomek</a> — 16 mar 2017, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-15T10:43:14+01:00</updated>
<published>2017-03-15T10:43:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184844#p184844</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184844#p184844"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184844#p184844"><![CDATA[
Też jestem bardzo ciekaw, co było przyczyną tak dziwnego działania kompilatora - chociażby po to, żeby ustrzec się takich niespodzianek w przyszłości.<br />Jak chodzi o kompilatory, to niestety widziałem już podobne przypadki. Mój ulubiony błąd był na MSP430 - układ 16-bitowy, więc przy używaniu długich liczb miał więcej pracy. Optymlizator był bardzo efektywny, niestety czasem aż za bardzo - podczas inicjalizacji zmiennej 32-bitowej wartością mieszczącą się w 16 bitach nie zerował wyższej połowy słowa... Najlepiej widać wady kompilatorów kompilując Linuxa, ale to zupełnie inna historia.<br />Ciekawe jak każdy inaczej postrzega czas - mnie się wydaje jakby 2010 był wczoraj.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 15 mar 2017, o 10:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-15T10:24:23+01:00</updated>
<published>2017-03-15T10:24:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184843#p184843</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184843#p184843"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184843#p184843"><![CDATA[
tak masz rację elvis - ja może popłynąłem z tym symulgatorem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale tylko z marszu i na szybko sprawdziłem <br /><br />i tak jak widzisz potwierdza się że i w mojej próbie i w twojej kod generuje się poprawnie<br /><br />tylko z mega czystej ciekawości chciałbym gdzieś złapać - co tu się działo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... ale tak jak piszesz być może trzeba więcej informacji<br /><br />chociaż z drugiej strony - może wystarczy wgrać i użyć nowych narzędzi<br /><br />Jeśli chodzi o rok 2010 .... to dla mnie z uwagi na ogromny ciągły postęp i progress w rozwoju technologii i oprogramowania to już plasuje się na dalszym miejscu niż średniowiecze <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 mar 2017, o 10:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-15T09:58:20+01:00</updated>
<published>2017-03-15T09:58:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184841#p184841</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184841#p184841"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184841#p184841"><![CDATA[
Ja tam zauważyłem, żeby <strong>hbtomek</strong> używał symulatora. Pewnie jest zainstalowany wraz z AVR Studio i tyle, a autor podał jego wersję wraz z informacjami o środowisku - i to się chwali.<br />Przyznam, że również spróbowałem zainstalować WinAVR20100110, ale w moim przypadku kod wynikowy wygląda inaczej. Warto podkreślić, że plik .lss nie ma nic wspólnego z symulatorem, czy uruchamianiem na prawdziwym mikrokontrolerze. To po prostu listing programu, czyli wynik działania kompilatora w nico bardziej czytelnej wersji niż czysta binarka. Możemy program uruchamiać na symulatorze, fizycznym układzie, czy też w głowie analizować jego działanie - ale samego kodu to nie zmieni.<br />Powstaje więc pytanie, dlaczego hbtomek uzyskuje tak dziwny wynik działania kompilatora? Chyba przydałoby się więcej informacji o parametrach wywołania gcc. Czy AVR studio pozwala na wklejenie faktycznie wywoływanych poleceń? Coś jak konsola, czy log powinno być dostępne.<br /><br />A co do wykopalisk, to naprawdę 2010 rok był tak dawno? Jak ten czas szybko leci. Kompilator niby stary, ale AVR to w całości niemłoda architektura. W sumie czym jest 7 lat dla kompilatora, skoro mówimy o 20 letnim procesorze...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 15 mar 2017, o 09:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hbtomek]]></name></author>
<updated>2017-03-15T09:22:19+01:00</updated>
<published>2017-03-15T09:22:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184838#p184838</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184838#p184838"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184838#p184838"><![CDATA[
Witam<br />Dla pokazania  jakiego środowiska programistycznego używam, skopiowałem zawartość okna &quot;wersja AVR STUDIO&quot;, gdzie jest coś o symulatorze. Używam zestawu uruchomieniowego GOTRONIC z bogatym zestawem układów peryferyjnych (<!-- m --><a class="postlink" href="http://www.gotronik.pl/modul-uruchomieniowy-avr-atmega32-wersja-p-572.html" >http://www.gotronik.pl/modul-uruchomien ... p-572.html</a><!-- m -->) z, jak najbardziej &quot;żywym,&quot; ATMEGA32 - nie symulatora. Jeżeli tym wprowadziłem w błąd, to przepraszam.<br />Z zaleceń skorzystam, chociaż uważam, że nawet &quot;archaiczny, wykopaliskowy&quot; zestaw powinien działać właściwie z tak banalnym kodem.<br />Dziękuję wszystkim za zaangażowanie i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16648">hbtomek</a> — 15 mar 2017, o 09:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-15T00:58:26+01:00</updated>
<published>2017-03-15T00:58:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184834#p184834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184834#p184834"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184834#p184834"><![CDATA[
<div class="quotetitle">hbtomek napisał(a):</div><div class="quotecontent"><br />Nie jestem ekspertem w asemblerze avr, ale moim zdaniem mamy przykład błędu kompilatora.<br /></div><br />Żadne tam błędy kompilatora <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Po pierwsze, jestem w szoku, że mamy rok 2017 a tymczasem autor wątku nie dość, że odkopuje jakieś wykopaliska z górnej kredy z czasów dinozaurów - czyli WinAVR 2010 rok !!! - Le MASAKRA ! <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no ale ok - załóżmy że ma zamiłowanie do wykopalisk - no trudno<br /><br />to jeszcze zamiast testować na ŻYWYM, podkreślam ŻYWYM układzie czyli kawałku procka z diodami LED to wpuszcza się w &quot;KANAŁ&quot; symulatora i to na dobitkę z MEGA STAREGO AVR Studio 4 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />sorki panie autor wątku (to tak żartobliwie mówię a nie prześmiewczo) ale trzeba być MASOCHISTĄ informatycznym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no poważnie - mamy przecież 2017 rok. Czy kolega zatrzymał się w czasie ? <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br />----------------------------------<br /><br />ale ok wróćmy do meritum - z wielkiej ciekawości - zabawiłem się w archeologa i zainstalowałem jakiś stary toolchain WinAVR2010 rok !!!<br /><br />zrozumiałbym jeszcze gdyby autor wziął jak mówiłem - kawałek fizycznego procka, podłączył sobie diody LED, jakiś wyświetlacz LCD i robił próby i testy<br /><br />ale ..... SYMU-kurczę-LATOR i to archaiczny ? .... bleeee <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> (zaznaczam mówię pół żartem pół serio żeby zaraz ktoś się nie obraził tragicznie) ....<br /><br />i nawet nie zadał sobie trudu sprawdzenia w praktyce ?<br /><br />No dla mnie to nie do pomyślenia .... Dlatego ciekaw byłem czy możliwe żeby w tamtych czasach był aż TAK MOCNO spierdzielony (sorry za wyrażenie kompilator) - a wątpię bo w tamtych czasach używałem już mocno kompilatora C i gdyby na takim poziomie PODSTAWOWYCH przesunięć bitowych miał RYPAĆ takie błędy to nie wiem co bym zrobił ..... a sporo projektów się robiło <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Na myśl mi nie przeszło nawet w tamtych zamierzchłych czasach żeby rypać się z symulgatorem <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br />-----------------------<br /><br />no dobra wziąłem sobie dzisiaj maszynkę wirtualną ze starym jak świat Windows XP, nie dość że odpaliłem staruszka z brodą WinAVR2010 to jeszcze wziąłem stare jak świat Eclipse LUNA - żeby poczuć klimat tamtych lat <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />No i skompilowałem cały KOD na żywca z pierwszego postu na zestawie ATB podłączając sobie pod cały PORTB 8 diod LED<br /><br />i co ?<br /><br />I DZIAŁA TAK JAK NATURA CHCIAŁA - żadnych problemów !!!<br /><br />poniżej zawartość pliku *.lss<br /><br />[syntax=asm]int main(void) {<br /><br />        DDRB = 0xff;                    //port B jako wyjscie<br />  7c:8f ef       ldir24, 0xFF; 255<br />  7e:87 bb       out0x17, r24; 23<br />        PORTB = 0xff;                   //ustawienie pinów portu jako'1'<br />  80:88 bb       out0x18, r24; 24<br />        {<br />                a = 0x0000;                     //inicjalizacja zmiennej a = 0b 0000 0000 0000 0000<br />                f1();                           //wywołanie funkcji f1 - a = 0b 0000 0000 0000 0001<br />                a = (a &lt;&lt; 8);           //a = 0b 0000 0001 0000 0000<br />                a = (a &gt;&gt; 4);           //a = 0b 0000 0000 0001 0000<br />                PORTB = ~a;                     //negacja bitowa zmiennej a = 0b 1111 1111 1110 1111<br />  82:5f ee       ldir21, 0xEF; 239<br />    milliseconds can be achieved.<br /> */<br />void<br />_delay_loop_2(uint16_t __count)<br />{<br />__asm__ volatile (<br />  84:24 e1       ldir18, 0x14; 20<br />  86:31 e0       ldir19, 0x01; 1<br />                                                        //częsc młodsza zmiennej 'a' wysłana na Port B = 0b 1110 1111<br />                                                        //i tu jest problem bo jest: Port B = 0b 1111 1111 ?????<br />                _delay_ms(1000);        //utrzymanie stanu portu przez 1 sec<br />                PORTB = 0xff;           //wysłanie 0xff na port B<br />  88:4f ef       ldir20, 0xFF; 255<br />        {<br />                a = 0x0000;                     //inicjalizacja zmiennej a = 0b 0000 0000 0000 0000<br />                f1();                           //wywołanie funkcji f1 - a = 0b 0000 0000 0000 0001<br />                a = (a &lt;&lt; 8);           //a = 0b 0000 0001 0000 0000<br />                a = (a &gt;&gt; 4);           //a = 0b 0000 0000 0001 0000<br />                PORTB = ~a;                     //negacja bitowa zmiennej a = 0b 1111 1111 1110 1111<br />  8a:58 bb       out0x18, r21; 24<br />  8c:80 e1       ldir24, 0x10; 16<br />  8e:97 e2       ldir25, 0x27; 39<br />  90:f9 01       movwr30, r18<br />  92:31 97       sbiwr30, 0x01; 1<br />  94:f1 f7       brne.-4      ; 0x92 &lt;main+0x16&gt;<br />__ticks = (uint16_t) (__ms * 10.0);<br />while(__ticks)<br />{<br />// wait 1/10 ms<br />_delay_loop_2(((F_CPU) / 4e3) / 10);<br />__ticks --;<br />  96:01 97       sbiwr24, 0x01; 1<br />__ticks = 1;<br />else if (__tmp &gt; 65535)<br />{<br />//__ticks = requested delay in 1/10 ms<br />__ticks = (uint16_t) (__ms * 10.0);<br />while(__ticks)<br />  98:d9 f7       brne.-10     ; 0x90 &lt;main+0x14&gt;<br />                                                        //częsc młodsza zmiennej 'a' wysłana na Port B = 0b 1110 1111<br />                                                        //i tu jest problem bo jest: Port B = 0b 1111 1111 ?????<br />                _delay_ms(1000);        //utrzymanie stanu portu przez 1 sec<br />                PORTB = 0xff;           //wysłanie 0xff na port B<br />  9a:48 bb       out0x18, r20; 24<br />  9c:80 e1       ldir24, 0x10; 16<br />  9e:97 e2       ldir25, 0x27; 39<br />  a0:f9 01       movwr30, r18<br />  a2:31 97       sbiwr30, 0x01; 1<br />  a4:f1 f7       brne.-4      ; 0xa2 &lt;main+0x26&gt;<br />{<br />// wait 1/10 ms<br />_delay_loop_2(((F_CPU) / 4e3) / 10);<br />__ticks --;<br />  a6:01 97       sbiwr24, 0x01; 1<br />__ticks = 1;<br />else if (__tmp &gt; 65535)<br />{<br />//__ticks = requested delay in 1/10 ms<br />__ticks = (uint16_t) (__ms * 10.0);<br />while(__ticks)<br />  a8:d9 f7       brne.-10     ; 0xa0 &lt;main+0x24&gt;<br />  aa:ef cf       rjmp.-34     ; 0x8a &lt;main+0xe&gt;[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Nie chce mi się nawet rozpatrywać dlaczego stary symulgator robi taką kichę - szkoda wręcz pary na analizę takich wykopalisk <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />no ale zagadka poniekąd się rozwiązała - czyli jeśli symulgator robi takiego babola to ok elvis miał rację <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ale ja nie przypuszczałbym nawet że można to próbować robić w symulgatorze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... nie wiem - czochra mnie symulgator<br /><br />-------------------<br /><br />autorowi wątku polecam<br /><br />1. korzystanie z najnowszych narzędzi<br />2. aktualizacje<br />3. wywalenie symulgatorów i zabawę w prawdziwe procki i programowanie<br /><br />bo zabawa na symulatorach to jak lizanie lizaka ale w papierku <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 mar 2017, o 00:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-14T19:49:54+01:00</updated>
<published>2017-03-14T19:49:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184825#p184825</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184825#p184825"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184825#p184825"><![CDATA[
Nie jestem ekspertem w asemblerze avr, ale moim zdaniem mamy przykład błędu kompilatora.<br />Niejako analizujac od końca:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">                PORTB = ~a;                     //negacja bitowa zmiennej a = 0b 1111 1111 1110 1111<br />  be:   80 95           com     r24<br />  c0:   88 bb           out     0x18, r24       ; 24</div><br />Czyli wynik (zmienna a) jest w rejestrze r24. Patrzymy trochę wyżej:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">                a = (a &gt;&gt; 4);           //a = 0b 0000 0000 0001 0000<br />  b2:   ce 01           movw    r24, r28<br />  b4:   24 e0           ldi     r18, 0x04       ; 4<br />  b6:   96 95           lsr     r25<br />  b8:   87 95           ror     r24<br />  ba:   2a 95           dec     r18<br />  bc:   e1 f7           brne    .-8             ; 0xb6 &lt;main+0x26&gt;</div><br />Przesunięcie o 4 w prawo wygląda ok, wartość zmiennej na początku była w parze rejestrów r28:r29<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">  ae:   a0 e0           ldi     r26, 0x00       ; 0<br />  b0:   ed 01           movw    r28, r26</div><br />Tutaj jest ciekawie. Do r28 wstawiamy 0, to jest w porządku, ale co jest w r29? Chyba coś kompilatorowi uciekło...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 14 mar 2017, o 19:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hbtomek]]></name></author>
<updated>2017-03-11T23:55:29+01:00</updated>
<published>2017-03-11T23:55:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184695#p184695</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184695#p184695"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184695#p184695"><![CDATA[
Witam<br />Na początku dziękuję za tak żywe zaangażowanie i za, mam nadzieję, pozytywne emocje..<br />Do rzeczy.<br />Pracuję na:<br />&quot; AVR Studio  <br />GUI Version4, 19, 0, 730<br />AVR Simulator1, 0, 2, 1<br />ATmega32232<br /><br />Operating System<br />Major6<br />Minor2<br />PlatformID2<br />Build9200<br /><br /><br />Plugins:<br /><br />AvrPluginAvrAsmObject1, 0, 0, 48<br />AvrPluginavrgccplugin1, 0, 0, 11<br />Stk500Dll1, 0, 1, 16 &quot;<br /><br /> - to jest kopia całości z &quot;wersja AVR STUDIO&quot;.<br />Kompilator: AVRGCC z pakietu WinAVR-20100110.<br /><br /><br /><br />Do odpowiedzi dołączam zrzuty ekranów z oknami konfiguracji oraz  plik .lss z zamieszczonego programiku.<br /><br />Jeszcze jedno spostrzeżenie odnośnie niedziałania/działania programiku.<br />Gdy umieszczam instrukcję _delay_us(1) po instrukcji  a = (a &lt;&lt; 8); (linia 18)  , to program działa poprawnie(???).<br />Odnośnie możliwości błędów w połączeniach układu - raczej wykluczam. Działanie sprawdzałem na dwóch różnych układach. <br />Literówki - też raczej nie.  <br />Pozdrawiam<br /><br /><a href="https://obrazkiforum.atnel.pl/16648/73a8363d0768b1c6efa12f0b5f11847d.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/16648/73a8363d0768b1c6efa12f0b5f11847d.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/16648/6c4c7f70a5873c1b677aad31496190c7.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/16648/6c4c7f70a5873c1b677aad31496190c7.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/16648/6d598ca7e913ad78869f8f029f055c44.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/16648/6d598ca7e913ad78869f8f029f055c44.png" alt="Obrazek" /></a><br /><br />[syntax=asm]test1.elf:     file format elf32-avr<br /><br />Sections:<br />Idx Name          Size      VMA       LMA       File off  Algn<br />  0 .text         000000ee  00000000  00000000  00000074  2**1<br />                  CONTENTS, ALLOC, LOAD, READONLY, CODE<br />  1 .bss          00000002  00800060  00800060  00000162  2**0<br />                  ALLOC<br />  2 .stab         000006cc  00000000  00000000  00000164  2**2<br />                  CONTENTS, READONLY, DEBUGGING<br />  3 .stabstr      00000085  00000000  00000000  00000830  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  4 .debug_aranges 00000020  00000000  00000000  000008b5  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  5 .debug_pubnames 00000028  00000000  00000000  000008d5  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  6 .debug_info   000001c9  00000000  00000000  000008fd  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  7 .debug_abbrev 0000013f  00000000  00000000  00000ac6  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  8 .debug_line   000001c9  00000000  00000000  00000c05  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br />  9 .debug_frame  00000030  00000000  00000000  00000dd0  2**2<br />                  CONTENTS, READONLY, DEBUGGING<br /> 10 .debug_str    000000d7  00000000  00000000  00000e00  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br /> 11 .debug_pubtypes 00000038  00000000  00000000  00000ed7  2**0<br />                  CONTENTS, READONLY, DEBUGGING<br /><br />Disassembly of section .text:<br /><br />00000000 &lt;__vectors&gt;:<br />   0:0c 94 2a 00 jmp0x54; 0x54 &lt;__ctors_end&gt;<br />   4:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />   8:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />   c:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  10:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  14:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  18:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  1c:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  20:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  24:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  28:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  2c:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  30:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  34:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  38:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  3c:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  40:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  44:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  48:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  4c:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br />  50:0c 94 3c 00 jmp0x78; 0x78 &lt;__bad_interrupt&gt;<br /><br />00000054 &lt;__ctors_end&gt;:<br />  54:11 24       eorr1, r1<br />  56:1f be       out0x3f, r1; 63<br />  58:cf e5       ldir28, 0x5F; 95<br />  5a:d8 e0       ldir29, 0x08; 8<br />  5c:de bf       out0x3e, r29; 62<br />  5e:cd bf       out0x3d, r28; 61<br /><br />00000060 &lt;__do_clear_bss&gt;:<br />  60:10 e0       ldir17, 0x00; 0<br />  62:a0 e6       ldir26, 0x60; 96<br />  64:b0 e0       ldir27, 0x00; 0<br />  66:01 c0       rjmp.+2      ; 0x6a &lt;.do_clear_bss_start&gt;<br /><br />00000068 &lt;.do_clear_bss_loop&gt;:<br />  68:1d 92       stX+, r1<br /><br />0000006a &lt;.do_clear_bss_start&gt;:<br />  6a:a2 36       cpir26, 0x62; 98<br />  6c:b1 07       cpcr27, r17<br />  6e:e1 f7       brne.-8      ; 0x68 &lt;.do_clear_bss_loop&gt;<br />  70:0e 94 48 00 call0x90; 0x90 &lt;main&gt;<br />  74:0c 94 75 00 jmp0xea; 0xea &lt;_exit&gt;<br /><br />00000078 &lt;__bad_interrupt&gt;:<br />  78:0c 94 00 00 jmp0; 0x0 &lt;__vectors&gt;<br /><br />0000007c &lt;f1&gt;:<br /><br />//-----------------------------------------------------------<br />//definicja funkcji f1<br />void f1(void)<br />{<br /> a = a | 0x0001;//na bicie zerowym zmiennej 'a' ustawione '1'<br />  7c:80 91 60 00 ldsr24, 0x0060<br />  80:90 91 61 00 ldsr25, 0x0061<br />  84:81 60       orir24, 0x01; 1<br />  86:90 93 61 00 sts0x0061, r25<br />  8a:80 93 60 00 sts0x0060, r24<br />}<br />  8e:08 95       ret<br /><br />00000090 &lt;main&gt;:<br />uint16_t a ;//definicja zm. a<br /><br />void f1(void);//deklaracja funkcji f1<br /><br />int main(void)<br />{<br />  90:ef 92       pushr14<br />  92:ff 92       pushr15<br />  94:1f 93       pushr17<br />  96:cf 93       pushr28<br />  98:df 93       pushr29<br />DDRB = 0xff;//port B jako wyjscie<br />  9a:8f ef       ldir24, 0xFF; 255<br />  9c:87 bb       out0x17, r24; 23<br />PORTB = 0xff;//ustawienie pinów portu jako'1'<br />  9e:88 bb       out0x18, r24; 24<br />a = (a &gt;&gt; 4);//a = 0b 0000 0000 0001 0000<br />PORTB = ~a;//negacja bitowa zmiennej a = 0b 1111 1111 1110 1111<br />//częsc młodsza zmiennej 'a' wysłana na Port B = 0b 1110 1111<br />//i tu jest problem bo jest: Port B = 0b 1111 1111 ?????<br />_delay_ms(1000);//utrzymanie stanu portu przez 1 sec<br />PORTB = 0xff;//wysłanie 0xff na port B<br />  a0:1f ef       ldir17, 0xFF; 255<br />DDRB = 0xff;//port B jako wyjscie<br />PORTB = 0xff;//ustawienie pinów portu jako'1'<br /><br />while(1)<br />{<br />a = 0x0000;//inicjalizacja zmiennej a = 0b 0000 0000 0000 0000<br />  a2:10 92 61 00 sts0x0061, r1<br />  a6:10 92 60 00 sts0x0060, r1<br />f1();//wywołanie funkcji f1 - a = 0b 0000 0000 0000 0001<br />  aa:0e 94 3e 00 call0x7c; 0x7c &lt;f1&gt;<br />a = (a &lt;&lt; 8);//a = 0b 0000 0001 0000 0000<br />  ae:a0 e0       ldir26, 0x00; 0<br />  b0:ed 01       movwr28, r26<br /><br />a = (a &gt;&gt; 4);//a = 0b 0000 0000 0001 0000<br />  b2:ce 01       movwr24, r28<br />  b4:24 e0       ldir18, 0x04; 4<br />  b6:96 95       lsrr25<br />  b8:87 95       rorr24<br />  ba:2a 95       decr18<br />  bc:e1 f7       brne.-8      ; 0xb6 &lt;main+0x26&gt;<br />PORTB = ~a;//negacja bitowa zmiennej a = 0b 1111 1111 1110 1111<br />  be:80 95       comr24<br />  c0:88 bb       out0x18, r24; 24<br />#else<br />//round up by default<br />__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));<br />#endif<br /><br />__builtin_avr_delay_cycles(__ticks_dc);<br />  c2:8f ef       ldir24, 0xFF; 255<br />  c4:93 ed       ldir25, 0xD3; 211<br />  c6:a0 e3       ldir26, 0x30; 48<br />  c8:81 50       subir24, 0x01; 1<br />  ca:90 40       sbcir25, 0x00; 0<br />  cc:a0 40       sbcir26, 0x00; 0<br />  ce:e1 f7       brne.-8      ; 0xc8 &lt;main+0x38&gt;<br />  d0:00 c0       rjmp.+0      ; 0xd2 &lt;main+0x42&gt;<br />  d2:00 00       nop<br />//częsc młodsza zmiennej 'a' wysłana na Port B = 0b 1110 1111<br />//i tu jest problem bo jest: Port B = 0b 1111 1111 ?????<br />_delay_ms(1000);//utrzymanie stanu portu przez 1 sec<br />PORTB = 0xff;//wysłanie 0xff na port B<br />  d4:18 bb       out0x18, r17; 24<br />  d6:8f ef       ldir24, 0xFF; 255<br />  d8:93 ed       ldir25, 0xD3; 211<br />  da:a0 e3       ldir26, 0x30; 48<br />  dc:81 50       subir24, 0x01; 1<br />  de:90 40       sbcir25, 0x00; 0<br />  e0:a0 40       sbcir26, 0x00; 0<br />  e2:e1 f7       brne.-8      ; 0xdc &lt;main+0x4c&gt;<br />  e4:00 c0       rjmp.+0      ; 0xe6 &lt;main+0x56&gt;<br />  e6:00 00       nop<br />  e8:dc cf       rjmp.-72     ; 0xa2 &lt;main+0x12&gt;<br /><br />000000ea &lt;_exit&gt;:<br />  ea:f8 94       cli<br /><br />000000ec &lt;__stop_program&gt;:<br />  ec:ff cf       rjmp.-2      ; 0xec &lt;__stop_program&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16648">hbtomek</a> — 11 mar 2017, o 23:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T16:59:32+01:00</updated>
<published>2017-03-11T16:59:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184649#p184649</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184649#p184649"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184649#p184649"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Nie ma sensu ciągnąć tej dyskusji. Wróćmy do oryginalnego problemu - chyba mamy inne wyobrażenia na temat wykorzystywanych narzędzi i lepiej niech tak zostanie.<br /></div><br />Też tak myślę, ja nie mam na siłę zamiaru przekonywać do swoich racji ... więc proszę o tolerancję w drugą stronę a wszystko będzie dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Teraz niech coś podpowie autor wątku w końcu <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> — 11 mar 2017, o 16:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T15:34:50+01:00</updated>
<published>2017-03-11T15:34:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184642#p184642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184642#p184642"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184642#p184642"><![CDATA[
Nie ma sensu ciągnąć tej dyskusji. Wróćmy do oryginalnego problemu - chyba mamy inne wyobrażenia na temat wykorzystywanych narzędzi i lepiej niech tak zostanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 15:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T15:32:44+01:00</updated>
<published>2017-03-11T15:32:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184641#p184641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184641#p184641"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184641#p184641"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Ja tam bym nie wiedział.<br /></div><br />No i tym się różnimy i też dlatego ja właśnie preferuję dla początkujących Eclipse bo jest mi najłatwiej i najszybciej pomagać - bo znam na pamięć wiele rzeczy. <br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Samo wykorzystanie IDE nic nie ma wspólnego z kompilatorem, ani tym bardziej jego ustawieniami...<br /></div><br />Ma wspólnego - na dzień dobry świeżo zainstalowane Atmel Studio 7 najnowsze różni się kilkoma drobiazgami domyślnej konfiguracji od (hmmm może nie od Eclipsa) ile od plugina AVR który dodawany jest do Eclipsa - więc proszę, nie opowiadaj że nie ma nic wspólnego jeśli być może nie masz takiego porównania ... <br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Używałem Eclipse z gcc, kilkoma wersjami kompilatorów skrośnych,<br /></div><br />to właśnie nie ma dużego znaczenia w tym przypadku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 mar 2017, o 15:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T15:21:16+01:00</updated>
<published>2017-03-11T15:21:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184638#p184638</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184638#p184638"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184638#p184638"><![CDATA[
Ja tam bym nie wiedział... Używałem Eclipse z gcc, kilkoma wersjami kompilatorów skrośnych, VC++. Teraz używam, chociaż nie lubię Eclipse z gcc, ale do budowania scons. Samo wykorzystanie IDE nic nie ma wspólnego z kompilatorem, ani tym bardziej jego ustawieniami... Stąd było moje sprostowanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 15:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T15:16:57+01:00</updated>
<published>2017-03-11T15:16:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184637#p184637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184637#p184637"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184637#p184637"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />PS. Eclipse to edytor (IDE) nie kompilator. Przepraszam, ale nie mogłem nie sprostować...<br /></div><br />Oczywiście że IDE ale jeśli ja wiem jakie IDE stosuje początkujący to wiem czego mogę się spodziewać po domyślnych ustawieniach kompilatora ... i o to mi chodziło, a nie o próbę twierdzenia, że od edytora może zależeć wynik kompilacji<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">Jazio napisał(a):</div><div class="quotecontent"><br />Ja testowałem u siebie na AT v.3.5.1.1671 na wszytskich stopniach optymalizacji i za każdym razem, mimo różnic w kodzie wynikowym, działanie finalne było prawidłowe.<br /></div><br />No ja podobnie - wprawdzie pod Eclipsem albo MkClipsem ale z pięcioma różnymi wersjami kompilatora<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Myślę, że dlatego co najmniej kilka osób zaintrygowała ta zagadka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo albo ..... albo się okaże, jakiś mega banalny błąd , czeska literówka itp ... ja obstawiam to drugie jak mówiłem - ale z pewnym dreszczykiem emocji - ciekawości <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> — 11 mar 2017, o 15:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T14:59:43+01:00</updated>
<published>2017-03-11T14:59:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184635#p184635</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184635#p184635"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184635#p184635"><![CDATA[
Więc wracając do problemu - potrzebujemy &quot;zreprodukować&quot; błąd (nie wiem jak to się po polsku poprawnie mówi/pisze). Do tego przydałoby się wiedzieć jaka dokładnie jest wersja kompilatora oraz ustawienia. Plik wynikowy też byłoby fajnie zobaczyć - hbtomek mógłbyś udostępnić odpowiednie informacje?<br /><br />PS. Eclipse to edytor (IDE) nie kompilator. Przepraszam, ale nie mogłem nie sprostować...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 14:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T14:49:42+01:00</updated>
<published>2017-03-11T14:49:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184632#p184632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184632#p184632"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184632#p184632"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Jeśli dodanie lub usunięcie słówka volatile ma wpływ na poprawność programu, istnieje duża szansa że jest to problem z kompilatorem, albo raczej z optymalizatorem<br /></div><br />Ale widzisz - to jest CAŁKIEM inne podejście - niż to co zaprezentowałeś wcześniej<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Ten problem na tyle mnie zaciekawił,<br /></div><br />Mnie też zawsze ciekawią takie rzeczy choćby dla samej zasady - lubię dochodzić sedna sprawy wtedy, ale tu potrzeba więcej informacji i jeśli masz wiedzę na temat asemblera a widać, że masz i to nie małą - to wręcz fajnie mogłoby być próbować wspólnie rozwikłać taką zagadkę - ja tak to traktuję<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Tym bardziej było mi przykro, że na dzień dobry usłyszałem tak długą i niewiele wnoszącą wypowiedź Szefa tego przybytku.<br /></div><br />Wiele wnoszącą, tylko skoro się dopiero zarejestrowałeś na tym forum to pewnie nie znasz zasad, że pomagamy i nie wykłócamy się o to który procesor jest lepszy a który gorszy bo to zawsze prowadzi do kompletnie bzdurnych kłótni na każdym forum ... już nie mówiąc że KOMPLETNIE nic nie wnosi do dyskusji na forum ... Liczę na to, że jeśli poznasz i zgodzisz się z takimi prostymi i niepisanymi zasadami to być może zacumujesz na dłużej z nami ....<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Nie wiem o kim mowa odnośnie początkujących, ale obawiam się że nie zaliczam się do tej grupy.<br /></div><br />Z ogółu twojej pierwszej wypowiedzi właśnie tylko taki wniosek można było wyciągnąć, chociaż nie ukrywam, że też widać, na pierwszy rzut oka po twoich wypowiedziach że raczej dobrze znasz asembler więc nie jesteś na początku tej drogi i ja tego nie oceniam. Jeśli tobie to pomoże to proszę zapamiętaj, że ja jestem jak najbardziej początkujący i dopiero wszystkiego się uczę - i nie przeszkadza mi ta świadomość w niczym, że jestem początkujący - ok? Jeśli tobie to przeszkadza i czujesz się urażony moją wypowiedzią to przepraszam cię najmocniej.<br /><br />wracając do meritum<br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Optymalizator na avr ma pełne ręce roboty próbując zoptymalizować kod pracujący na liczbach 16- czy 32- bitowych.<br /></div><br />To jest jasne jak słońce, że ma pełne ręce roboty - toż to tylko 8-bitowa jednostka i co w tym dziwnego, ale nie zgodzę się z twoim podejściem, że TAK, jeszcze raz PODKREŚLAM mega proste operacje należy zaraz podejrzewać o błędy kompilatora. Nawet jestem w stanie się założyć o dobry &quot;sok jabłkowy&quot; (jeśli wiesz o jakim soku mówię), że to nie wina kompilatora - ale oczywiście mam tę świadomość, że gdzieś na końcu dochodzenia do sedna tej zagadki mogę przegrać ... co z tego? Jej wyjaśnienie pozwoli zapewne i mnie się wiele nauczyć nowych rzeczy albo dowiedzieć się co jeszcze może początkująca osoba (mówię ew o autorze wątku i mam nadzieję, że on się za to nie obrazi) może wymyśleć czy jaki błąd popełnić.<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />W przypadku innych układów tak drastyczna optymalizacja nie byłaby po prostu konieczna.<br /></div><br />A czy wziąłeś pod uwagę fakt, że kolega autor mógł chociażby przez jakiś przypadek włączyć sobie inny stopień optymalizacji w C ? albo też nie wiemy z jakimi argumentami leci u niego w ogóle kompilacja. Gdybym był pewien, że kompiluje to pod Eclipse to więcej mógłbym się domyślić ale nie wiem. Może robi to pod Atmel Studio ?<br /><br />I właśnie zasadne jest jedno z twoich wcześniejszych pytań do autora wątku - jaką ma wersję kompilatora, bo pierwsze co bym zrobił to zaraz bym go sobie pobrał i zajrzał również podobnie jak ty do pliku *.lss po kompilacji<br /><br />Póki co sprawdziłem na chyba 5 wersjach kompilatora które mam pod ręką i za każdym razem wszystko jest dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i oczywiście zgodnie z tym co wszem i wobec wiadomo - nie trzeba w przypadku takiego kodu stosować volatile<br /><br />Podsumowując - elvis - zamiast wciąż się boczyć na właściciela czy tam szefa przybytku, postaraj się zrozumieć jak mówiłem proste zasady i uważam, że może być fajnie .... ja niczego więcej nie oczekuję na tym forum<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Jazio napisał(a):</div><div class="quotecontent"><br />Kol. Mirek ma taki charakter w wypowiedziach, że czasami &quot;może w pięty wchodzić&quot; , trzeba przywyknąć<br /></div><br />Kol. Mirek ma pewne zasady - bardzo proste, których broniłem, bronię i będę bronił i już ... <br /><br />Ale jeśli czasem coś mnie poniesie i popełnię błąd to potrafię też przeprosić i to oficjalnie i nie raz to robiłem ... więc nie jest chyba tak źle<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 mar 2017, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T14:11:32+01:00</updated>
<published>2017-03-11T14:11:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184627#p184627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184627#p184627"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184627#p184627"><![CDATA[
Jeśli dodanie lub usunięcie słówka volatile ma wpływ na poprawność programu, istnieje duża szansa że jest to problem z kompilatorem, albo raczej z optymalizatorem. Oczywiście może być zupełnie inny powód, ale jeśli tylko ta zmiana daje opisywane rezultaty, moim zdaniem uzasadnione jest poszukiwanie problemu po stronie kompilatora. <br />Ten problem na tyle mnie zaciekawił, że postanowiłem założyć konto na tym portalu. Tym bardziej było mi przykro, że na dzień dobry usłyszałem tak długą i niewiele wnoszącą wypowiedź Szefa tego przybytku. Nie wiem o kim mowa odnośnie początkujących, ale obawiam się że nie zaliczam się do tej grupy. Tego co napisałem proszę nie traktować jako komentarz nawiedzonego amatora, ale raczej skrót myślowy. Optymalizator na avr ma pełne ręce roboty próbując zoptymalizować kod pracujący na liczbach 16- czy 32- bitowych. Ponieważ optymalizacja wbrew pozorom często prowadzi do wprowadzania błędów, więc to może być przyczyna. W przypadku innych układów tak drastyczna optymalizacja nie byłaby po prostu konieczna.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T13:43:44+01:00</updated>
<published>2017-03-11T13:43:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184622#p184622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184622#p184622"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184622#p184622"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Jak rozumiem trafiłem w czuły punkt właściciela forum.<br /></div><br />Nie w czuły punkt tylko w bezsensowne podejście, że jak tylko coś się stanie czego początkujący nie rozumie, to od razu część z nich podobnie jak kolega krzyczy w niebo głosy o winie kompilatora, procesora, tranzystora ... wszystkiego tylko nie tego że błąd można robić gdzieś samemu. Z takimi zachowaniami walczę od początku i uczę ludzi innego podejście - stąd cały ten wywód określiłem jako bzdurny ... to tyle. Mało ma to wspólnego z jakimś czułym punktem właściciela <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Zamiast tego tak jak mówisz - teraz sporo rozsądniej - warto dopytać, i ew pomóc szukać problemu lub rozwiązania - bo przypadek na tyle ciekawy że aż sam chciałbym poznać rozwiązanie ... ale nie po to aby udowadniać swoje racje, tylko po to aby w przyszłości w podobnej sytuacji móc szybciej pomóc innym - to jest moją ideą panie kolego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 mar 2017, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T12:47:56+01:00</updated>
<published>2017-03-11T12:47:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184612#p184612</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184612#p184612"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184612#p184612"><![CDATA[
To przygadał jeden ignorant drugiemu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jak rozumiem trafiłem w czuły punkt właściciela forum. Nie chciałem nikogo urazić, a przeprosiny przyjmuję - więc może nie bawmy się w uszczypliwości, tylko spróbujmy wyjaśnić - poniekąd ciekawe zachowanie programu.<br />Wspomniałem o 8-bitowcach nie ze względu na ignorancję, czy chęć wykazanie wyższości jednych układów nad innymi. Po prostu mały avr nie posiada niektórych instrukcji i kompilator musi wygenerować dłuższy program, żeby zrealizować to co 32-bitowcowi zajmuje jedną operację. To wcale nie jest zaleta, ani wada - po prostu kompilator ma więcej pracy, więc i większe ryzyko uzyskania błędnego kodu wynikowego. Oczywiście na ogół kompilatory działają poprawnie, dlatego ich używamy.<br />Kod wynikowy działa identycznie z wpisanym, ale zawiera inne operacje. Przykładowo zamiast przesunięcia o 8 bitów w lewo, mamy kopiowanie dolnego bajtu do górnego oraz zerowanie dolnego. Natomiast przesuwanie o 4 bity realizowane jest jako pętla i przesunięcia o 1 bit w lewo - a w innych wersjach kompilatora jako bardzo ciekawa sekwencja operacji bitowych, ale nie przesunięć. <br />Tak jak napisałem, może zamiast skomplikowanych przesunięć lepiej byłoby uprościć program? Ale na początek warto byłoby ustalić dlaczego dodanie / usunięcie volatile ma wpływ na działanie programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 12:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-11T12:26:53+01:00</updated>
<published>2017-03-11T12:26:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184610#p184610</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184610#p184610"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184610#p184610"><![CDATA[
<div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Po pierwsze używasz liczb 16-bitowych,<br /></div><br />Ło matko - a to kolega jak rozumiem, na prockach 8-bitowych używa liczb tylko 8-bitowych? Na prockach 16-bitowych tylko liczb 16-bitowych, zaś na prockach 32-bitowych tylko liczb 32-bitowych ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Sorki ale takie wrażenie można odnieść już po tej części wypowiedzi<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />po drugie przesunięć o wiele bitów.<br /></div><br />Ło żesz w mordkę, czy mam rozumieć, że po wielu latach coś się zmieniło w zakresie programowania i lepiej jest używać przesunięć tylko o kilka bitów zamiast wielu bitów ? Poważnie ? to jest problem dla 8-bitowca ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Panie kochany - 4-bitowiec sobie by z tym świetnie poradził a nawet 1-bitowy mikrokontroler <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a co dopiero 8-bitowy ...<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Optymalizator stara się zmniejszyć liczbę koniecznych instrukcji i jeśli wykona to źle, program chociaż napisany poprawnie, może działać błędnie.<br /></div><br />No no - to blady strach powinien paść na wszystkich którzy używają 8-bitowców - co to też te optymalizatory wyprawiają ? No włosy dęba stają na głowie ! ... nie do wiary .... eeeeeh takie błędy - i cóż my programiści mamy począć ? a szczególnie na 8-bitowchach ...<br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Oczywiście kompilatory na układy 32-bitowe też mogą mieć błędy, ale wspomniany kod nie wymagałby karkołomnej optymalizacji.<br /></div><br />Qurczę - jeszcze lepiej - no to nawet nie ma co się przesiadać na 32-bitowe procki - skoro też wszystkie kompilatory przy TAK POWAŻNYCH jak kolega twierdzi i BARDZO SKOMPLIKOWANYCH operacjach żeby nie powiedzieć KARKOŁOMNYCH - mylą się .... no to chyba trza porzucić w ogóle programowanie - toż to zgroza - same błędy kompilatorów ... ojo jooooj .... ło la boga !<br /><br />Teraz już na poważnie<br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />Najlepiej byłoby sprawdzić, jaki kod maszynowy jest generowany przez kompilator. Testowałem na wersji 4.8.1 avr-gcc i program wynikowy wyglądał poprawnie, zarówno z volatile, jak i bez.<br /></div><br />I od tego warto zaczynać - zamiast wypisywać takie steki bzdur jak wcześniej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Sorki ale już dawno nie widziałem tak karkołomnych wyjaśnień problemu - żeby jak się czegoś nie wie - to zwalać już nie tylko na kompilator ale i na 8-bitowce a do tego - jeszcze i 32-bitowe kompilatory batem przejechać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Gdyby kompilatory miały się mylić w TAK PODSTAWOWYCH - zaznaczam TAK PODSTAWOWYCH operacjach .... to lepiej byłoby wyrzucić je wszystkie do kosza i pisać w ogóle od razu w kodach HEX nawet bez używania asemblera <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> wtedy byłoby najpewniej ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">elvis napisał(a):</div><div class="quotecontent"><br />O zmianie mikrokontrolera nawet nie wspomnę, ale może w przyszłości też warto.<br /></div><br />Panie Panie no ale po co ? skoro 32-bitowe kompilatory też zawierają błędy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... wszędzie błędy, same błędy ... błąd błędem pogania - wszyscy robią dokoła źle tylko nie ja <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />No istny popis (przepraszam kolegę za określenie) ignorancji <br /><br />zamiast próbować wyjaśnić problem to popisówka o tym, że biedny czarny, słaby, wątły chudy 8-bituś ze spierniczonym kompilatorem, nie potrafi nawet byle przesunięć bitowych zrobić - więc wyrzucić trzeba go do kosza na śmieci i wziąć 32-bitowca - wtedy też będzie spierniczony kompilator ale może dzięki 32-bitom zdarzy się kompilatorowi mniej błędów przecież ... no ba! ... <br /><br />Sory za ten ton - ale na tym forum będę piętnował i pokazywał kompletny NONSENS takiego podejścia a szczególnie brednie o wyższości jednych mikrokontrolerów nad drugimi i nie ważne o jakie rodziny chodzi czy 8bit vs 32-bit, czy Microchip vs Atmel chociaż teraz to już jedno <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czy STM vs coś tam coś tam. Od takich dywagacji masz pan inne fora ok ? i tam zapraszam do dyskusji na takie tematy jeśli tolerują.<br /><br />---------------------------------------------------------<br /><br />do autora wątku - OCZYWIŚCIE że musi działać bez volatile dla zmiennej a, bo nawet tak jak czarnowidz kompilatorów wyżej powiedział - kod się kompiluje poprawnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bez volatile i działa poprawnie<br /><br />dlatego szukałbym dalej rozwiązania tej zagadki bo pewnie gdzieś popełniasz błąd - ale jaki ? któż to wie ? <br /><br />nie wiemy właśnie ani z jakiej wersji kompilatora korzystasz, ani z jakich w nim przełączników kompilacji, ustawień - choćby ustawień samej optymalizacji - czy np -Os ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 mar 2017, o 12:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elvis]]></name></author>
<updated>2017-03-11T09:32:06+01:00</updated>
<published>2017-03-11T09:32:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184597#p184597</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184597#p184597"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184597#p184597"><![CDATA[
To może być błąd kompilatora. W przypadku mikrokontrolerów 8-bitowych operacje, które wykonujesz są dość kosztowne. Po pierwsze używasz liczb 16-bitowych, po drugie przesunięć o wiele bitów. Optymalizator stara się zmniejszyć liczbę koniecznych instrukcji i jeśli wykona to źle, program chociaż napisany poprawnie, może działać błędnie. Niestety taka jest cena za wykorzystywanie archaicznych układów. Oczywiście kompilatory na układy 32-bitowe też mogą mieć błędy, ale wspomniany kod nie wymagałby karkołomnej optymalizacji.<br />Najlepiej byłoby sprawdzić, jaki kod maszynowy jest generowany przez kompilator. Testowałem na wersji 4.8.1 avr-gcc i program wynikowy wyglądał poprawnie, zarówno z <strong>volatile</strong>, jak i bez. <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">// a = (a &lt;&lt; 8);<br />  6e:   20 91 60 00     lds     r18, 0x0060<br />  72:   d2 2f           mov     r29, r18<br />  74:   80 e0           ldi     r24, 0x00       ; 0<br />  76:   c8 2f           mov     r28, r24<br />  78:   ce 01           movw    r24, r28<br />// a = (a &gt;&gt; 4);<br />7a:   24 e0           ldi     r18, 0x04       ; 4<br />  7c:   96 95           lsr     r25<br />  7e:   87 95           ror     r24<br />  80:   2a 95           dec     r18<br />  82:   e1 f7           brne    .-8             ; 0x7c &lt;main+0x20&gt;<br />  84:   90 93 61 00     sts     0x0061, r25<br />  88:   80 93 60 00     sts     0x0060, r24<br /></div><br />Inne wersje kompilatora dają zupełnie inny kod. Przykładowo gcc 4.5.3 dostępne online w serwisie: <!-- m --><a class="postlink" href="https://godbolt.org" >https://godbolt.org</a><!-- m --> używa bardzo ciekawej sztuczki do unikania przesunięć.<br />Napisz której wersji kompilatora używasz, sprawdź jak wygląda generowany kod. Poza tym przemyśl czy nie warto zmienić programu, może przesunięcia o 8 i 4 bity nie są niezbędne? O zmianie mikrokontrolera nawet nie wspomnę, ale może w przyszłości też warto.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16665">elvis</a> — 11 mar 2017, o 09:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HomoChemicus]]></name></author>
<updated>2017-03-10T13:24:08+01:00</updated>
<published>2017-03-10T13:24:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184537#p184537</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184537#p184537"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184537#p184537"><![CDATA[
Przekaż a jako argument funkcji i po sprawie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10470">HomoChemicus</a> — 10 mar 2017, o 13:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hbtomek]]></name></author>
<updated>2017-03-10T11:43:47+01:00</updated>
<published>2017-03-10T11:43:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184530#p184530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184530#p184530"/>
<title type="html"><![CDATA[Re: Problem z C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17832&amp;p=184530#p184530"><![CDATA[
Dziękuję wszystkim za pomoc.<br />Daro69 ma rację z 'volatile' przed 'a'. Dzieki.<br />Programik działa też właściwie, gdy WYŁĄCZĘ optymalizację kodu.<br />Nie rozumiem tylko, dlaczego program nie działa z włączoną optymalizacją kodu bez 'volatile' przed zmienną 'a'. Program nie zawiera obsługi przerwań, czyli nie ma problemu ze współdzieleniem zasobów pamięci.??? Może ktoś to wytłumaczy?<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16648">hbtomek</a> — 10 mar 2017, o 11:43</p><hr />
]]></content>
</entry>
</feed>