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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-09T20:40:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8462&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-09T20:40:27+01:00</updated>
<published>2014-09-09T20:40:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94861#p94861</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94861#p94861"/>
<title type="html"><![CDATA[Re: stringi na lcd a funkcja free()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94861#p94861"><![CDATA[
Dlatego lepiej korzystać z:<br /><br />[syntax=c]lcd_str_P( PSTR(&quot;jakis napis&quot;) );[/syntax]<br /><br />wtedy napis brany jest tylko z FLASH i nie tracisz RAM'u - o ile to mają być &quot;stałe napisy w kodzie&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 wrz 2014, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[#99]]></name></author>
<updated>2014-09-09T20:17:08+01:00</updated>
<published>2014-09-09T20:17:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94852#p94852</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94852#p94852"/>
<title type="html"><![CDATA[Re: stringi na lcd a funkcja free()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94852#p94852"><![CDATA[
Na pewno doczytam jeszcze co nieco na ten temat a tymczasem dziękuję za wyjaśnienia <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4052">#99</a> — 9 wrz 2014, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-09T20:11:21+01:00</updated>
<published>2014-09-09T20:11:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94848#p94848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94848#p94848"/>
<title type="html"><![CDATA[Re: stringi na lcd a funkcja free()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94848#p94848"><![CDATA[
<div class="quotetitle">#99 napisał(a):</div><div class="quotecontent"><br />w &quot;nieskończoną&quot; pętle celem odświeżania napisu jest receptą na utratę całej pamięci i posypania się programu?<br /></div><br /><br />Kompletnie nie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> te stringi to STAŁE DOSŁOWNE umieszczone w pamięci RAM tak samo jak zmienne globalne, fakt, że jeszcze dodatkowo tracisz przez taki zapis tyle samo miejsca we FLASH bo skądś się ten napis musi wziąć w RAM <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ALE NIGDY tego nie zwolnisz free() .... to nie jest w obszarze pamięci RAM służącym do dynamicznej alokacji czyli pomiędzy (w uproszczeniu) zmiennymi globalnymi a stosem ...<br /><br />Reasumując sam niejako wymyśliłeś sobie nieistniejący problem że każde wywołanie funkcji z takim tekstem powoduje zajmowanie coraz większych obszarów RAM<br /><br />a tymczasem nie doczytałeś właśnie jeśli chodzi o podstawy na temat <br /><br />STAŁYCH DOSŁOWNYCH (Literałów) <br /><br />a warto jednak sięgnąć do tych podstaw bo wtedy się sporo wyjaśni<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 wrz 2014, o 20:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[#99]]></name></author>
<updated>2014-09-09T19:54:58+01:00</updated>
<published>2014-09-09T19:54:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94843#p94843</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94843#p94843"/>
<title type="html"><![CDATA[stringi na lcd a funkcja free()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8462&amp;p=94843#p94843"><![CDATA[
Witam! <br />Do wyświetlania napisów na wyświetlaczu tekstowym z popularnym sterownikiem hd44780 korzystam z następującej funkcji:<br />[syntax=c]void LcdWriteText(char *text)<br />{<br />while(*text) LcdWriteData( *text++ );<br />}[/syntax]<br />wywołuję ją linijką:<br />[syntax=c]LcdWriteText(&quot;napis do wyswietlenia&quot;);[/syntax]<br /><br />czy dobrze rozumuję: wywołując powyższą linijkę tworzę gdzieś w pamięci taką jakby tablicę ze stringiem do której mam dostęp tylko przez wskaźnik text. Gdy wywołam funkcję kolejny raz tracę jakąkolwiek możliwość dostępu do wcześniejszego stringa a miejsce w pamięci jest przez niego nadal zajmowane. Puszczenie więc[syntax=c]LcdWriteText(&quot;napis&quot;)[/syntax] w &quot;nieskończoną&quot; pętle celem odświeżania napisu jest receptą na utratę całej pamięci i posypania się programu?<br />Czy zatem warto dołączyć standardową bibliotekę i dopisać jedną linijkę z funkcją free()? Dodam że rozmiar programu w pamięci flash  zwiększa się o około 500 bajtów. Jeśli jednak warto to jak powinna wyglądać owa funkcja?<br />[syntax=c]void LcdWriteText(char *text)<br />{<br />while(*text) LcdWriteData( *text++ );<br />free(text);<br />}[/syntax]<br />czy<br />[syntax=c]void LcdWriteText(char *text)<br />{<br />while(*text)<br />        {<br />               LcdWriteData( *text++ );<br />               free(text);<br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4052">#99</a> — 9 wrz 2014, o 19:54</p><hr />
]]></content>
</entry>
</feed>