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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-06T20:22:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9561&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-06T20:22:18+01:00</updated>
<published>2014-12-06T20:22:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107625#p107625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107625#p107625"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107625#p107625"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />No ale widzisz - programując w C powoli przywykłeś do niektórych rzeczy w porównaniu do przyzwyczajeń bascoma - zgadza się ?<br /></div><br />Hehe, czy przywykłem? - to za mało powiedziane <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jestem w trakcie nowego sterownika do slidera (obecnie przy jego MENU) i już widzę, że mechanizmy z jakich mogę korzystać w C miażdżą bascoma pod wieloma względami po ich bliższym poznaniu, a już o wykonywaniu stu operacji matematycznych w jednej linii w przeciwieństwie gdzie w bascomie można było tylko jedną(!) taką operację przeprowadzić mówią same za siebie.<br />Z tym PSTR to chyba masz rację, bo po przemyśleniu sprawy jak się odzwyczaję od standardów to może pojawić się później problem z analizą programów pisanych przez innych programistów <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />#define lcd_str_p(s) lcd_str_P(PSTR(s))<br /><br />Trzeba pamiętać o jednym: PSTR wstawi tyle napisów do FLASHa  ile razy zostanie użyty w kodzie, nawet jeżeli te napisy będą identyczne.<br /></div><br />To zrozumiałe, gdyby była zdefiniowana tablica wtedy napis byłby tylko raz zdefiniowany, a samo makro bardzo fajne, proste i może go nawet wykorzystam kiedyś, bo chyba o takie coś mi właśnie chodziło, ale jak pisałem wyżej chyba posłucham Mirka, w końcu siedzi w tym dłużej niż ja <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=1922">SylwekK</a> — 6 gru 2014, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-12-06T19:55:30+01:00</updated>
<published>2014-12-06T19:55:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107622#p107622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107622#p107622"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107622#p107622"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Niestety nie wiem jak to w zgrabnej funkcji wszystko podstawiać aby stworzyć sobie kolejną wygodną komendę typu lcd_f(&quot;tekst&quot;) aby nie wpisywać ciągle PSTR w głębi lcd...<br /></div><br />Zdefiniuj makro np.<br /><br />[syntax=c]#define lcd_str_p(s) lcd_str_P(PSTR(s))[/syntax]<br /><br />Trzeba pamiętać o jednym: PSTR wstawi tyle napisów do FLASHa  ile razy zostanie użyty w kodzie, nawet jeżeli te napisy będą identyczne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 6 gru 2014, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-12-06T19:36:14+01:00</updated>
<published>2014-12-06T19:36:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107618#p107618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107618#p107618"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107618#p107618"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Niestety nie wiem jak to w zgrabnej funkcji wszystko podstawiać aby stworzyć sobie kolejną wygodną komendę typu lcd_f(&quot;tekst&quot;) aby nie wpisywać ciągle PSTR<br /></div><br /><br />No ale widzisz - programując w C powoli przywykłeś do niektórych rzeczy w porównaniu do przyzwyczajeń bascoma - zgadza się ?<br /><br />To teraz pomyśl - z tym  PSTR() jest dokładnie tak - że najlepiej - jeśli już w ogóle chcesz stosować literały (czyli stałe dosłowne tekstowe) to ZDECYDOWANIE WARTO używać PSTR() w widoczny sposób w kodzie w C ... bo później od razu wiadomo że chodzi o tekst z FLASH'a rozumiesz ?<br /><br />Ja przyznam ci że po Bascomie identycznie jak ty próbowałem się pozbyć PSTR() i udało mi się to poprzez zastosowanie dziwnych makr .... ale koniec końców wróciłem do PSTR() tak jak mi radziło wiele osób - i do dzisiaj jadę z tym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... zobaczysz że nawet jeśli sam zakombinujesz to później jak już nasiąkniesz C do końca - to sam wrócisz do normalnych rzeczy jak PSTR() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />oczywiście inny normalny sposób to trzymanie tekstów w tablicach .... i wyświetlanie ich tak:<br /><br />[syntax=c]const char tekst1&#91;&#93; PROGMEM = &quot;jakis tekst 1&quot;;<br /><br /><br />lcd_str_P( tekst1 );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 gru 2014, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-06T18:28:44+01:00</updated>
<published>2014-12-06T18:28:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107612#p107612</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107612#p107612"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107612#p107612"><![CDATA[
No jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Pamiętałem, że gdzieś to w BB widziałem, ale nie mogłem skojarzyć, że trzeba to w ten sposób ująć... To znak, że jeszcze raz muszę przeczytać wszystko od A do Z, bo o ile podstawy powiedzmy, że mam już za sobą to właśnie na takich drobiazgach (w sumie to też podstawy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />) się wykładam. To jedna z niewielu rzeczy w C, które z punktu widzenia byłego bascomowca są dość skomplikowana i zawiła w obsłudze, którą staram się uprościć do granic możliwości. Niestety nie wiem jak to w zgrabnej funkcji wszystko podstawiać aby stworzyć sobie kolejną wygodną komendę typu lcd_f(&quot;tekst&quot;) aby nie wpisywać ciągle PSTR w głębi lcd... Jakoś ze zwykłymi wskaźnikami zmiennych nie mam tyle problemu co z tekstami i po analizie bibliotek za cholerę nie wiem co gdzie i jak przypisać. Może ktoś podsunie jakąś wędkę z przekazywaniem tych parametrów <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=1922">SylwekK</a> — 6 gru 2014, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-12-06T14:38:59+01:00</updated>
<published>2014-12-06T14:38:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107591#p107591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107591#p107591"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107591#p107591"><![CDATA[
Dziękuję Antystatyczny za wyczerpującą odpowiedź <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=4068">misiulu</a> — 6 gru 2014, o 14:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-12-06T14:19:43+01:00</updated>
<published>2014-12-06T14:19:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107587#p107587</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107587#p107587"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107587#p107587"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Czy można w jakiś względnie prosty sposób zrobić komendę którą zacytowałem, aby tekst w niej zawarty zapakowany był bezpośrednio do flash i nie dublował się później w RAM.<br /></div><br /><br />A zajrzyj w Bluebooku - może ci umknęło - pisałem o funkcjach z suffixem &quot;_P&quot;<br /><br />czyli zajrzyj co robi i jak robi funkcja:<br /><br />[syntax=c]lcd_str_P( PSTR(&quot;jakis napis&quot; );[/syntax]<br /><br />tak samo tworzymy sobie dla UART'a np:<br /><br />[syntax=c]uart_puts_P( PSTR(&quot;najkis napis&quot; );[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Dodam, że test lcd_pstr(&quot;tekst&quot;) nic nowego nie wniósł i jak był RAM zajmowany tak dalej jest.<br /></div><br /><br />bo jak mówię pomyliło ci się troszkę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie lcd_pstr tylko lcd_str_P( PSTR(&quot;tekst&quot;) ); ... teraz jaśniej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i zobaczysz od razu że w pamięci RAM UBĘDZIE bajtów <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> — 6 gru 2014, o 14:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-12-06T13:22:51+01:00</updated>
<published>2014-12-06T13:22:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107582#p107582</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107582#p107582"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107582#p107582"><![CDATA[
A tak przy okazji to czym różni się funkcja pgm_read_byte od pgm_read_byte_near? Oraz jak sprawdzić czy napis znajduje się powyżej 64kB, aby zastosować tę ostatnią funkcję?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4068">misiulu</a> — 6 gru 2014, o 13:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2014-12-06T13:16:23+01:00</updated>
<published>2014-12-06T13:16:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107580#p107580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107580#p107580"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107580#p107580"><![CDATA[
Nie wiem czy to pomoże, ale jest taka nota ATMELa, która opisuje ciekawe funkcje w tym temacie. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> Czytałem to jakieś trzy lata temu, ale nie sprawdzałem w praktyce. <br />Poszukaj &quot;AVR106: C functions for reading and writing to Flash memory&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 6 gru 2014, o 13:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[misiulu]]></name></author>
<updated>2014-12-06T12:59:19+01:00</updated>
<published>2014-12-06T12:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107574#p107574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107574#p107574"/>
<title type="html"><![CDATA[Re: Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107574#p107574"><![CDATA[
Aby zadziałało to musisz zastosować to tak:<br />[syntax=c]lcd_pstr( PSTR( &quot;tekst&quot; ) )[/syntax]<br /><br />Ta funkcja lcd_pstr w sobie musi używać funkcji do odczytu z pamięci FLASH.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4068">misiulu</a> — 6 gru 2014, o 12:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-06T12:47:03+01:00</updated>
<published>2014-12-06T12:47:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107572#p107572</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107572#p107572"/>
<title type="html"><![CDATA[Na LCD prosto z pamięci flash - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9561&amp;p=107572#p107572"><![CDATA[
Witam,<br />Kombinował ktoś może z bezpośrednim drukowaniem na ekranie komendą LCD, w której zawarty jest tekst?<br />Chodzi mi o taki zapis&quot;<br /><br />[syntax=c]lcd (&quot;napis testowy&quot;);[/syntax]<br /><br />Wiadomo, że tekst zawarty w cudzysłowie jest we flashu, ale jest on też przepisany do RAM co widać po jego zajętości po kompilacji w ECLIPSE. Czy może się mylę czy coś przeoczyłem? Mam sporo tekstu i nie uśmiecha mi się notować, na kartce nazwy tablicy dla każdego z nich, albo robić bliźniacze nazwy jako wskaźniki, bo mi to strasznie zamiesza w programie.<br /><br />Ostatecznie pytanie brzmi - Czy można w jakiś względnie prosty sposób zrobić komendę którą zacytowałem, aby tekst w niej zawarty zapakowany był bezpośrednio do flash i nie dublował się później w RAM. Czy może jest tak, że do RAM tekst jest ładowany w ostatniej chwili tuż przed jego wydrukiem chociaż przeczyło by to pokazywanemu w ECELIPSE procentowi zajętości RAM, bo dopisanie każdego kolejnego znaku powiększa tą liczbę. Jak to jest naprawdę z tym przechowywaniem zmiennych w LCD. Dodam, że test lcd_pstr(&quot;tekst&quot;) nic nowego nie wniósł i jak był RAM zajmowany tak dalej jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 6 gru 2014, o 12:47</p><hr />
]]></content>
</entry>
</feed>