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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T13:47:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4858&amp;mode</id>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-22T11:42:37+01:00</updated>
<published>2013-11-22T11:42:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58160#p58160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58160#p58160"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58160#p58160"><![CDATA[
dzięki,<br />trochę mi się to w głowie poukładało... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 22 lis 2013, o 11:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-22T09:11:23+01:00</updated>
<published>2013-11-22T09:11:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58150#p58150</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58150#p58150"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58150#p58150"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />ale czy w tym przypadku same stringi tab2[], tab3[], tab4[] nie będą też w RAM?<br />chyba tylko stringtable wyląduje we FLASH?<br />a da się zrobić to tak??:<br /></div><br /><br />oczywiście że tak wręcz trzeba ... eeeeh ... no ja mam ostatnio pomroczność jasną - zobacz że na blogu dobrze to pokazałem:<br /><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 />a tu znowu zjadło mi te PROGMEM w poście wyżej w ostatnim przykładzie - ale już i w tym poście to poprawiłem<br /><br />niestety - przygotowując się do napisania tego brałem eclipse w łapki z zestawem ATB i testowałem na LCD dziesiątki wariantów żeby to jak najlepiej przedstawić a niechcący czasem (nie wiem jak to się dzieje) wklejam zły fragment kodu ....<br /><br />ostatecznie tak jak piszesz i tak jak to poprawiłem wyżej i tak jak na blogu każdy ze stringów składowych też musi być we flash (PROGMEM) jeśli chcemy aby wszystko było we flash a RAM pusty <br /><br />[syntax=c]const char tab1&#91;&#93; PROGMEM = &quot;dddddd&quot;;<br />const char tab2&#91;&#93; PROGMEM = &quot;bbbbbb&quot;;<br />const char tab3&#91;&#93; PROGMEM = &quot;cccccc&quot;;<br />const char tab4&#91;&#93; PROGMEM = &quot;eeeeee&quot;;<br /> <br /> <br />const char * const stringtable&#91;&#93; PROGMEM={<br />                tab1,<br />                tab2,<br />                tab3,<br />                tab4<br />};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 lis 2013, o 09:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-22T08:14:08+01:00</updated>
<published>2013-11-22T08:14:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58145#p58145</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58145#p58145"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58145#p58145"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />czyli twoja tablica jeśli miała by być w pamięci FLASH to MUSIAŁABY być tak zdefiniowana:<br />[syntax=c]const char tab1&#91;&#93; = &quot;aaaaaaaaa&quot;;<br />const char tab2&#91;&#93; = &quot;bbbbbbbbb&quot;;<br />const char tab3&#91;&#93; = &quot;ccccccccc&quot;;<br />const char tab4&#91;&#93; = &quot;ddddddddd&quot;;<br /> <br />const char * const stringtable&#91;&#93; PROGMEM={<br />                tab1,<br />                tab2,<br />                tab3,<br />                tab4<br />};[/syntax]<br />DOPIERO teraz możesz się do tych stringów odwoływać w kodzie źródłowym tak:<br /></div><br /><br /><em>dobrze że się wszystko wyjaśniło, bo już tak mi się wszystko pomieszało, że koniec świata :p</em><br /><br />ale czy w tym przypadku same stringi tab2[], tab3[], tab4[] nie będą też w RAM?<br />chyba tylko stringtable wyląduje we FLASH?<br />a da się zrobić to tak??:<br />[syntax=c]const char tab1&#91;&#93; PROGMEM=&quot;dddddd&quot;;<br />const char tab2&#91;&#93; PROGMEM=&quot;dddddd&quot;;<br />const char tab3&#91;&#93; PROGMEM=&quot;dddddd&quot;;<br />const char tab4&#91;&#93; PROGMEM=&quot;dddddd&quot;;<br /><br /><br />const char * const stringtable&#91;&#93; PROGMEM={<br />                tab1,<br />                tab2,<br />                tab3,<br />                tab4<br />};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 22 lis 2013, o 08:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T18:22:00+01:00</updated>
<published>2013-11-21T18:22:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58068#p58068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58068#p58068"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58068#p58068"><![CDATA[
aaadamw ---&gt; prowadzę dwa (wydawało mi się) podobne tematy w tym samym czasie: zobacz tu:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic4855.html" >topic4855.html</a><!-- l --><br /><br />i przez to niechcący mi się pokrębasiło na maxa - <span style="color: #FF0000">przez co wprowadziłem ciebie i innych w błąd w tym wątku - swoimi wywodami za co bardzo przepraszam ... ale już postaram się to naprawić</span> ....<br /><br />otóż taka konstrukcja nie ma sensu totalnie:<br /><br />[syntax=c]const char * const stringtable&#91;&#93; PROGMEM={<br />                &quot;aaaaaaaaa&quot;,<br />                &quot;bbbbbbbbb&quot;,<br />                &quot;ccccccccc&quot;,<br />                &quot;ddddddddd&quot;<br />};[/syntax]<br /><br />bo czy chcesz czy nie to te stringi zostaną utworzone w pamięci RAM <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... oczywiście żeby się tam mogły znaleźć to także znajdą się chociaż bezużyteczne w pamięci FLASH .... i dlatego żeby się do nich dobierać trzeba by było posługiwać się<br /><br />[syntax=c]lcd_str()[/syntax]<br /><br />a nie <br /><br />[syntax=c]lcd_str_P()[/syntax]<br /><br />a to przecież nie ma sensu - bo jeśli stringów miałbyś dużo to zapaćkałbyś całą pamięć RAM szczególnie w jakimś małym procku AVR<br /><br />dlatego trzeba ew postąpić tak jak piszę o tym w artykule na blogu:<br /><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 />czyli twoja tablica jeśli miała by być w pamięci FLASH to MUSIAŁABY być tak zdefiniowana:<br /><br />[syntax=c]const char tab1&#91;&#93; PROGMEM = &quot;aaaaaaaaa&quot;;<br />const char tab2&#91;&#93; PROGMEM = &quot;bbbbbbbbb&quot;;<br />const char tab3&#91;&#93; PROGMEM = &quot;ccccccccc&quot;;<br />const char tab4&#91;&#93; PROGMEM = &quot;ddddddddd&quot;;<br /><br />const char * const stringtable&#91;&#93; PROGMEM={<br />                tab1,<br />                tab2,<br />                tab3,<br />                tab4<br />};[/syntax]<br /><br />i DOPIERO teraz możesz się do tych stringów odwoływać w kodzie źródłowym tak:<br /><br />[syntax=c]lcd_str_P(  (char*)pgm_read_word( &amp;stringtable&#91; idx &#93; )  );[/syntax]<br /><br />gdzie idx to numer indeksu tej tablicy wskaźników<br /><br />sprawdź - teraz powinno działać - i jeszcze raz sorki za wprowadzenie w błąd po drodze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 18:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T15:48:01+01:00</updated>
<published>2013-11-21T15:48:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58039#p58039</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58039#p58039"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58039#p58039"><![CDATA[
taki mam oto kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />//#include &lt;util/delay.h&gt;<br />#include &quot;LCD_AW/lcd44780.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br />volatile uint16_t Timer1=10;<br />const char * const stringtable&#91;&#93; PROGMEM={<br />&quot;aaaaaaaaa&quot;,<br />&quot;bbbbbbbbb&quot;,<br />&quot;ccccccccc&quot;,<br />&quot;ddddddddd&quot;<br />};<br />uint8_t j,i;<br />int main(void){<br />lcd_init();<br /><br />//TIMER0<br />TCCR0A|=(1&lt;&lt;WGM01);<br />TCCR0B|=(1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />OCR0A=(uint8_t)(F_CPU/(1024.0*100)-0.5);//10ms=1s/100<br />TIMSK0|=(1&lt;&lt;OCIE0A);<br />sei();<br />while(1){<br />if(!Timer1){<br /><br />lcd_locate(0,0);<br />lcd_str_P( (char*)pgm_read_word( &amp;stringtable&#91;(j++)%2&#93; ));<br />//lcd_str(stringtable&#91;(j++)%2&#93;);<br />Timer1=100;<br />}<br />}<br /><br />}<br /><br /><br /><br />ISR(TIMER0_COMPA_vect){<br />uint16_t n;<br />n = Timer1;/* 100Hz Timer1 */<br />if (n) Timer1 = --n;<br /><br />}[/syntax]<br /><br /><br /><br /><br />jak wywalę PROGMEM i wyświetlam lcd_str() to jest OK.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 15:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T15:30:14+01:00</updated>
<published>2013-11-21T15:30:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58031#p58031</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58031#p58031"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58031#p58031"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />kompilować się kompiluje, ale nie działa, wywala krzaki na LCD<br /></div><br /><br />Nie rzucam słów na wiatr bo używam tego nie raz i nie dwa ... więc jeśli już piszesz że coś nie działa - to chociaż zlituj się pan i pokaż co i jak piszesz - jakiś przykład kodu, jakiś zrzut ekranu, jakie błędy itp<br /><br />bo na takie pytanie hmm w zasadzie dziwne stwierdzenie to mogę tylko odpowiedzieć:<br /><br />no to trudno - mi działa <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T15:28:31+01:00</updated>
<published>2013-11-21T15:28:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58029#p58029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58029#p58029"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58029#p58029"><![CDATA[
kompilować się kompiluje, ale nie działa, wywala krzaki na LCD<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 15:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T14:40:34+01:00</updated>
<published>2013-11-21T14:40:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58013#p58013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58013#p58013"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58013#p58013"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />ok, to jak teraz wyświetlić te napisy:<br />[syntax=c]char * const tab&#91;&#93; PROGMEM= { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br /></div><br /><br /><br />np:<br /><br />[syntax=c]char * s = (char*)pgm_read_word( &amp;tab&#91;1&#93; );<br />lcd_str_P( s );[/syntax]<br /><br />albo<br /><br />[syntax=c]lcd_str_P( (char*)pgm_read_word( &amp;tab&#91;1&#93; );[/syntax]<br /><br />albo<br /><br />[syntax=c]#define GETSTR( str, idx ) (char*)pgm_read_word( &amp;str&#91; idx &#93; )<br /><br />lcd_str_P( GETSTR( tab, 1 );[/syntax]<br /><br /><br />albo jeszcze tysiąc innych dowolnych sposobó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> — 21 lis 2013, o 14:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:47:32+01:00</updated>
<published>2013-11-21T14:22:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58012#p58012</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58012#p58012"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58012#p58012"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 14:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T14:17:03+01:00</updated>
<published>2013-11-21T14:17:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58011#p58011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58011#p58011"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58011#p58011"><![CDATA[
ok, to jak teraz wyświetlić te napisy:<br />[syntax=c]char * const tab&#91;&#93; PROGMEM= { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 14:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T14:13:47+01:00</updated>
<published>2013-11-21T14:13:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58009#p58009</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58009#p58009"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58009#p58009"><![CDATA[
<div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent"><br />ale wtedy jest tylko tablica wskaźników we FLASH, a co ze stringami &quot;ala1&quot; i &quot;ala2&quot; ?? gdzie one się znajdują?<br /></div><br /><br />też w pamięci FLASH w obszarze .text - czyli program memory inaczej mówiąc tam gdzie jest kod programu. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tyle że stringi te nie są dostępne ot tak luzem przez nazwę tablicy bo jak ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br /><br />Zresztą jak definiujesz coś takiego niby w RAM:<br /><br />[syntax=c]char tab&#91;&#93; = &quot;test&quot;;[/syntax]<br /><br />albo coś takiego:<br /><br />[syntax=c]lcd_str( &quot;kotek i ala&quot;);[/syntax]<br /><br />to obydwa stringi będą w pdobnym miejscu we Flash - zwykle na końcu wsadu <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> — 21 lis 2013, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T14:09:53+01:00</updated>
<published>2013-11-21T14:09:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58008#p58008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58008#p58008"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58008#p58008"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />a jeśli to ma być tablica wskaźników w pamięci flash to tak:<br />[syntax=c]const char * const tab&#91;&#93; PROGMEM= { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br />wtedy w ogóle nie tracisz RAM'u niepotrzebnie<br /></div><br /><br />ale wtedy jest tylko tablica wskaźników we FLASH, a co ze stringami &quot;ala1&quot; i &quot;ala2&quot; ?? gdzie one się znajdują?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 14:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T13:59:48+01:00</updated>
<published>2013-11-21T13:59:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58005#p58005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58005#p58005"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58005#p58005"><![CDATA[
ale to ty nie używasz optymalizacji -Os ???? ja TYLKO i wyłącznie na AVR tego używam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:47:09+01:00</updated>
<published>2013-11-21T13:44:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58004#p58004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58004#p58004"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=58004#p58004"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 13:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T13:09:32+01:00</updated>
<published>2013-11-21T13:09:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57998#p57998</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57998#p57998"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57998#p57998"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Ja tam nie dostaję żadnego warninga ani tym bardziej błędu (mówię o przykładzie z pierwszego postu wątku). No ale być może lepszy kompilator by to wychwycił. Chociaż ja nie spotkałem się z takim który by to robił (kontrolę przekroczenia indeksu). No ale niewiele znam kompilatorów C oprócz gcc więc być możę żyję w ignorancji<br /></div><br /><br />ależ zwykły AVR GCC pokazuje warnigna tylko ... tylko jeśli masz włączoną opcję przy kompilacji &quot;disable pedantic warnings&quot; czy jakoś tak - jak to bywa w kocim Atmel Studio domyślnie to się nie dziw - że nie widzisz warningów ... tzn nie wiem czy akurat używasz kociego atmel studio ale wiem że tam domyślnie takie warningi są wyłączone na pohybel początkującym ... za to w Eclipse to działa<br /><br />a zresztą sam zobacz:<br /><br /><img src="http://forum.atnel.pl/_obrazki/o/54/2aa305f4b219efbe56c1329598f34033.png" alt="Obrazek" /><br /><br />i jak ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nigdy tego nie widziałeś ? ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:46:42+01:00</updated>
<published>2013-11-21T13:02:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57994#p57994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57994#p57994"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57994#p57994"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 13:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T11:57:45+01:00</updated>
<published>2013-11-21T11:57:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57978#p57978</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57978#p57978"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57978#p57978"><![CDATA[
poczekaj poczekaj - ty podałeś przykład z definicją tablicy wskaźników w RAM i to zadziała tak jak trzeba tyle że oczywiście teksty w tej tablicy (nie wiem czy zdajesz sobie z tego sprawę i tak jako STAŁE DOSŁOWNE) wylądują we Flash po to aby w jednej z sekcji INITx były przekopiowane do RAM ... - więc nie opłaca się tworzyć takich tablic w pamięci RAM)<br /><br />a jeśli to ma być tablica wskaźników w pamięci flash to tak:<br /><br />[syntax=c]const char * const tab&#91;&#93; PROGMEM= { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br /><br />wtedy w ogóle nie tracisz RAM'u niepotrzebnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />teraz jaśniej ? w sumie to się cieszę że poruszyłeś to ważne zagadnienie - warto to zrozumieć dobrze<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />W jaki sposób odwołanie gdzieś w programie do elementu poza tablicą miało by mieć wpływ na błędy kompilacji?<br /></div><br /><br />Ja się troszkę zwykle dziwię takim pytaniom bo po co teoretyzować - wpisz tablicę i w kodzie odwołaj się wprost do nieistniejącego elementu - zobaczysz że dostaniesz błąd czy tam warning <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie ma że boli<br /><br />chyba że będzie taki indeks wyrażeniem - czyli będzie obliczany w locie i nie będzie kompilator w stanie przewidzieć tego co się stanie to wtedy nie da żadnego ostrzeżenia i to są najgorsze tzn najcięższe do znalezienia błędy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />error: array type has incomplete element type <br /></div><br /><br />na to już padła odpowiedź - nie może być tablica wielowymiarowa w C gdzie nie jest podany żaden rozmiar podczas jej inicjalizacji. A to spowoduje że będzie trzeba zrobić ją trochę na wyrost - większą ... jeśli stringi będą różnej długości tzn dopasować do najdłuższego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T11:22:37+01:00</updated>
<published>2013-11-21T11:22:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57975#p57975</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57975#p57975"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57975#p57975"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Ale jak przez program?<br /><br />jak masz zmienną<br /><br />[syntax=c]char *tab&#91;&#93; = { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br /><br />która jest tablicą wskaźników i ją INICJALIZUJESZ danymi przecież jeszcze nie w programie, to kompilator, umieszcza sobie sam dwa elementy (dwa stringi) &quot;ala1&quot; oraz &quot;ala2&quot; w sekcji .text (czyli w pamięci Flash procka) a następnie tworzy tablicę wskaźników i inicjalizuje każdy z tych wskaźników - tak aby wskazywały właśnie na poszczególne elementy/stringi ... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />czyli jeżeli np. wyświetlę na wyświetlaczu:<br />[syntax=c]lcd_str(tab&#91;0&#93;);    // to będzie z flash<br />lcd_str(&quot;ala1&quot;);    // to będzie z RAM<br />lcd_str_P(PSTR(&quot;ala1&quot;))'   //to będzie też z flash[/syntax]<br /><br />ale jeżeli już w funkcji main zrobię coś takiego:<br />[syntax=c]tab&#91;0&#93;=&quot;ola5&quot;;<br />lcd_str(tab&#91;0&#93;);   //to będzie już z RAM???[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 28 minutach ]</span></strong><br /><br />a nie biędzie tak, że dopiero jak zrobimy tak:<br />[syntax=c]char * const tab&#91;&#93; PROGMEM= { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br /><br />to będzie to w FLASH???<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 29 minutach ]</span></strong><br /><br />chyba już się pogubiłem w tym wszystkim...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 11:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:46:11+01:00</updated>
<published>2013-11-21T11:17:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57972#p57972</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57972#p57972"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57972#p57972"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 11:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T10:48:36+01:00</updated>
<published>2013-11-21T10:48:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57968#p57968</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57968#p57968"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57968#p57968"><![CDATA[
Ale jak przez program?<br /><br />jak masz zmienną<br /><br />[syntax=c]char *tab&#91;&#93; = { &quot;ala1&quot;, &quot;ala2&quot; };[/syntax]<br /><br />która jest tablicą wskaźników i ją INICJALIZUJESZ danymi przecież jeszcze nie w programie, to kompilator, umieszcza sobie sam dwa elementy (dwa stringi) &quot;ala1&quot; oraz &quot;ala2&quot; w sekcji .text (czyli w pamięci Flash procka) a następnie tworzy tablicę wskaźników i inicjalizuje każdy z tych wskaźników - tak aby wskazywały właśnie na poszczególne elementy/stringi ... <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> — 21 lis 2013, o 10:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:45:40+01:00</updated>
<published>2013-11-21T10:01:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57958#p57958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57958#p57958"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57958#p57958"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-21T09:51:51+01:00</updated>
<published>2013-11-21T09:51:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57956#p57956</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57956#p57956"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57956#p57956"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Gdyby w 1 przykładzie wyrównać wszystkie stringi do tej samej długości to pewnie też by zadziałało<br /></div><br /><br />Bez wyrównania też zadziała ... i działa - tylko chyba panowie nie zauważyliście mojego postu co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post57917.html#p57917" >post57917.html#p57917</a><!-- l --><br /><br />oczywiście że zadziała i z tego pierwszego przykładu będzie to &quot;f&quot; - o ile zmieni się indeks na 5 zamiast 6 jak tam omyłkowo kolega podał<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />a zadziała bo:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post57924.html#p57924" >post57924.html#p57924</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 lis 2013, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-11-06T13:45:17+01:00</updated>
<published>2013-11-21T09:48:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57955#p57955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57955#p57955"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57955#p57955"><![CDATA[
<span style="color: #BFFFBF">.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 21 lis 2013, o 09:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aaadamw]]></name></author>
<updated>2013-11-21T08:00:03+01:00</updated>
<published>2013-11-21T08:00:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57935#p57935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57935#p57935"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57935#p57935"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">aaadamw napisał(a):</div><div class="quotecontent">czy odwołując się do *(stringtable[6] +1)<br /></div><br /><br />a gdzie kolega widzi element o indeksie 6 w tej tablicy ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> takiego nie ma i wystąpi błąd o przekroczeniu zakresu tablicy ale jeśli odwołasz się tak:<br /><br />*(stringtable[5] +1) <br /><br />to jak najbardziej będzie to &quot;f&quot;</div><br /><br />tak,wiem że tu nie ma szóstego elementu, pomyłka... jak pisałem posta w tablicy miałem 10 elementów, potem usunąłem kilka, a nie zmieniłem indeksu na 5 w pytaniu.<br /><br />Przy takim zapisie:<br />[syntax=c]char stringtable&#91;&#93;&#91;&#93;={<br />                    &quot;aaaaaaaaaaaa&quot;,<br />                    &quot;bbbbbbbbbbbb&quot;,<br />                    &quot;cccccccccccc&quot;,<br />                    &quot;dddddddddddd&quot;,<br />                    &quot;abcd&quot;,<br />                    &quot;efgh&quot;<br />    };[/syntax]<br /><br />kompilator wywala:<br />[syntax=c]error: array type has incomplete element type[/syntax]<br /><br />dopiero jak zapiszę:<br />[syntax=c]char stringtable&#91;&#93;&#91;15&#93;={<br />                    &quot;aaaaaaaaaaaa&quot;,<br />                    &quot;bbbbbbbbbbbb&quot;,<br />                    &quot;cccccccccccc&quot;,<br />                    &quot;dddddddddddd&quot;,<br />                    &quot;abcd&quot;,<br />                    &quot;efgh&quot;<br />    };[/syntax]<br /><br />to jest OK<br /><br />DLaczego muszę deklarować ilość znaków w stringu?<br /><br /><br /><br />Przy takim zapisie :<br />[syntax=c]char **stringtable={<br />                    &quot;aaaaaaaaaaaa&quot;,<br />                    &quot;bbbbbbbbbbbb&quot;,<br />                    &quot;cccccccccccc&quot;,<br />                    &quot;dddddddddddd&quot;,<br />                    &quot;abcd&quot;,<br />                    &quot;efgh&quot;<br />    };[/syntax]<br />mam takie warningi:<br />[syntax=c]../main.c:40:3: warning: initialization from incompatible pointer type &#91;enabled by default&#93;<br />../main.c:40:3: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;<br />../main.c:41:3: warning: excess elements in scalar initializer &#91;enabled by default&#93;<br />../main.c:41:3: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;<br />../main.c:42:3: warning: excess elements in scalar initializer &#91;enabled by default&#93;<br />../main.c:42:3: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;<br />../main.c:43:3: warning: excess elements in scalar initializer &#91;enabled by default&#93;<br />../main.c:43:3: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;<br />../main.c:44:3: warning: excess elements in scalar initializer &#91;enabled by default&#93;<br />../main.c:44:3: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;<br />../main.c:46:1: warning: excess elements in scalar initializer &#91;enabled by default&#93;<br />../main.c:46:1: warning: (near initialization for 'stringtable') &#91;enabled by default&#93;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=360">aaadamw</a> — 21 lis 2013, o 08:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-20T23:53:03+01:00</updated>
<published>2013-11-20T23:53:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57924#p57924</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57924#p57924"/>
<title type="html"><![CDATA[Re: tablica stringów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4858&amp;p=57924#p57924"><![CDATA[
Gwyn - kompilator w RAM ładnie zrobi sobie stringi oddzielnie a w tablicy<br /><br />char *stringtable[]<br /><br />umieści ładnie wskaźniki do nich i wszystko będzie ładnie działać - tylko jak pisałem wyżej - kolega przekroczył zakres w swoim przykładzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lis 2013, o 23:53</p><hr />
]]></content>
</entry>
</feed>