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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-11-19T15:53:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=16842&amp;mode</id>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-11-19T15:53:34+01:00</updated>
<published>2016-11-19T15:53:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175152#p175152</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175152#p175152"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175152#p175152"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Zauważ, że sam autor wątku napisał na początku że w moim oryginalnym kodzie było właśnie tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />lcd_str_P( days[ dt-&gt;dayofwek -1 ] ); // days we FLASH<br /></div><br />Przepraszam, tego nie zauważyłem.<br /><br />Odniosłem się tylko do tych dwóch cytatów:<br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ok spróbuj pan tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]lcd_str_P( &amp;days&#91; dt-&gt;dayofwek -1 &#93; );[/syntax]<br /></div><br />oraz<br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />[syntax=c]lcd_str_P( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; );[/syntax]<br /><br />bo pewnie trzeba jeszcze jawne rzutowanie zrobić do typu wskaźnikowego o który chodzi<br /></div><br />Dlatego pomyślałem &quot;po co tak komplikować?&quot; i zaproponowałem prostszy sposób.<br /><br />Ja rozumiem, że to wszystko z pośpiechu. Ja też nie doczytałem dokładnie pierwszego posta <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=14165">andrews</a> — 19 lis 2016, o 15:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-19T15:23:23+01:00</updated>
<published>2016-11-19T15:23:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175146#p175146</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175146#p175146"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175146#p175146"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />A nie prościej byłoby zrobić tak:<br /></div><br />Zauważ, że sam autor wątku napisał na początku że w moim oryginalnym kodzie było właśnie tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]lcd_str_P( days&#91; dt-&gt;dayofwek -1 &#93; ); // days we FLASH[/syntax]<br /><br />w jakimś poradniku i nie widział tam w poradniku warninga, natomiast u niego się pokazywał <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> stąd zaproponowałem &quot;na szybko&quot; rzutowanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> albo pokazałem jak zrobić to bez rzutowania .... w ostateczności ... czyli<br /><br />[syntax=c]lcd_str_P( &amp;days&#91; dt-&gt;dayofwek -1 &#93;&#91;0&#93; ); // days we FLASH[/syntax]<br /><br />a nie po to żeby mówić, że tak warto <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br />A na zakończenie powiem, że rzeczywiście dla zapisu<br /><br />[syntax=c]lcd_str_P( &amp;days&#91; 3 &#93; ); // days we FLASH[/syntax]<br /><br />pojawia się warning, proszę bardzo:<br /><br /><img src="https://obrazkiforum.atnel.pl/54/fbb558d41c40fa58d779ae094d6d4527.jpg" alt="Obrazek" /><br /><br />i dlatego rzutowanie powoduje że możemy się go pozbyć:<br /><br />[syntax=c]lcd_str_P( (char*)&amp;days&#91; 3 &#93; ); // days we FLASH[/syntax]<br /><br />podobnie jak ten zapis<br /><br />[syntax=c]lcd_str_P( &amp;days&#91; 3 &#93;&#91;0&#93; ); // days we FLASH[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lis 2016, o 15:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-11-19T14:21:49+01:00</updated>
<published>2016-11-19T14:21:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175135#p175135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175135#p175135"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175135#p175135"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />gdybyś chciał uniknąć rzutowania to MUSIAŁBYŚ podawać jawnie indeks drugiego wymiaru tablicy bo dopiero wtedy kompilator ma pewność że chodzi ci o string, np<br /><br />[syntax=c]lcd_str_P( &amp;days&#91; dt-&gt;dayofwek -1 &#93;&#91;0&#93; ); // days we FLASH[/syntax]<br /><br />albo<br /><br />[syntax=c]lcd_str( &amp;days&#91; dt-&gt;dayofwek -1 &#93;&#91;0&#93; ); // days w RAM[/syntax]<br /></div><br /><br />A nie prościej byłoby zrobić tak:[syntax=c]// zamiast pisać<br />lcd_str_P( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; ); // days we FLASH<br />// napisać po prostu<br />lcd_str_P( days&#91; dt-&gt;dayofwek -1 &#93; ); // days we FLASH[/syntax]<br />Wtedy też nie będzie warninga <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=14165">andrews</a> — 19 lis 2016, o 14:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-18T12:05:44+01:00</updated>
<published>2016-11-18T12:05:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175055#p175055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175055#p175055"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175055#p175055"><![CDATA[
<div class="quotetitle">tonygryps napisał(a):</div><div class="quotecontent"><br />wiec należy to rozumieć tak że w orginalnym kodzie kompilator &quot;się domyślił o co chodziło &quot; a po przeróbce już nie .<br /></div><br />Nie, warning zawsze wystąpi - nie ma tak że kompilator &quot;raz&quot; się domyśla a &quot;innym razem&quot; się nie domyśla.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lis 2016, o 12:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-18T11:48:25+01:00</updated>
<published>2016-11-18T11:48:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175050#p175050</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175050#p175050"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175050#p175050"><![CDATA[
Dziękuje za wyłożenie mi tego ja tylko się zastanawiałem czemu tak jest bo w orginalnym kodzie nie było rzutowania<br />[syntax=c]lcd_str(days&#91;dt-&gt;dayofwek -1&#93;)[/syntax] <br />i nie było warminga chociaż pewnie rzutowanie by nie przeszkodziło w niczym .<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />więc niestety coś kręcisz bo nie ważne czy masz zapis taki<br /><br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br /><br />    lcd_str_P( (char*)&amp;days[ dt-&gt;dayofwek -1 ] ); // days we FLASH<br /><br />GeSHi<br /><br /><br />czy taki<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br /><br />    lcd_str( (char*)&amp;days[ dt-&gt;dayofwek -1 ] ); // days w RAM<br /><br />GeSHi<br /><br /><br />to w każdym wypadku MUSISZ robić rzutowanie (char*)<br /><br />gdybyś chciał uniknąć rzutowania to MUSIAŁBYŚ podawać jawnie indeks drugiego wymiaru tablicy bo dopiero wtedy kompilator ma pewność że chodzi ci o string, np<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br /><br />    lcd_str_P( &amp;days[ dt-&gt;dayofwek -1 ][0] ); // days we FLASH<br /></div><br />wiec należy to rozumieć tak że w orginalnym kodzie kompilator &quot;się domyślił o co chodziło &quot; a po przeróbce już nie .<br />a tak naprawdę poprawnie to powinno w orginalnym kodzie to wyglądać tak?<br />[syntax=c]lcd_str( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 18 lis 2016, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-18T09:45:59+01:00</updated>
<published>2016-11-18T09:45:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175042#p175042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175042#p175042"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175042#p175042"><![CDATA[
jeszcze raz ci powtarzam - bo już pisałem wcześniej, że jeśli chodzi o rzutowanie to nie ma to NIC a NIC wspólnego czy jakaś zmienna jest w RAM czy we Flash - zrozum to proszę.<br /><br />więc niestety coś kręcisz bo nie ważne czy masz zapis taki<br /><br />[syntax=c]lcd_str_P( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; ); // days we FLASH[/syntax]<br /><br />czy taki<br />[syntax=c]lcd_str( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; ); // days w RAM[/syntax]<br /><br />to w każdym wypadku MUSISZ robić rzutowanie (char*) <br /><br />gdybyś chciał uniknąć rzutowania to MUSIAŁBYŚ podawać jawnie indeks drugiego wymiaru tablicy bo dopiero wtedy kompilator ma pewność że chodzi ci o string, np<br />[syntax=c]lcd_str_P( &amp;days&#91; dt-&gt;dayofwek -1 &#93;&#91;0&#93; ); // days we FLASH[/syntax]<br /><br />albo<br /><br />[syntax=c]lcd_str( &amp;days&#91; dt-&gt;dayofwek -1 &#93;&#91;0&#93; ); // days w RAM[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lis 2016, o 09:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-18T09:07:25+01:00</updated>
<published>2016-11-18T09:07:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175040#p175040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175040#p175040"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175040#p175040"><![CDATA[
Dziękuje wszystkim wydaje mi się że zrozumiałem o co chodzi .<br />Męczy mnie tylko jedna rzecz.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Poza tym co ma wspólnego rzutowanie z tym czy coś jest w pamięci RAM czy nie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... podpowiedź - nie ma to NIC wspólnego. Rzutowanie służy do uzgodnień typów danych jeśli się różnią pomiędzy typem np argumentu funkcji a przekazywanej zmiennej.<br /></div><br /><br />Otóż chodzi mi o to że jeśli bufor był w pamięci ram<br />[syntax=c]char days&#91;7&#93;&#91;4&#93; = {<br />                    &quot;pon&quot;, &quot;wto&quot;, &quot;sro&quot;, &quot;czw&quot;, &quot;pia&quot;, &quot;sob&quot;, &quot;nie&quot;<br />    };[/syntax]<br />to nie trzeba było robić rzutowania a jak jest w pamięci flash to trzeba je robić <br />przecież zapisanie tego tak <br />[syntax=c]const char days&#91;7&#93;&#91;4&#93; PROGMEM = {<br />                    &quot;pon&quot;, &quot;wto&quot;, &quot;sro&quot;, &quot;czw&quot;, &quot;pia&quot;, &quot;sob&quot;, &quot;nie&quot;<br />    };[/syntax]<br />nie zmienia typu zmiennej tylko rodzaj pamięci wykorzystywanej <br />a funkcja lcd_str_P() jako argumentu oczekuje adresu komórki pamięci flash o typie char.<br />[syntax=c]void lcd_str_P(const char * str)[/syntax]<br />więc skoro bufor we flashu jest typu char i funkcja oczekuje takiego typu to dlaczego trzeba to rzutować?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 18 lis 2016, o 09:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szymonciow]]></name></author>
<updated>2016-11-18T00:19:57+01:00</updated>
<published>2016-11-18T00:19:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175034#p175034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175034#p175034"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175034#p175034"><![CDATA[
Dla niniejszego przykładu warto się zastanowić nad nieco innym sposobem rozwiązania, które sam z powodzeniem stosuję.<br />Chodzi o sposób przedstawiony w tym poradniku:<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/11/tablica-wskaznikow-we-flash-progmem.html" >http://mirekk36.blogspot.com/2013/11/ta ... ogmem.html</a><!-- m --><br /><br />Można zatem zrobić takie rozwiązanie:<br /><br />[syntax=c]/********* Tablica stringów dni tygodnia *********************************/<br />const char pon&#91;&#93; PROGMEM = &quot;pon&quot;;<br />const char wto&#91;&#93; PROGMEM = &quot;wto&quot;;<br />const char sro&#91;&#93; PROGMEM = &quot;sro&quot;;<br />const char czw&#91;&#93; PROGMEM = &quot;czw&quot;;<br />const char pia&#91;&#93; PROGMEM = &quot;pia&quot;;<br />const char sob&#91;&#93; PROGMEM = &quot;sob&quot;;<br />const char nie&#91;&#93; PROGMEM = &quot;nie&quot;;<br /><br />const PROGMEM char * const days&#91;&#93; PROGMEM = {<br />pon,<br />wto,<br />sro,<br />czw,<br />pia,<br />sob,<br />nie<br />};<br />/*************************************************************************/[/syntax]<br /><br />Mając tak zdefiniowane napisy można zmodyfikować funkcję wyświetlającą do postaci:<br />[syntax=c]static void show_date( T_DATETIME * dt ) {<br />lcd_gotoxy(LCD_CTRL_0, 0, 1);<br /><br />lcd_puts( LCD_CTRL_0, &quot;20&quot; );<br /><br />if ( dt-&gt;year &lt; 10 ) {<br />lcd_puts( LCD_CTRL_0, &quot;0&quot; );<br />}<br />lcd_int ( LCD_CTRL_0, dt-&gt;year );<br />lcd_puts( LCD_CTRL_0, &quot;-&quot; );<br /><br />if ( dt-&gt;month &lt; 10 ) {<br />lcd_puts( LCD_CTRL_0, &quot;0&quot; );<br />}<br />lcd_int ( LCD_CTRL_0, dt-&gt;month );<br />lcd_puts( LCD_CTRL_0, &quot;-&quot; );<br /><br />if ( dt-&gt;day &lt; 10 ) {<br />lcd_puts( LCD_CTRL_0, &quot;0&quot; );<br />}<br />lcd_int ( LCD_CTRL_0, dt-&gt;day );<br /><br />lcd_puts( LCD_CTRL_0, &quot;  &quot; );<br /><br />const char *ptr = pgm_read_byte( days + dt-&gt;dayofweek-1 );<br />lcd_puts_p( LCD_CTRL_0, ptr );<br /><br />}[/syntax]<br /><br />Uwaga! w moim przykładzie zastosowałem inną bibliotekę do LCD, zatem są nieco inne funkcje do wyświetlania, ale całkiem podobne.<br />Taki sposób wydaje mi się nieco bardziej elegancki i zarazem jest to dobre ćwiczenie na wskaźniki i odczyt z pamięci FLASH. <br />Dodatkowo łatwo modyfikować same napisy, np w jednym miejscu wpisując &quot;poniedzialek&quot; zamiast &quot;pon&quot;, a nie martwiąc się o resztę kodu.<br /><br />Polecam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4075">szymonciow</a> — 18 lis 2016, o 00:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-17T22:55:59+01:00</updated>
<published>2016-11-17T22:55:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175018#p175018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175018#p175018"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175018#p175018"><![CDATA[
a to jest tekst w pamięci RAM ??? <br />[syntax=c]const char days&#91;7&#93;&#91;4&#93; PROGMEM = {<br />                &quot;pon&quot;, &quot;wto&quot;, &quot;sro&quot;, &quot;czw&quot;, &quot;pia&quot;, &quot;sob&quot;, &quot;nie&quot;<br />};[/syntax]<br />No chyba żartujesz ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Poza tym co ma wspólnego rzutowanie z tym czy coś jest w pamięci RAM czy nie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... podpowiedź - nie ma to NIC wspólnego. Rzutowanie służy do uzgodnień typów danych jeśli się różnią pomiędzy typem np argumentu funkcji a przekazywanej zmiennej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lis 2016, o 22:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-17T22:02:44+01:00</updated>
<published>2016-11-17T22:02:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175007#p175007</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175007#p175007"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175007#p175007"><![CDATA[
Dziękuję tak działa tylko czemu tak, przecież jak jest w pamięci ram to nie trzeba rzutowania robić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 17 lis 2016, o 22:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-17T21:45:09+01:00</updated>
<published>2016-11-17T21:45:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175004#p175004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175004#p175004"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=175004#p175004"><![CDATA[
[syntax=c]lcd_str_P( (char*)&amp;days&#91; dt-&gt;dayofwek -1 &#93; );[/syntax]<br /><br />bo pewnie trzeba jeszcze jawne rzutowanie zrobić do typu wskaźnikowego o który chodzi <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> — 17 lis 2016, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-17T21:15:44+01:00</updated>
<published>2016-11-17T21:15:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174999#p174999</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174999#p174999"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174999#p174999"><![CDATA[
coś tam z wojska zostało (jakieś nawyki sapera ) a tak na poważnie próbuje to zrozumieć i najpierw staram się sam ile wiem i umiem podziałać ale nie zawsze wychodzi.<br />próbowałem tak jak Mirku piszesz i też jest warming <br />./DS3231/ds3231.c: In function 'show_date':<br />../DS3231/ds3231.c:75:2: warning: passing argument 1 of 'lcd_str_P' from incompatible pointer type [enabled by default]<br />  lcd_str_P(&amp;days[dt-&gt;dayofwek -1]);<br />wkleiłem warming z consoli.<br /><br />działa ale jest warming,<br /> a co do funkcji  lcd_str_P to jak rozumie to wyświetla String z pamięci flash a jako argument trzeba jaj przekazać adres tej komórki  to makro PSTR jest makrem pozyskiwania tego adresu czy się mylę ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 17 lis 2016, o 21:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-17T21:01:51+01:00</updated>
<published>2016-11-17T21:01:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174998#p174998</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174998#p174998"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174998#p174998"><![CDATA[
<div class="quotetitle">tonygryps napisał(a):</div><div class="quotecontent"><br />Próbowałem tak lcd_str_P() i tak lcd_str_P(PSTR()) ale wtedy wywala błąd<br /></div><br />No bo widać, że zamiast postarać się dojść jak to działa to robisz próby jak saper <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> albo przeciąć ten kabelek albo inny <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i BUM....<br /><br /><div class="quotetitle">tonygryps napisał(a):</div><div class="quotecontent"><br />co do źródła nie wklejałem bo to Mirku z twojego bloga ale już wklejam.<br /></div><br />ale mi chodzi właśnie o źródło stringa a nie o całe kody <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ok spróbuj pan tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]lcd_str_P( &amp;days&#91; dt-&gt;dayofwek -1 &#93; );[/syntax]<br /><br />funkcja lcd_str_P() wymaga wskaźnika na string w pamięci Flash - więc dodawanie tu pgm_read_ .... jest kiepskim pomysłem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lis 2016, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-17T20:55:08+01:00</updated>
<published>2016-11-17T20:55:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174993#p174993</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174993#p174993"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174993#p174993"><![CDATA[
Próbowałem tak  lcd_str_P() i tak lcd_str_P(PSTR()) ale wtedy wywala błąd <br />co do źródła nie wklejałem bo to Mirku z twojego bloga ale już wklejam.<br />[syntax=c]const char days&#91;7&#93;&#91;4&#93; PROGMEM = {<br />&quot;pon&quot;, &quot;wto&quot;, &quot;sro&quot;, &quot;czw&quot;, &quot;pia&quot;, &quot;sob&quot;, &quot;nie&quot;<br />};[/syntax]<br />to po zmianie do pamięci flash <br />a to orginalny kod<br />[syntax=c]char days&#91;7&#93;&#91;4&#93; = {<br />&quot;pon&quot;, &quot;wto&quot;, &quot;sro&quot;, &quot;czw&quot;, &quot;pia&quot;, &quot;sob&quot;, &quot;nie&quot;<br />};[/syntax]<br />dodam żę jeśli napiszę <br />[syntax=c]lcd_int(pgm_read_byte( &amp;days&#91;dt-&gt;dayofwek -1&#93;));[/syntax]<br />wyświetla kod ascii pierwszej litry dnia .<br /><br /><br />Próbuje wyświetlić string tyle że z pomięci flash.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 17 lis 2016, o 20:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-11-17T20:34:45+01:00</updated>
<published>2016-11-17T20:34:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174983#p174983</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174983#p174983"/>
<title type="html"><![CDATA[Re: optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174983#p174983"><![CDATA[
eeeeh a masz Bluebooka i zajrzeć to co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />przede wszystkim to chyba masz tam opisane do czego są funkcje z suffixem _P ? czy nie masz ? a więc<br /><br />lcd_str_P() a nie lcd_str() <br /><br />w takim przypadku.<br /><br />A po drugie to ja nie wiem i pewnie ty chyba też sam nie wiesz - z tego co piszesz - co ty chcesz wyświetlić ... więc sam się zastanów i napisz.<br /><br />1. czy chcesz wyświetlić string ?<br />2. czy chcesz wyświetlić liczbę ?<br /><br />a jeśli chcesz wyświetlić string - no to pokaż jego źródło<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lis 2016, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2016-11-17T20:12:17+01:00</updated>
<published>2016-11-17T20:12:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174977#p174977</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174977#p174977"/>
<title type="html"><![CDATA[optomalizacja kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16842&amp;p=174977#p174977"><![CDATA[
witam <br />Otóż próbowałem optymalizować kod Mirka z poradnika o ds3231 w sensie wyświetlać z pamięci flash zamiast ram i mam problem z jedną funkcją <br />[syntax=c]void show_date( TDATETIME * dt ) {<br />//char a = 0;<br />lcd_str_P(PSTR(&quot;20&quot;));<br />if( dt-&gt;year &lt; 10 ) lcd_str_P(PSTR(&quot;0&quot;));<br />lcd_int(dt-&gt;year);<br />lcd_str_P(PSTR(&quot;-&quot;));<br />if( dt-&gt;month &lt; 10 ) lcd_str_P(PSTR(&quot;0&quot;));<br />lcd_int(dt-&gt;month);<br />lcd_str_P(PSTR(&quot;-&quot;));<br />if( dt-&gt;day &lt; 10 ) lcd_str_P(PSTR(&quot;0&quot;));<br />lcd_int(dt-&gt;day);<br />lcd_str_P(PSTR(&quot;  &quot;));<br />//     lcd_str(days&#91;dt-&gt;dayofwek -1&#93;)  // orginalny zapis w funkcji<br />lcd_str(pgm_read_byte( &amp;days&#91;dt-&gt;dayofwek -1&#93;));<br />}[/syntax]<br /><br />w tej linii mam warminga [syntax=c]lcd_str(pgm_read_byte( &amp;days&#91;dt-&gt;dayofwek -1&#93;));[/syntax] który dotyczy tego że powinienem użyć funkcji lcd_int <br />tyle że ja nie chcę wyświetlać liczby tylko string .<br />jak to zrobić żeby wyświetlać zawartość bufora chat w pamięci flash.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 17 lis 2016, o 20:12</p><hr />
]]></content>
</entry>
</feed>