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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-13T20:21:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2553&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-13T20:21:24+01:00</updated>
<published>2013-03-13T20:21:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30694#p30694</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30694#p30694"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30694#p30694"><![CDATA[
Wiesz jak ktoś chce się nauczyć C w 2-3 dni to zawsze będzie tak pisał jak ty wyżej <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Piszesz że w Bascomie to proste ???? sorki - znam Bascoma - i powiem ci że w Bascomie są o wiele lepsze metody dostępu do EEPROM niż te które opisałeś wyżej a jak widać też ich nie znasz - więc nie mów że w Bascomie jest prościej .... masakra<br /><br />W C jest prościej ale na pewno nie po kilku dniach nauki C ... no bez przesadyzmu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... a poza tym to widzę że lecisz jakby cię ktoś rozżarzonym prętem po plecach tłuk .... i nawet nie doczytasz np na moim blogu - nawet nie obejrzysz poradnika i to nomen - koci - omen właśnie akurat do EEPROM'a ....<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html" >http://mirekk36.blogspot.com/2012/11/av ... iazek.html</a><!-- m --><br /><br />dlatego na przyszłość proszę - jeśli chcesz się w &quot;ATNEL CLUB&quot; uczyć języka C ... to nie opowiadaj że C to masakra <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> że w Bascomie łatwiej. Bo jeśli tak jest - to może nie warto uczyć się tego C hmmm ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Ale ja jednak gorąco polecam ci C tylko troszkę więcej cierpliwości i po kolei ok ? <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> — 13 mar 2013, o 20:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-13T18:36:02+01:00</updated>
<published>2013-03-13T18:36:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30677#p30677</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30677#p30677"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30677#p30677"><![CDATA[
WItam<br />Faktycznie , masz racje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> i jest to opisane w niebieskiej ksiazce...<br /><br />Mam pytanie jak mozna w prosty sposob (niestety C wydaje sie niecoooo trudny) zapisac zmienna. np TRYB (z listingu wyzej) do eepromu pod dana komorke?<br />W bascomie to proste a ten C to tragedia:(<br /><br />Nie chce definiowac zmiennej od poczatku w Eepromie tylko definiuje zwykla zmienna TRYB (listing powyzej) a w danym momencie chca ja zapisac np. na pozycji nr 5 epromu.<br /><br />Dopisalem po prostu w main : &quot;eeprom_write_byte (5, tryb);&quot; i nawet dziala tzn po kompilacji i podejrzeniu epromu Attiny13 faktycznie pod pozycja 5 jest wartosc &quot;1&quot; zamiast typowego &quot;FF&quot;.<br />Oczywiscie dodalem na poczatku #include &lt;avr/eeprom.h&gt;<br />&quot;Niemniej eclipse wyrzuca warning passing argument 1 of '__eewr_byte_tn13' makes pointer from integer without a cast&quot;<br /><br />Wiec cos pewnie spierd..., znaczy sie zepsulem:) Zreszta w C byloby to za proste, tu jest wszystko masakrycznie skomplikowane <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 13 mar 2013, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-13T10:28:10+01:00</updated>
<published>2013-03-13T10:28:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30622#p30622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30622#p30622"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30622#p30622"><![CDATA[
Widzisz jakbyś pooglądał moje poradniki video do książek z bloga, chociażby ten:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/12/wskazniki-struktury-callbacki-jazda-bez.html" >http://mirekk36.blogspot.com/2012/12/ws ... a-bez.html</a><!-- m --><br /><br />to zobaczyłbyś że pisząc warunki opłaca się pisać tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( 1 == tryb ) ...</div><br /><br />a nie <br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( tryb == 1 ) ....</div><br /><br />to wtedy uniknąłbyś takich kwiatków jakie tu popełniasz w kodzie ... bo jak widzisz zamiast sprawdzać czy tryb jest np = 1 to ty robisz operację (tryb=1) .... a if analizuje wartość tego wyrażenia czyli wartość zmiennej tryb .... a taki warunek będzie ZAWSZE spełniony <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />gdybyś pisał<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( 1 == tryb ) ...</div> <br />to nie wyskoczyłby ci WARNING tylko BŁĄD od razu i mógłbyś zareagować<br /><br />ale po tym wszystkim widać, że twoim największym może kłopotem jest to że ignorujesz warningi .... a tymczasem powinieneś je traktować jak POWAŻNE BŁĘDY ..... zapamiętaj tę zasadę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 mar 2013, o 10:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-13T10:07:55+01:00</updated>
<published>2013-03-13T10:07:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30620#p30620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30620#p30620"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30620#p30620"><![CDATA[
kod Bascom ponizej - wychodzi 442 bajty.<br />Jesli uzyje w Bascomie 3 Ify zamiast select/case to objetosc kodu pozostaje ta sama.<br /><br />Pozniej sprawdze w C uzycie 3 Ifow zamiast select/case<br />Pozdrawiam<br />Slawek<br />---------------------------------------<br />[syntax=basic4gl]   <br /><br />$regfile = &quot;attiny13.dat&quot;                                   ' typ proca<br />$crystal = 9600000                                          'definiujemy z jakim taktowaniem będzie pracował<br />$hwstack = 32<br />$swstack = 18<br />$framesize = 8<br /><br /><br /><br />Dim Tryb As Byte<br />Tryb = 1<br /><br />Ddrb = 15<br />Portb = 16<br />Waitms 1<br /><br />S1 Alias Pinb.4<br />Led1 Alias Portb.0<br />Led2 Alias Portb.1<br /><br /><br />Do<br /><br /><br /><br />Select Case Tryb<br />Case 1 :<br /><br />While S1 = 1                                                'praca do czasu nacisniecia S1<br />Set Led1<br />Set Led2<br />Waitms 580<br />Reset Led1<br />Reset Led2<br />Waitms 580<br />Wend<br /><br />Waitms 20<br /><br />While S1 = 0                                                'praca do czasu zwolnienia S1<br />Wend<br /><br />Waitms 20<br /><br />Tryb = Tryb + 1<br /><br />Case 2 :<br />While S1 = 1                                                'praca do czasu nacisniecia S1<br />Set Led1<br />Waitms 80<br />Reset Led1<br />Waitms 80<br />Set Led1<br />Waitms 80<br />Reset Led1<br />Waitms 350<br /><br /><br />Set Led2<br />Waitms 80<br />Reset Led2<br />Waitms 80<br />Set Led2<br />Waitms 80<br />Reset Led2<br />Waitms 350<br />Wend<br /><br />Waitms 20<br /><br />While S1 = 0                                                'praca do czasu zwolnienia S1<br />Wend<br /><br />Waitms 20<br />Tryb = 3<br /><br /><br />Case 3 :<br />While S1 = 1                                                'praca do czasu nacisniecia S1<br />Set Led1<br />Waitms 80<br />Reset Led1<br />Waitms 80<br />Set Led1<br />Waitms 80<br />Reset Led1<br />Waitms 80<br />Set Led1<br />Waitms 80<br />Reset Led1<br />Waitms 100<br /><br /><br />Set Led2<br />Waitms 80<br />Reset Led2<br />Waitms 80<br />Set Led2<br />Waitms 80<br />Reset Led2<br />Waitms 80<br />Set Led2<br />Waitms 80<br />Reset Led2<br />Waitms 100<br />Wend<br /><br />Waitms 20<br /><br />While S1 = 0                                                'praca do czasu zwolnienia S1<br />Wend<br /><br />Waitms 20<br /><br />Tryb = 1<br /><br />End Select<br /><br />Loop<br /><br />End<br /><br />       [/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 16 minutach ]</span></strong><br /><br />Z ciekawosci zmienilem w C na 3 Ify, kod ciut mniejszy = 482 bajty.<br />Kod jak ponizej ale wyskoczyly mi 3 otrzezenia dotyczace linijek z Ifami<br />&quot;suggest parentheses around assignment used as truth value&quot; - linie24, 45,76<br />Czy cos namieszalem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ?<br /><br /><br />KOD:<br />[syntax=c]<br />/*<br /> * m ain.c<br /> *<br /> *  Created on: 10-03-2013<br /> *      Author: greg<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main(void)<br />{<br />unsigned char tryb=1;<br /><br />   DDRB = 15;  /* 0xFF binarnie 0000 1111 */<br />PORTB=16; /* pull up PB4) */<br />/*_delay_ms(20);*/<br />   /* Początek nieskończonej pętli */<br />   while(1)<br />   {<br /><br /><br />   if( tryb=1 )<br />   {<br />   /* Blok instrukcji wykonywany jeśli tryb=1 */<br /><br />      while (PINB &amp; 16)<br />   {<br />   PORTB |= 3; /* petla do czasu nacisniecia przycisku*/<br />            _delay_ms(580);<br />            PORTB &amp;= 252;<br />            _delay_ms(580);<br />   }<br />   _delay_ms(20);<br /><br />while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />{}<br />_delay_ms(20);<br />tryb=tryb+1;<br />   }<br /><br /><br /><br />   if( tryb=2 )<br />      {<br />      /* Blok instrukcji wykonywany jeśli tryb=2 */<br /><br />   while (PINB &amp; 16) /* petla do czasu nacisniecia przycisku*/<br />        {<br />      PORTB |= 1;<br />                 _delay_ms(80);<br />               PORTB &amp;= 254;<br />                 _delay_ms(80);<br />               PORTB |= 1;<br />               _delay_ms(80);<br />                    PORTB &amp;= 254;<br />                    _delay_ms(350);<br />                 PORTB |= 2;<br />                  _delay_ms(80);<br />                     PORTB &amp;= 253;<br />                 _delay_ms(80);<br />               PORTB |= 2;<br />               _delay_ms(80);<br />                  PORTB &amp;= 253;<br />              _delay_ms(350);<br />        }<br />      _delay_ms(20);<br /><br />      while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />      {}<br />   _delay_ms(20);<br />      tryb=3;<br />      }<br /><br />   if( tryb=3 )<br />      {<br />      /* Blok instrukcji wykonywany jeśli tryb=3 */<br /><br />   while (PINB &amp; 16) /* petla do czasu nacisniecia przycisku*/<br />          {<br />        PORTB |= 1;<br />                   _delay_ms(80);<br />                 PORTB &amp;= 254;<br />                   _delay_ms(80);<br />                 PORTB |= 1;<br />                 _delay_ms(80);<br />                      PORTB &amp;= 254;<br />                 _delay_ms(80);<br />                    PORTB |= 1;<br />                  _delay_ms(80);<br />                      PORTB &amp;= 254;<br /><br />                      _delay_ms(100);<br />                   PORTB |= 2;<br />                    _delay_ms(80);<br />                       PORTB &amp;= 253;<br />                   _delay_ms(80);<br />                 PORTB |= 2;<br />                 _delay_ms(80);<br />                      PORTB &amp;= 253;<br />                  _delay_ms(80);<br />                      PORTB |= 2;<br />                    _delay_ms(80);<br />                      PORTB &amp;= 253;<br />                      _delay_ms(100);<br />          }<br />        _delay_ms(20);<br /><br />        while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />        {}<br />        _delay_ms(20);<br />        tryb=1;<br />      }<br />   }<br />}<br /><br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 13 mar 2013, o 10:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Domanoid]]></name></author>
<updated>2013-03-13T08:40:29+01:00</updated>
<published>2013-03-13T08:40:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30618#p30618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30618#p30618"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30618#p30618"><![CDATA[
Wszystkie switch case zmien na ify, zobaczysz ile mniej zajmie program <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jakbys mogl wrzuc hexa wyprodukowanego przez bascom <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=750">Domanoid</a> — 13 mar 2013, o 08:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-13T07:46:27+01:00</updated>
<published>2013-03-13T07:46:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30615#p30615</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30615#p30615"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30615#p30615"><![CDATA[
Witam<br />Dziekuje za odpowiedzi.<br /><br />Wlasciwie tak dla testu napisalem w C by sprawdzic objetosc.<br />Wiadomo Attiny13 (fajny maly procek) ma tylko 1kb a liczylem ze w C zejdzie zdecydowanie nizej niz Bascom ale zapewne przy tak prymitywnym programie nie ma czego optymalizowac...<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 13 mar 2013, o 07:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2013-03-12T23:38:37+01:00</updated>
<published>2013-03-12T23:38:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30611#p30611</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30611#p30611"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30611#p30611"><![CDATA[
Witam.<br />Na &quot;zakurzonym&quot; AVR Studio IV :   <div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Program:     498 bytes (48.6% Full)<br /></div><br />A tak nawiasem mówiąc (pisząc  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> ) nie męczy Cię przeliczanie bin na dec ?  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 12 mar 2013, o 23:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2013-03-12T20:48:32+01:00</updated>
<published>2013-03-12T20:48:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30538#p30538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30538#p30538"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30538#p30538"><![CDATA[
Powiedz mi tak z ciekawości co to będzie za projekt, że aż tak bardzo zależy Ci na tej objętości kodu. Chyba lepiej pierwsze porozkminiać jak go zoptymalizować a dopiero później się głowić jak to ten Eclipse zrobił .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 12 mar 2013, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-12T20:23:03+01:00</updated>
<published>2013-03-12T20:23:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30528#p30528</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30528#p30528"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30528#p30528"><![CDATA[
Ok, rozumiem.<br />A czy ktos ma mozliwosc kompilacji np AVR studio5 czy Atmel Studio 6 i poda wielkosc kodu wynikowego?<br /><br />Pozdrawiam<br />Slawomir<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 12 mar 2013, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krokodyl1220]]></name></author>
<updated>2013-03-12T18:43:41+01:00</updated>
<published>2013-03-12T18:43:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30510#p30510</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30510#p30510"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30510#p30510"><![CDATA[
<div class="quotetitle">kakadupoznan napisał(a):</div><div class="quotecontent"><br />Zdziwilo mnie ze kod zajmuje mi wiecej niz w Bascomie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /></div><br />Język językowi nierówny, z resztą to samo tyczy się kompilatorów - kompilacja tego samego programu przy użyciu różnych wersji tego samego kompilatora może dać różnice w wielkości pliku wynikowego. I tak jest wszędzie, nie tylko w przypadku mikroklocków - program komputerowy skompilowany przy użyciu Visual Studio 2010, 2012, MinGW oraz MinGW 64, jeśli tylko jest wystarczająco skomplikowany będzie różnił się nie tylko wielkością pliku wykonywalnego, ale nawet szybkością działania (a to wszystko przez różne w różnych wersjach oraz toolchainach algorytmy optymalizacji.)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=768">krokodyl1220</a> — 12 mar 2013, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2013-03-12T18:39:16+01:00</updated>
<published>2013-03-12T18:39:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30509#p30509</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30509#p30509"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30509#p30509"><![CDATA[
[syntax=c]_delay_ms(80);<br /> PORTB &amp;= 254;<br /> _delay_ms(80);<br /> PORTB |= 1;<br /><br /> _delay_ms(80);<br />  PORTB &amp;= 254;<br />  _delay_ms(80);<br /> PORTB |= 1;<br />    [/syntax]<br /><br />np. takie coś to jakby dwa razy to samo, a co jeśli by to było w pętli?? Poza tym te _delay(), napewno spowalniają to działanie, jeśli tylko to będzie robił układ to nie jest tak źle, powiedzmy zastępuje drgania styków, ale jeśli miałby robić coś jeszcze innego to lepiej timery. Np zrobić sobie takie flagi przerwania co 10, 100ms i z nich korzystać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 12 mar 2013, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-12T18:28:42+01:00</updated>
<published>2013-03-12T18:28:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30507#p30507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30507#p30507"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30507#p30507"><![CDATA[
Dzieki za podpowiedzi.<br /><br />Przycisk jest na dlugim przewodzie i zwiera do masy.<br />Dodanie konsensatorka 100nF do masy (rownolegle z przyciskiem) nie pomoglo ale dodanie go miedzy PB4 a do +5V (czyli jak by rownolegle z wewnetrznym pullupem) naprawilo sytuacje.<br /><br />Co do optymalizacji mam domyslnie Eclipse Os i to jest ponoc najlepsza optymalizacja.<br />Tzn. instalowalem WINAVR, potem Eclipse Indigo + AVRplugin<br /><br />Zdziwilo mnie ze kod zajmuje mi wiecej niz w Bascomie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Rozumiem ze uzywajac delayu nie da sie tego kodu zmniejszyc.<img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />A co do wielkosci kodu - klikam po prostu 'mlotek' i na dole w konsoli wyskakuje :<br />&quot;Program:     500 bytes (48.8% Full)<br />(.text + .data + .bootloader)&quot;<br />Takze nie wiem co zmieniles w ustawieniach ze masz tylko 436 bajtow.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 12 mar 2013, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2013-03-12T17:54:15+01:00</updated>
<published>2013-03-12T17:54:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30497#p30497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30497#p30497"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30497#p30497"><![CDATA[
Kurcze zaś zostałem wyprzedzony:) Też takie stany się u mnie pojawiały chociaż przewody miały zaledwie kilkanaście cm. Podczas załączania komputera (przy zasilaniu z baterii). Się ruszyły elektrony w kabelku.<br /><br />U mnie w Eclipse pe kompilacji wyszło 436 bajtów.<br /><br />A i jeśli jeszcze Mirka niema zmień to <br />[syntax=c] DDRB = 15;  /* 0xFF binarnie 0000 1111 czyli PB0 do PB3 wyjscia, reszta wejscia*/<br />PORTB=16; /* pull up PB4 - wejscie przycisku */[/syntax]<br /><br />na takie [syntax=c]DDRB |= (1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2)|(1&lt;&lt;PB3);// PB0...PB3 jako wyjścia<br />PORTB |= (1&lt;&lt;PB0)|(1&lt;&lt;PB1)|(1&lt;&lt;PB2)|(1&lt;&lt;PB3);// wyłączenie diod na PB0...PB3<br />DDRB &amp;= ~(1&lt;&lt;PB4);// kierunek pinu PB4 - wejściowy<br />PORTB |= (1&lt;&lt;PB4);// podciągnięcie pinu PB4 do VCC[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 12 mar 2013, o 17:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-03-12T17:48:52+01:00</updated>
<published>2013-03-12T17:48:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30495#p30495</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30495#p30495"/>
<title type="html"><![CDATA[Re: Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30495#p30495"><![CDATA[
teraz postaram się odpowiedzieć ....<br /><br />AD1 ... Nie wiem jak masz ustawioną optymalizację w Eclipse dla kompilera , ale to chyba niema większego znaczenia przy takim programie <br />          taka zajętość miejsca ... owszem możesz uzyskać więcej stosując -Oo  <br /><br />          Nie podoba mi się ilość delayów ..... ta biblioteka jest troche opasła ....<br /><br />AD2 ...  tak może tak być przy takiej długości przewodów moga się pojawiać jakieś zakłócenia natury indukcyjnej  <br />           szpilki symulujące przycisk... daj kondensatorek 100n do GND powinno pomóc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 12 mar 2013, o 17:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kakadupoznan]]></name></author>
<updated>2013-03-12T17:20:24+01:00</updated>
<published>2013-03-12T17:20:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30481#p30481</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30481#p30481"/>
<title type="html"><![CDATA[Opymalizacja prostego kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2553&amp;p=30481#p30481"><![CDATA[
Witam<br /><br />Dopiero zaczynam nauke C <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.  Mam prosty program - cos ala mini stroboskop z 3 trybami.<br />Procek Attiny13 <br />Wybor trybow przyciskiem zwieranym do masy na PB4-jest na dlugim przewodzie.<br /><br />Wyjscia poprzez 2 ledy PB0 i PB1<br />Listing:<br /><br />[syntax=c]<br /><br />/*<br /> * m ain.c<br /> *<br /> *  Created on: 10-03-2013<br /> *      Author: greg<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main(void)<br />{<br />unsigned char tryb=1;<br /><br />   DDRB = 15;  /* 0xFF binarnie 0000 1111 czyli PB0 do PB3 wyjscia, reszta wejscia*/<br />PORTB=16; /* pull up PB4 - wejscie przycisku */<br />_delay_ms(20);<br />   /* Początek nieskończonej pętli */<br />   while(1)<br />   {<br /><br />   switch (tryb)  /* wybor trybu migania*/<br />   {<br />   case 1:<br />   while (PINB &amp; 16)<br />   {<br />   PORTB |= 3; /* petla do czasu nacisniecia przycisku*/<br />            _delay_ms(580);<br />            PORTB &amp;= 252;<br />            _delay_ms(580);<br />   }<br />   _delay_ms(20);<br /><br />while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />{}<br />_delay_ms(20);<br />tryb=tryb+1;<br />   break;<br />   case 2:<br />   while (PINB &amp; 16) /* petla do czasu nacisniecia przycisku*/<br />     {<br />   PORTB |= 1;<br />              _delay_ms(80);<br />            PORTB &amp;= 254;<br />              _delay_ms(80);<br />            PORTB |= 1;<br />            _delay_ms(80);<br />                 PORTB &amp;= 254;<br />                 _delay_ms(350);<br />              PORTB |= 2;<br />               _delay_ms(80);<br />                  PORTB &amp;= 253;<br />              _delay_ms(80);<br />            PORTB |= 2;<br />            _delay_ms(80);<br />                 PORTB &amp;= 253;<br />                   _delay_ms(350);<br />     }<br />   _delay_ms(20);<br />   while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />   {}<br />   _delay_ms(20);<br />   tryb=3;<br /><br />   break;<br /><br />   case 3:<br />     while (PINB &amp; 16) /* petla do czasu nacisniecia przycisku*/<br />       {<br />     PORTB |= 1;<br />                _delay_ms(80);<br />              PORTB &amp;= 254;<br />                _delay_ms(80);<br />              PORTB |= 1;<br />              _delay_ms(80);<br />                   PORTB &amp;= 254;<br />              _delay_ms(80);<br />                 PORTB |= 1;<br />               _delay_ms(80);<br />                   PORTB &amp;= 254;<br /><br />                   _delay_ms(100);<br />                PORTB |= 2;<br />                 _delay_ms(80);<br />                    PORTB &amp;= 253;<br />                _delay_ms(80);<br />              PORTB |= 2;<br />              _delay_ms(80);<br />                   PORTB &amp;= 253;<br />               _delay_ms(80);<br />                   PORTB |= 2;<br />                 _delay_ms(80);<br />                   PORTB &amp;= 253;<br />                   _delay_ms(100);<br />       }<br />     _delay_ms(20);<br />     while (!(PINB &amp; 16)) /* petla do czasu zwolnienia przycisku*/<br />     {}<br />     _delay_ms(20);<br />     tryb=1;<br /><br />     break;<br /><br /><br /><br />   }<br /><br /><br />   }<br />}<br /><br />[/syntax]<br /><br /><strong><span style="color: #FF0000">Kody umieszczamy w znacznikach syntax   -- proszę zapamiętać... tym razem poprawiłem , następnym razem post ląduje w koszu..<br />kurcze nie mamy kosza ....... trudno ... zapamiętaj więc by używać SYNTAX <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />   ---&gt; SunRiver</span></strong><br /><br /><br />Ogolnie dziala ale mam 2 pytania:<br /><br />1/ Zajmuje mi to 498 bajtow w Eclipse a identyczny soft w Bascomie jakies 10% mniej, co robie zle?<br /><br />2/ po podciagnieciu pullup na poczatku programu (PORTB=16) musi byc DELAY chocby 2ms inaczej przy starcie procka (wlaczeniu zasilania) w polowie przypadkow rozpoczyna ok czyli od case1 ale w polowie przypadkow zaczyna od case2. Problemu nie ma gdyz dam zewnetrzny rezystor podciagajacy PB4 do +5V albo odlacze przycisk od wejscia procka ( przycisk na kilku metrowym przewodzie). <br />Dlaczego tak sie dzieje?<br />Zaznaczam ze przycisku nie naciskam, po prostu czasem procek startuje ok a czesem nie.<br />Napisalem podobny soft w Bascomie i jest taki sam efekt - tez trzeba dac opoznienie (Watims 20).<br /><br />Wyglada tak jak by cos sie indukowalo w przewodzie przycisku i przeskakiwalo na Case2 zanim pullup sie podciagnie ?<br />Jestem zielony wiec moze ktos z wiedza podpowie:)<br /><br />Inna sprawa przy DELAYu 20ms mam 498 bajtow a przy DELAYu2ms mam 502 bajty kodu wynikowego:)<br /><br />Pozdrawiam<br />Slawomir<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1047">kakadupoznan</a> — 12 mar 2013, o 17:20</p><hr />
]]></content>
</entry>
</feed>