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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-17T00:29:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14517&amp;mode</id>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-17T00:29:05+01:00</updated>
<published>2016-02-17T00:29:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153881#p153881</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153881#p153881"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153881#p153881"><![CDATA[
Dobrze kombinujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tylko musisz uważać, bo zdefiniowane zmienne mogą być umieszczane nie po kolei <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. A co ciekawe, to standardowo kompilator umieszcza je w odwrotnej kolejności niż wpisane w pliku *.c (zajrzyj do pliku *.lss powstające przy kompilacji). Czyli musisz odejmować odwrotnie: [syntax=c]uint8_t m = pgm_read_word((uint16_t *) &amp;znak + (c - 32 - 1)) - pgm_read_word((uint16_t *) &amp;znak + (c - 32));[/syntax] lub prościej, bo i tak masz już przeczytaną wartość dla ws:[syntax=c]uint8_t m = pgm_read_word((uint16_t *) &amp;znak + (c - 32 - 1)) - (uint16_t)ws;[/syntax]<br /><br />Także musisz pamiętać o dodaniu jeszcze dodatkowego wpisu w Znak, by wszystkie znaki miały dostępny wskaźnik na początek i koniec. Oczywiście także musisz dodać zmienną na którą wskaźnik ze Znak będzie wskazywał, ale może ona być pusta:[syntax=c]const char PROGMEM Cend&#91;&#93;={};[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 17 lut 2016, o 00:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KrzychuMS]]></name></author>
<updated>2016-02-16T00:36:50+01:00</updated>
<published>2016-02-16T00:36:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153770#p153770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153770#p153770"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153770#p153770"><![CDATA[
Witaj Robercie.<br />Wstawiłem po kolei wszystkie trzy linijki kodu i jest O.K.<br /><br /><span style="color: #408000"><div class="codetitle"><b>Code:</b></div><div class="codecontent">Jak masz deklarację wskaźnika *ws, to typ jaki podajesz nie oznacza wielkości zajmowanej przez sam wskaźnik</div></span><br />masz rację <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> .<br /><br /><span style="color: #408000"><div class="codetitle"><b>Code:</b></div><div class="codecontent">A na pewno masz Atmel toolchaina a nie starego z WinAVR?<br /></div></span><br />Mam Atmel toolchaina, bo ścieżka do AVR-GCC c:\...\Atmel\AVR tools\Toolchain\bin , <br />i podobna do ....\include.<br /><br />Czy ten zapis można uprościć? <br />[syntax=c]uint8_t ILE = (pgm_read_word( &amp;Znak&#91;c-32&#93;)) - (pgm_read_word( &amp;Znak&#91;c-31&#93;));[/syntax]<br />Chodzi mi o wielkość wybranej [zmienna c] do wysłania na LCD tablicy bitmapy (ile bajtów wysłać?).<br />Np: adres cyfry <strong>5=0x0344</strong> a cyfry <strong>4=0x034A</strong> to <br /><strong>ILE = 0x034A - 0x0344  = 6 <span style="color: #BF0000">- 1</span>=5 bajtów</strong> (<strong><span style="color: #BF0000">-1</span></strong> w tej chwili bitmapa zawiera bajt mówiący o wielkości bitmapy i chcę go oszczędzić)<br />co odpowiada wielkości bitmapy cyfry <strong>5 (pięć)</strong>.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9706">KrzychuMS</a> — 16 lut 2016, o 00:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-15T01:40:01+01:00</updated>
<published>2016-02-15T01:40:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153690#p153690</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153690#p153690"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153690#p153690"><![CDATA[
Jak masz deklarację wskaźnika *ws, to typ jaki podajesz nie oznacza wielkości zajmowanej przez sam wskaźnik, bo to jest zawsze stałe a ile zajmują miejsca wskazywane przez wskaźnik dane. Czyli [syntax=c]uint8_t *ws;[/syntax] oznacza wskaźnik na elementy uint8_t. A [syntax=c]uint16_t *ws;[/syntax] oznacza taki sam wskaźnik, ale wskazujący na element uint16_t. I dopiero jak zaczynasz operować na danych pod wskaźnikiem to zaczyna mieć znaczenie jaki jest to typ, bo mówi czy np. ma być pobrany jeden czy dwa bajty oraz np. przy inkrementacji czy przy zwiększaniu wskaźnika to ma być zwiększanie o jeden czy dwa bajty.<br /><br />W moim przykładzie *ws zawiera już wskaźnik na konkretną bitmapę, bo ładowana do niej jest odpowiednia wartość 16 bitowa z tablicy Znak (czyli wartość wskaźnika) a ta bitmapa jest chyba 8 bitowa (definiowałeś jako char oraz czytałeś po jednym bajcie).<br /><br /><br /><br />Czy zapis [syntax=c]uint8_t *ws = (uint8_t *)pgm_read_word((uint16_t *) &amp;Znak + (c - 32));[/syntax] lub zapis [syntax=c]uint8_t *ws;<br />ws =  (uint8_t *)pgm_read_word((uint16_t *) &amp;Znak + (c - 32));[/syntax] także zgłasza Ci błąd?<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 14 minutach ]</span></strong><br /><br />Zapis<br />[syntax=c]uint16_t ws = pgm_read_word((uint16_t *) &amp;Znak + (c - 32));[/syntax]<br />także jest poprawny, dopóki mamy wielkość wskaźnika 16 bitów (a dla AVRów 8 bitowych to jest zawsze prawda <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />) oraz wskaźnik wskazuje na 1 bajtowe elementy. Bo tutaj do ws ładujesz wartość 16 bitową, która jest faktycznie wskaźnikiem. A potem traktujesz to jako adres (czyli wskaźnik) na nowe dane. Jak inkrementujesz to zwiększasz o jeden bajt,  więc dla twoich danych jest OK (gdybyś miał tablicę bitmap o wartościach uint16_t, to by nie zadziałało).<br /><br />int to to samo co int16_t, więc jak zamieniłeś uint16_t (unsigned) na int (signed) to dopóki operujesz na pierwszych 32KB to nie zauważysz problemu.<br /><br />A na pewno masz Atmel toolchaina a nie starego z WinAVR?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 15 lut 2016, o 01:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KrzychuMS]]></name></author>
<updated>2016-02-15T00:50:36+01:00</updated>
<published>2016-02-15T00:50:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153689#p153689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153689#p153689"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153689#p153689"><![CDATA[
Witam.<br />Tak jak <span style="color: #40BF00">Robercie</span> sugerowałeś wstawiłem poprawioną linię kodu<br />[syntax=c]296  uint8_t *ws =  pgm_read_word((uint16_t *) &amp;Znak + (c - 32));[/syntax] i dalej są błędy<br /><span style="color: #BF0000"><ul>Warnings(1 itm)<br />initialization makes pointer from integer without a cast [enabled by default] KS0108.c /LCD_64x128 line 296 C/C++ Problem<br /></ul></span><br />ja spodziewam się mieć w <strong>ws</strong> adres odpowiedniej bitmapy w pamięci <strong>flash</strong>, a więc spodziewam się adresu 2 bajtowego, dlatego podmieniłem <strong><span style="color: #FF0000">uint8_t</span></strong> na <strong><span style="color: #FF0000">uint16_t</span></strong>, czyli zrobiłem 3 zmiany w zapisie- efekty poniżej:<br />[syntax=c]296  uint16_t *ws =  pgm_read_word((uint16_t *) &amp;Znak + (c - 32)); //są błedy kompilacji<br />// po zmianie *ws na ws, czyli:<br />296  uint16_t ws =  pgm_read_word((uint16_t *) &amp;Znak + (c - 32)); // bez ostrzeźeń - działa<br />// działa również tak:<br />296  int ws = pgm_read_word( &amp;Znak &#91;c - 32&#93;);// bez ostrzeźeń - działa[/syntax] i jak widać <strong>ws</strong> musi być <strong>int</strong> lub <strong>uint16_t</strong> bo jest wskaźnikiem a więc 2 bajty.<br /><br />Dziękuję Robercie, piszę dalszy ciąg programu, mam pomysł na zmniejszenie wielkości tablicy z bitmapami. <br />Będę tu czasami w tygodniu zaglądał, może coś ciekawego się urodzi w głowach naszych forumowiczów.<br /> Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9706">KrzychuMS</a> — 15 lut 2016, o 00:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-14T16:33:00+01:00</updated>
<published>2016-02-14T16:33:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153653#p153653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153653#p153653"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153653#p153653"><![CDATA[
Tak, chyba masz starego toolchaina <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. Zamień tę linię na:<br />[syntax=c]uint8_t *ws =  pgm_read_word((uint16_t *) &amp;znak + (c - 32));[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />W nowym toolchanie masz pgm_read_ptr() definiowane jako:<br />[syntax=c]#define pgm_read_ptr(address_short)     pgm_read_ptr_near(address_short)<br /><br />#define pgm_read_ptr_near(address_short) \<br />    (void*)__LPM_word((uint16_t)(address_short))[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 lut 2016, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KrzychuMS]]></name></author>
<updated>2016-02-14T13:30:29+01:00</updated>
<published>2016-02-14T13:30:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153639#p153639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153639#p153639"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153639#p153639"><![CDATA[
Witam.<br />Próbowałem zastosować kolegi <span style="color: #00BF00"><strong>rskup</strong></span> rozwiązanie mojego problemu, ale mam błędy odnoszące się do linijki kodu:<br />[syntax=c]294   uint8_t *ws = pgm_read_ptr((uint16_t *) &amp;Znak + (c - 32));[/syntax]<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">undefined reference to `pgm_read_ptr'   KS0108.c   /LCD_64x128       C/C++ Problem<br />implicit declaration of function 'pgm_read_ptr' &#91;-Wimplicit-function-declaration&#93; KS0108.c   /LCD_64x128 line 294 C/C++ Problem<br />initialization makes pointer from integer without a cast &#91;enabled by default&#93;   KS0108.c   /LCD_64x128 line 294 C/C++ Problem<br /></div><br />Niestety mój zasób wiedzy o C jest skromny i póki co nie wiem jak rozwiązać problem związany z makrem  <span style="color: #FF0000"><strong>pgm_read_ptr</strong></span> dla kompilatora Eclipse Indigo na którym piszę swój program.<br /> Może problem jest z moim dość starym tolchain-em ATMELA - gdzie nie ma tego makra?<br />A może kolega wie jak ten problem rozwiązać?<br />Za zaangażowanie dziękuję. Krzysztof<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9706">KrzychuMS</a> — 14 lut 2016, o 13:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KrzychuMS]]></name></author>
<updated>2016-02-14T00:37:21+01:00</updated>
<published>2016-02-14T00:37:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153604#p153604</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153604#p153604"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153604#p153604"><![CDATA[
Witam.<br />Dziękuję kolegom za zainteresowanie, moim problemem. Problem rozwiązałem następująco&quot;<br />[syntax=c]void GLCD_putchar(char c){<br />uint8_t i, px, z;<br /><br />    int ptr=(pgm_read_word( &amp;Znak&#91;c-32&#93;));  // w ptr adres tablicy bitmapą znaku ASCII<br />    z=(pgm_read_byte(ptr)) &amp; (0x07);        // z ilu bajtów składa się bitmapa znak graficzny<br />    for(i=0; i&lt;(z); i++){<br />px=pgm_read_byte(++ptr);;     // pobranie z ROM kolejnych bajtów bitmapy znaku<br />if(color==0) px^=0xFF;<br />GLCD_WriteData(px);           // wysłanie na wskaźnik LCD bitmapy znaku ASCII<br />    }                                 // wstaw odstęp pomiędzy wyświetlane znaki<br />if(color==0) GLCD_WriteData(0xFF); else GLCD_WriteData(0x00); <br />}[/syntax]<br />Teraz troszkę objaśnienia do tej procedury:<br />Tablice bitmap wyglądu znaku graficznego kodu ASCII mają zmiennej ilości bajtów, inna jest dla cyfry 1 - 3 bajty, i inna dla cyfry 2 -5 bajtów, dlatego utworzyłem tyle tablic ile chcę wyświetlić różnych znaków graficznych. Aby móc prawidłowo wyświetlić bitmapę znaku dodałem jako pierwszy bajt informujący z ilu bajtów składa się dana bitmapa znaku. Tak więc teraz dla cyfry 1 tablica ma 4 bajty, a dla cyfry 2 ma 6 bajtów.<br />[syntax=c]const char PROGMEM C49&#91;&#93;={0x03, 0x42, 0x7F, 0x40};              // 49 1<br />const char PROGMEM C50&#91;&#93;={0x05, 0x42, 0x61, 0x51, 0x49, 0x46};  // 50 2[/syntax]<br /><br />Te tablice umieściłem w pamięci programu t.j. FLASH-u i są typu Read-only . Aby móc pobrać odpowiednią bitmapę znaku graficznego utworzyłem kolejną tablicę Znak[] uporządkowaną zgodnie z kodami znaków ASCII i przechowuję w niej adresy (wskaźniki -  2 bajtowe), do bitmap znaków. Ta tablica nie zawiera znaków nie drukowanych wiec pierwszym adresem jest adres bitmapy znaku - SPACJA kod 32.<br />I teraz chcąc wysłać do LCD znak SPACJA o kodzie 32 muszę odjąć ilość nie drukowanych znaków która wynosi 32, stąd adres tablicy bitmapy znaku SPACJA=32-32=0 a to jest pierwszy adres w tablicy Znak[] inaczej Znak[0]:<br />[syntax=c]int ptr=(pgm_read_word( &amp;Znak&#91;c-32&#93;));  // w ptr adres tablicy bitmapą znaku ASCII[/syntax]<br />Mając adres tablicy z bitmapą znaku np: C32 odczytuję jej [0] element mówiący ile kolejnych bajtów zajmuje bitmapa wyglądu znaku, dodatkowo asekuracyjnie ograniczyłem maską  0x07 maksymalną wielość odczytywanej bitmapy - jest to równocześnie maksymalna szerokość wyświetlanego na LCD znaku. Odczytane bajty wysyłam do LCD i po wysłaniu całej bitmapy wysyłam jeszcze odstęp pomiędzy znakami o wielkości 1 piksela. W zależności czy znaki generuję na białym tle czy zanegowane (mówi o tym zmienna <span style="color: #BF0040">color</span>) wysyłam odpowiednio 0x00 lub 0xFF.<br /><br />Kończąc dziękuję za podpowiedź koledze <span style="color: #00BF00">APAP75</span>.<br />Pozdrawiam wszystkich i do następnego &quot;problemu&quot; z C dla AVR-ów.<br /><br />P.S. Właśnie w tej chwili odebrałem od kolegi <span style="color: #00BF00">rskup</span> poprawki do mojego zapytania. Ze względu na porę zapoznam się z nimi jutro niemniej jednak bardzo serdecznie koledze dziękuję za odpowiedź.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9706">KrzychuMS</a> — 14 lut 2016, o 00:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-14T00:30:55+01:00</updated>
<published>2016-02-14T00:30:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153601#p153601</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153601#p153601"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153601#p153601"><![CDATA[
Przyjrzałem się na spokojnie dokładnie Twojemu kodowi. Poniżej poprawiony i sprawdzony. I działa poprawnie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />:<br />[syntax=c]void GLCD_putchar(char c)<br />{<br />uint8_t *ws = pgm_read_ptr((uint16_t *) &amp;Znak + (c - 32));<br />uint8_t m = pgm_read_byte(ws);<br /><br />for (uint8_t i = 0; i &lt; m; i++)<br />{<br />GLCD_WriteData(pgm_read_byte(++ws));<br />        }<br />        GLCD_WriteData(0x00);<br />}[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 lut 2016, o 00:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2016-02-13T21:45:41+01:00</updated>
<published>2016-02-13T21:45:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153573#p153573</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153573#p153573"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153573#p153573"><![CDATA[
Do pgm_read_byte() wysyła się adres argumentu (na 99% - jeszcze dobrze się nie znajduję we wskaźnikach)<br /><br />Poczytaj tutaj:<br /><br /><a href="http://mirekk36.blogspot.com/2013/11/tablica-wskaznikow-we-flash-progmem.html"  class="postlink">http://mirekk36.blogspot.com/2013/11/tablica-wskaznikow-we-flash-progmem.html</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 13 lut 2016, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-02-13T19:38:18+01:00</updated>
<published>2016-02-13T19:38:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153546#p153546</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153546#p153546"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153546#p153546"><![CDATA[
A czy m nie jest u Ciebie przypadkiem wartością pierwszego bajtu a nie wskaźnikiem na znak?<br /><br />-- <br />Pozdrawiam,<br />Rober<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 13 lut 2016, o 19:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2016-02-13T19:07:58+01:00</updated>
<published>2016-02-13T19:07:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153543#p153543</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153543#p153543"/>
<title type="html"><![CDATA[Re: Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153543#p153543"><![CDATA[
Masz tablicę znaków 8 bitowych, a tworzysz wskaźnik wskazujący na wartości 16 bitowe. Tak ma być ?<br />Nie znam tej biblioteki, ale może tutaj pies pogrzebany.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 13 lut 2016, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KrzychuMS]]></name></author>
<updated>2016-02-13T12:04:47+01:00</updated>
<published>2016-02-13T12:04:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153507#p153507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153507#p153507"/>
<title type="html"><![CDATA[Wskaźnika na wskaźnik czcionka proporcjonalna]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14517&amp;p=153507#p153507"><![CDATA[
Jest to mój pierwszy wątek więc Witam Wszystkich Forumowiczów.<br /><br />Zachciało mi się wyświetlać na LCD graficznym teksty czcionką proporcjonalną.<br />Utworzyłem tablicę fontów graficznych od kodu 32-spacja do 127:  // tu wklejam tylko fragment tablicy <br />[syntax=c]const char PROGMEM C48&#91;&#93;={0x05, 0x3E, 0x51, 0x49, 0x45, 0x3E};// 48 0<br />const char PROGMEM C49&#91;&#93;={0x03, 0x42, 0x7F, 0x40};// 49 1 <br />const char PROGMEM C50&#91;&#93;={0x05, 0x42, 0x61, 0x51, 0x49, 0x46};// 50 2<br />const char PROGMEM C51&#91;&#93;={0x05, 0x21, 0x41, 0x45, 0x4B, 0x31};// 51 3<br />const char PROGMEM C52&#91;&#93;={0x05, 0x18, 0x14, 0x12, 0x7F, 0x10};// 52 4<br />const char PROGMEM C53&#91;&#93;={0x05, 0x27, 0x45, 0x45, 0x45, 0x39};// 53 5<br />const char PROGMEM C54&#91;&#93;={0x05, 0x3C, 0x4A, 0x49, 0x49, 0x30};// 54 6<br />const char PROGMEM C55&#91;&#93;={0x05, 0x01, 0x71, 0x09, 0x05, 0x03};// 55 7<br />const char PROGMEM C56&#91;&#93;={0x05, 0x36, 0x49, 0x49, 0x49, 0x36};// 56 8<br />const char PROGMEM C57&#91;&#93;={0x05, 0x06, 0x49, 0x49, 0x29, 0x1E};// 57 9[/syntax]gdzie pierwszy bajt mówi o ilości bajtów do odczytania na reprezentację graficzną znaku,<br />oraz drugą tablicę wskaźników na lokalizację znaków : // i tu wklejam tylko fragment tablicy <br />[syntax=c]const char * const Znak&#91;&#93; PROGMEM ={C48, C49, C40, C41, C52, C53, C54, C55, C56, C57};[/syntax]<br />po odczytaniu kodu ASCII z klawiatury wołam procedurę wysłania na wskaźnik graficzny LCD obrazu znaku wciśniętego klawisza:<br />[syntax=c]GLCD_putchar(Klaw_press);[/syntax]<br />procedura wysyłająca wygląda następująco:<br />[syntax=c]char Klaw_press;    //kod ASCII wciśniętego klawisza<br />uint16_t *ws;        //wskaźnik do odczytu kodów ASCII<br />//<br /><br />void GLCD_putchar(char c){<br />uint8_t i, px;<br />uint16_t m;<br /><br />c=0x37;//hex kod cyfry 7<br />uint16_t *ws=(uint16_t*) Znak+(c-32);<br />m=*ws;<br />for(i=0; i&lt;(pgm_read_byte(*ws)); i++){<br />px=pgm_read_byte(++m);;<br />GLCD_WriteData(px);<br />  }<br />GLCD_WriteData(0x00);//odstęp pomiędzy znakami<br />}[/syntax]i taka procedura kreśli mi na ekranie LCD tylko cyfrę 7, wynika to z podmiany zmiennej C=0x37,<br /><br />[syntax=c]void GLCD_putchar(char c){<br />uint8_t i, px;<br />uint16_t m;<br />uint16_t *ws=(uint16_t*) Znak+(c-32);<br />m=*ws;<br />for(i=0; i&lt;(pgm_read_byte(*ws)); i++){<br />px=pgm_read_byte(++m);;<br />GLCD_WriteData(px);<br />  }<br />GLCD_WriteData(0x00);//odstęp pomiędzy znakami<br />}[/syntax]<br />gdy usunę tą linię kodu tak aby C=Klaw_press  na wskaźniku wyświetlane są krzaczki lub nawet cała linijka jest czarna.<br />Proszę o pomoc, co źle robię, że ten kod nie działa.<br /><br />Z góry za pomoc serdecznie dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9706">KrzychuMS</a> — 13 lut 2016, o 12:04</p><hr />
]]></content>
</entry>
</feed>