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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-29T14:42:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3217&amp;mode</id>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2013-05-29T14:42:04+01:00</updated>
<published>2013-05-29T14:42:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37983#p37983</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37983#p37983"/>
<title type="html"><![CDATA[Re: PCD8544 - wyświetlanie int]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37983#p37983"><![CDATA[
Dzięki Mirku twoje wskazówki pomogły:) Narazie wszystko śmiga aż miło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 29 maja 2013, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-29T13:48:29+01:00</updated>
<published>2013-05-29T13:48:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37971#p37971</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37971#p37971"/>
<title type="html"><![CDATA[Re: PCD8544 - wyświetlanie int]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37971#p37971"><![CDATA[
No a jak może nie być warninga skoro argument funkcji jest taki<br /><br />[syntax=c]const byte *dataPtr[/syntax]<br /><br />a ty przekazujesz taki<br /><br />[syntax=c]char buffor&#91;&#93;[/syntax]<br /><br />PRZEDE WSZYSTKIM zauważ, że to u Sun'a jest funkcja do wyświetlania stringów z pamięci FLASH a nie z RAM (dlatego ja - jak widzisz w książce do takich funkcji, zgodnie ze standardem <span style="color: #0040FF">AVR GCC</span> dodaję końcówkę <strong><span style="color: #0040FF">_P</span></strong> żeby od razu po nagłówku funkcji było widać do czego ona jest rozumiesz ? stąd masz w książce:<br /><br />[syntax=c]lcd_str()[/syntax]<br /><br />a także <br /><br />[syntax=c]lcd_str_P()[/syntax]<br /><br />i sam powiedz - od razu widać która do czego prawda ?<br /><br />a ty zaglądasz do tej funkcji Suna i widzisz tam przecież<br /><br />[syntax=c]c = pgm_read_byte( dataPtr )[/syntax]<br /><br />to po tym też powinieneś się zorientować że chodzi o string z pamięci Flash, w związku z tym Sun zresztą bardzo słusznie (no ale wiadomo to Sun) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zastosował specyfikator const - bo dla zwykłego programu wszystko co we flash jest const.<br /><br />Tyle że on jeszcze zastosował własny typ o nazwie byte<br /><br />jak to obejść?<br /><br />najprościej to poszukać w tej jego bibliotece funkcji do wyświetlania stringa z RAM, pewnie też jest tylko ty chwyciłeś za tą niewłaściwą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> A gdyby nie było to co za problem sobie to przerobić ????? wystarczy pozbyć się dwóch rzeczy TYLKO, czyli const i pgm_readbyte() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />z tym że ja bym sobie ją napisał tak bardziej pod AVR GCC <br /><br />[syntax=c]byte PCD_FStr ( LcdFontSize size, char *dataPtr ) // tu robimy char *<br />{<br />    char c;<br />    byte response;<br />    for ( c = *dataPtr; c ; ++dataPtr, c = *dataPtr ) // pozbywamy się pgm_read_byte i czytamy z RAM (dodajemy *)<br />    {<br /> <br />        response = PCD_Chr( size, (byte)c ); // &lt;--- tu zauważ że rzutujemy na byte aby znowu dostosować się do LIBsa Suna<br />        if(response == OUT_OF_BORDER)<br />            return OUT_OF_BORDER;<br />    }<br />    return OK;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 maja 2013, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2013-05-29T13:37:40+01:00</updated>
<published>2013-05-29T13:37:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37967#p37967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37967#p37967"/>
<title type="html"><![CDATA[Re: PCD8544 - wyświetlanie int]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37967#p37967"><![CDATA[
Do książki Mirku własnie lookałem. Poda funkcje Sana do wyświetlania stringów:<br /><br />[syntax=c]byte PCD_FStr ( LcdFontSize size, const byte *dataPtr )<br />{<br />    byte c;<br />    byte response;<br />    for ( c = pgm_read_byte( dataPtr ); c; ++dataPtr, c = pgm_read_byte( dataPtr ) )<br />    {<br /><br />        response = PCD_Chr( size, c );<br />        if(response == OUT_OF_BORDER)<br />            return OUT_OF_BORDER;<br />    }<br />    return OK;<br />}[/syntax]<br /><br />i bezpośrednie wrzucenie tego tak:<br />[syntax=c]PCD_FStr( size, bufor);[/syntax]<br /><br />powoduje worninga no bo nie kompatybilne typy wskaźnika. Oczywiście wczesniej przepuszczone jest to przez funkcje itoa().<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 29 maja 2013, o 13:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-29T13:05:43+01:00</updated>
<published>2013-05-29T13:05:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37964#p37964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37964#p37964"/>
<title type="html"><![CDATA[Re: PCD8544 - wyświetlanie int]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37964#p37964"><![CDATA[
co wg ciebie robi ta operacja?<br /><br />[syntax=c]buf2 = *buf;[/syntax]<br /><br />naprowadzę trochę: masz zmienną buf2 typu char, i teraz wkładasz do niej (UWAGA! TYLKO JEDEN ZNAK) spod wskaźnika *buf<br /><br />a potem buf2 przekazujesz jako argument - więc czego się spodziewasz ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />jeśli funkcja<br /><br />[syntax=c]PCD_Chr( );[/syntax]<br /><br />wysyła TYLKO pojedynczy znak to stwórz sobie funkcję<br /><br />[syntax=c]PCD_str()[/syntax]<br /><br />do której można przekazać wskaźnik do bufora i wtedy twoja funkcja mogłaby wyglądać tak jak te w książce niebieskiej do zwykłego LCD - korzystaj z tych lekcji w książce, postaraj się zrozumieć jak się tworzy tą bibliotekę do LCD. Nie po to żeby ją sobie samemu pisać - ale zrozumiesz jak się działa ze stringami - bo na razie masz z tym ogromny problem widzę<br /><br />[syntax=c]void PCD_Int( LcdFontSize size, int val){<br /> <br />        char bufor&#91;17&#93;;<br />        itoa(val, bufor, 10);<br /> <br />        PCD_str( size, bufor);<br /> <br />}[/syntax]<br /><br />prawda że krótka i fajna ? ..... a dokładnie to samo masz w książce ... i to z wyjaśnieniami co i jak .... tylko trzeba chociaż raz przeczytać ten rozdział o tworzeniu biblioteki do LCD - bo jest ważny i można się z niego sporo nauczyć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 maja 2013, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2013-05-29T12:53:23+01:00</updated>
<published>2013-05-29T12:53:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37963#p37963</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37963#p37963"/>
<title type="html"><![CDATA[PCD8544 - wyświetlanie int]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3217&amp;p=37963#p37963"><![CDATA[
Witam!<br />Korzystając z biblioteki Suna,  do wyświetlacza na układzie PCD8544 zabrakło mi funkcji wyświetlającej liczby. <br />Do tej pory naskrobałem coś takiego:<br /><br />[syntax=c]void PCD_Int( LcdFontSize size, int val){<br /><br />uint8_t i;<br />char * buf;<br />char buf2;<br />char bufor&#91;17&#93;;<br />itoa(val, bufor, 10);<br />buf = bufor;<br />buf2 = *buf;<br /><br /><br />PCD_Chr( size, buf2);<br /><br />}[/syntax]<br />ale wyświetla mi tylko dziesiątki liczby czyli zamiast np: 22 wyświetla 2.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 29 maja 2013, o 12:53</p><hr />
]]></content>
</entry>
</feed>