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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-20T15:42:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4853&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-20T15:42:15+01:00</updated>
<published>2013-11-20T15:42:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57862#p57862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57862#p57862"/>
<title type="html"><![CDATA[Re: Obsługa pamięci Flash]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57862#p57862"><![CDATA[
ok sorry nie zauważyłem że przypisujesz wskaźnik w tej linii z pgm_read_word() ... więc taki zapis jest OK i nie zgłasza żadnych warningów<br /><br />jak masz argumenty do funkcji x, i y - i są to liczby a nie stringi - to daj z kolei uint8_t zamiast char jeśli program ma być przejszysty <br /><br />ale jeszcze sprawdzę co z tymi pierwszymi warningami - chwila<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 53 minutyach ]</span></strong><br /><br />no tak tablica napis_tak[] też musi być const a zatem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]const char * const napis_tak&#91;&#93; PROGMEM  = {<br />napis_polski_tak,<br />napis_angielski_tak<br />};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lis 2013, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[damiano222]]></name></author>
<updated>2013-11-20T14:30:56+01:00</updated>
<published>2013-11-20T14:30:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57859#p57859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57859#p57859"/>
<title type="html"><![CDATA[Re: Obsługa pamięci Flash]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57859#p57859"><![CDATA[
Dziękuje za odpowiedź.<br />Po uwagach zmieniłem kod w następujący sposób:<br /><br />[syntax=c]const  char napis_polski_tak&#91;&#93; PROGMEM = &quot;Tak&quot;;<br />const  char napis_angielski_tak&#91;&#93; PROGMEM = &quot;Yes&quot;;<br /> <br />const char* napis_tak&#91;&#93; PROGMEM = {<br />                                                                                                napis_polski_tak,<br />                                                                                                napis_angielski_tak<br />                                                                 };[/syntax]<br /><br /><br />[syntax=c]void GLCD_WriteString( const char *s, unsigned char x, unsigned char y)<br />{<br />        GLCD_GoTo(x*6,y);<br /> <br />        char *ss = (char*)pgm_read_word(s+2*rodzaj_jezyka);<br />       <br />        while (pgm_read_byte(ss) != 0x00)<br />       GLCD_WriteChar(pgm_read_byte(ss++));<br /> <br />}[/syntax]<br /><br />Warning cały czas występuje, natomiast jeśli chodzi o :<br /><br />[syntax=c]char *ss = (char*)pgm_read_word(s+2*rodzaj_jezyka);[/syntax]<br /><br />to odczytuje adresy moich napisów w różnych językach, które są zawarte w tablicy napis_tak. Dlatego też odczytuje dwa bajty (word).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=494">damiano222</a> — 20 lis 2013, o 14:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-20T13:47:13+01:00</updated>
<published>2013-11-20T13:47:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57850#p57850</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57850#p57850"/>
<title type="html"><![CDATA[Re: Obsługa pamięci Flash]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57850#p57850"><![CDATA[
I bardzo dobrze że wywala ci takie błędy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />wciąż piszę o tym - że po co ludzie używacie w AVR GCC typów<br /><br />unsigned char ? hmmm ?<br /><br />użyj char - bo i tak jest każdy char domyślnie zamieniany na unsigned a za to nie powoduje to później warningów - tak jest domyślnie ustawiona konfiguracja kompilacji w AVR GCC - jak myślisz po co ? ... ano po to żeby nie trzeba było klepać bez sensu tego unsigned przed char<br /><br />to po pierwsze <br /><br />a po drugie jak czytasz z FLASH bajt - to nie pgm_read_word tylko pgm_read_byte<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lis 2013, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[damiano222]]></name></author>
<updated>2013-11-20T11:55:59+01:00</updated>
<published>2013-11-20T11:55:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57824#p57824</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57824#p57824"/>
<title type="html"><![CDATA[Obsługa pamięci Flash]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4853&amp;p=57824#p57824"><![CDATA[
Witam<br />Prosiłbym o poradę w sprawie obsługi pamięci flash w mikrokontrolerach AVR. Otóż chciałbym zrobić wielojęzykowe menu i mam problem z odwoływaniem się do napisów zadeklarowanych w pamięci flash.<br />Przejdę od razu do kodu .<br /><br />Deklaracja przykładowego słowa w dwóch językach:<br /><br />[syntax=c]const unsigned char napis_polski_tak&#91;&#93; PROGMEM = &quot;Tak&quot;;<br />const unsigned char napis_angielski_tak&#91;&#93; PROGMEM = &quot;Yes&quot;;<br /><br />const unsigned char* napis_tak&#91;&#93; PROGMEM = {<br />napis_polski_tak,<br />napis_angielski_tak<br /> };[/syntax]<br /><br />Funkcja wyświetlającej tekst na ekranie:<br /><br />[syntax=c]void GLCD_WriteString(const unsigned char *s, unsigned char x, unsigned char y) <br />{<br />GLCD_GoTo(x*6,y);<br /><br />unsigned char *ss = (unsigned char*)pgm_read_word(s+2*rodzaj_jezyka);<br /><br />while (pgm_read_byte(ss) != 0x00) <br />       GLCD_WriteChar(pgm_read_byte(ss++));<br />  <br />}[/syntax]<br /><br />Zmienna rodzaj języka przyjmuje dwie wartości 0 - j.polski 1 - j.angielski<br /><br />Wywołanie funkcji:<br />[syntax=c]GLCD_WriteString(napis_tak,0,0);[/syntax]<br /><br />Ogólnie rzecz biorąc program działa poprawnie ale kompilator wyrzuca warning:<br /><br />warning: passing argument 1 of 'GLCD_WriteString' from incompatible pointer type<br /><br />Pisze tutaj, ponieważ już bardzo długo nie mogę sobie z tym poradzić. <br />Prosiłbym o wytłumaczenie czemu typ przekazywanego wskaźnika jest niekompatybilny z tym co ma być przekazane oraz o możliwości rozwiązania tego problemu. <br />Dodam że korzystam z AvrStudio4.<br />Pozdrawiam<br /><br /><span style="color: #FF0000">Kody wklejamy przy pomocy syntax=c - Różowy J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=494">damiano222</a> — 20 lis 2013, o 11:55</p><hr />
]]></content>
</entry>
</feed>