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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-11-04T21:04:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1741&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-04T21:04:11+01:00</updated>
<published>2012-11-04T21:04:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18199#p18199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18199#p18199"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18199#p18199"><![CDATA[
To jednak podpowiem ci żebyś jednak zajrzał dalej - do ADC tam są jeszcze lepsze sposoby i ładniejsze/zgrabniejsze - zdecydowanie. W tym przykładzie - pokazałem to w ten sposób - aby po prostu każdy zrozumiał o co w ogóle chodzi, i cieszę się - że się udało tak w ogóle <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... teraz możesz spokojnie popracować dalej nad kosmetyką kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 lis 2012, o 21:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-04T20:55:29+01:00</updated>
<published>2012-11-04T20:55:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18197#p18197</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18197#p18197"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18197#p18197"><![CDATA[
Mirku dziękuję za ciepliwość i poświęcony czas.<br />Udało się !<br /><br />teraz moja funkcja wygląda tak:<br /><br />[syntax=c]void big_num_str(uint16_t liczba, uint8_t y, uint8_t x)<br />{<br />uint8_t d[5];<br /><br />if(liczba/10000){<br />d[0]=liczba/10000;<br />d[1]=(liczba-(d[0]*10000))/1000;<br />d[2]=(liczba-(d[0]*10000)-(d[1]*1000))/100;<br />d[3]=(liczba-(d[0]*10000)-(d[1]*1000)-(d[2]*100))/10;<br />d[4]=(liczba-(d[0]*10000)-(d[1]*1000)-(d[2]*100))-(d[3]*10);<br />}<br /><br />else if((liczba/1000)&amp;&amp; !(liczba/10000)){<br />d[0]=liczba/1000;<br />d[1]=(liczba-(d[0]*1000))/100;<br />d[2]=(liczba-(d[0]*1000)-(d[1]*100))/10;<br />d[3]=(liczba-(d[0]*1000)-(d[1]*100)-(d[2]*10));<br />d[4]=10;<br />}<br /><br />else if((liczba/100) &amp;&amp; !(liczba/1000) &amp;&amp; !(liczba/10000)){<br />d[0]=liczba/100;<br />d[1]=(liczba-(d[0]*100))/10;<br />d[2]=(liczba-(d[0]*100)-(d[1]*10));<br />d[3]=10;<br />d[4]=10;<br />}<br /><br />else if((liczba/10) &amp;&amp; !(liczba/100) &amp;&amp; !(liczba/1000) &amp;&amp; !(liczba/10000)){<br />d[0]=liczba/10;<br />d[1]=(liczba-(d[0]*10));<br />d[2]=10;<br />d[3]=10;<br />d[4]=10;<br />}<br /><br />else{<br />d[0]=liczba;<br />d[1]=10;<br />d[2]=10;<br />d[3]=10;<br />d[4]=10;<br />}<br /><br /><br /><br /><br />if(y&lt;=2)<br />{<br />        uint8_t i;<br />for(i=0;i&lt;6;i++)<br />{<br />if ( d[i]&lt;10 )<br />{<br />lcd_locate(y,x);<br />lcd_char(znak[d[i]][0]);<br />lcd_locate(++y,x);<br />lcd_char(znak[d[i]][1]);<br />x++;<br />y--;<br />}<br />}<br />}<br />else<br />{<br />lcd_locate(y,x);<br />lcd_str(&quot;error&quot;);<br />}<br />}<br />[/syntax]<br /><br />może nie jest zgrabna i ładna ale działa <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=464">1bobik1</a> — 4 lis 2012, o 20:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-04T15:04:45+01:00</updated>
<published>2012-11-04T15:04:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18170#p18170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18170#p18170"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18170#p18170"><![CDATA[
Pewnie, że w funkcji. Zajrzyj sobie do książki np do rozdziało o multipleksowaniu LED tam w pętli głównej masz rozbijanie licznika na pojedyncze cyfry żeby wyświetlić każdą oddzielnie na jednym wyświetlaczu LED<br /><br />Zajrzyj sobie do przykładów o ADC albo o temperaturze 1wire - tam też masz przykłady<br /><br />Robisz sobie funkcję i w niej dzielisz panie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />jak masz np liczbę 147<br /><br />to jak ją najpierw podzielisz przez 100 to otrzymasz liczbę setek<br />jak później pomniejszysz ją o tą liczbę setek czyli (147-100) i podzielisz przez 10 to otrzymasz liczbę dziesiątek<br />a na końcu zostaną ci jedności<br /><br />najprostsze matematyczne działanie a szybkie i skuteczne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 lis 2012, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-04T13:52:17+01:00</updated>
<published>2012-11-04T13:52:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18165#p18165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18165#p18165"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18165#p18165"><![CDATA[
ostatnie pytanie<br />jak liczbę typu uint8_t 1, 2, 3, 4-cyfrową rozłożyć na cyfry składające się na tę liczbę<br />najlepiej w funkcji ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 4 lis 2012, o 13:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-03T06:06:52+01:00</updated>
<published>2012-11-03T06:06:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18121#p18121</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18121#p18121"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18121#p18121"><![CDATA[
Jak zmienn str która jest łańcuchem tekstowym może być typu uint8_t ????????????<br /><br />Posłuchaj, jak czegoś nie rozumisz z tego co podpowiadam co działa jak widzisz to dopytuj śmiało a ni dalej strzelasz tak po prostu icoś tam zgadujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br />przecież zmienna numer jest używana jako tylko jako indeks tablicy, a nie znak ascii<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 lis 2012, o 06:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-03T02:25:18+01:00</updated>
<published>2012-11-03T02:25:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18120#p18120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18120#p18120"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18120#p18120"><![CDATA[
Po zmianie rzeczywiście nie ma warningów<br />ale na wyświetlaczu to samo<br /><br />Jeśli zmienna &quot;numer&quot; ma być typu uint8_t to czy wskaźnik &quot;str&quot; też nie powinien wskazywać na zmienną typu uint8_t ?<br /><br />Po zmianie typu wskaźnika &quot;str&quot; na uint8_t przy kompilacji wywala warning:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">../main.c: In function 'main':<br />../main.c:126: warning: pointer targets in passing argument 1 of 'big_num_str' differ in signedness<br />Finished building: ../main.c</div><br />wskazuje on na linię:<br />[syntax=c] big_num_str(&quot;100&quot;, 0 , 0);[/syntax]<br />Na wyświetlaczu ciągle to samo<br /><br />po zmianie na:<br />[syntax=c] big_num_str(100, 0 , 0);[/syntax]<br />zmiana na wyświetlaczu, teraz są krzeczki tylko w kolumnie 0 i wierszu 0 i 1 (inne krzaczki)<br /><br />Ja na razie spasuję w wymyślaniu kolejnych głupot....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 3 lis 2012, o 02:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-03T00:55:54+01:00</updated>
<published>2012-11-03T00:55:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18119#p18119</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18119#p18119"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18119#p18119"><![CDATA[
ok - ale ja na razie pomagam ci tylko w usunięciu warningów<br /><br />z jakiej paczki dałeś typ zmiennej numer jako char ????<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">register char numer;</div><br /><br />toż to ma być zmienna w której będziesz przechowywał liczby i to liczby bez znaku prawda ?<br /><br />sprawdź więc czy będą warningi gdy dasz zamiast tego uint8_t <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i na drugi raz pamiętaj o prawidłowym dobieraniu typów ok ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />nawet wtedy to rzutowanie typu (char) nie będzie potrzebne - bo kompilatorowi uda się zrobić rzutowanie niejawne uint8_t na char, więc będziesz mógł pisać tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_char( znak&#91;numer&#93;&#91;0&#93; );</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 lis 2012, o 00:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-03T00:41:59+01:00</updated>
<published>2012-11-03T00:41:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18118#p18118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18118#p18118"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18118#p18118"><![CDATA[
Ok teraz opiszę wszystko najdokładniej jak potrafię.<br /><br />Na początek kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />// tablice przechowujące znaki składające się na całą cyfrę<br /><br />uint8_t tab0[] =  {1,1,1,1,1,1,1,1};<br />uint8_t tab1[] =  {31,1,1,1,1,1,1,1};<br />uint8_t tab2[] =  {31,16,16,16,16,16,16,16};<br />uint8_t tab3[] =  {17,17,17,17,17,17,17,31};<br />uint8_t tab4[] =  {31,17,17,17,17,17,17,17};<br />uint8_t tab5[] =  {31,16,16,16,16,16,16,31};<br />uint8_t tab6[] =  {31,1,1,1,1,1,1,31};<br />uint8_t tab7[] =  {31,17,17,17,17,17,17,31};<br /><br /><br />// tablica przechowująca adresy górnego i dolnego znaku składającego sie na cyfrę<br /> uint8_t znak[10][2] = {<br /><br />{ 0x04,0x03 },<br />{ 0x08,0x08 },<br />{ 0x01,0x05 },<br />{ 0x01,0x06 },<br />{ 0x03,0x08 },<br />{ 0x02,0x06 },<br />{ 0x02,0x07 },<br />{ 0x01,0x08 },<br />{ 0x07,0x03 },<br />{ 0x07,0x08 }<br />};<br /><br /><br />void big_num_str(char * str, uint8_t y, uint8_t x);<br /><br /><br /><br />int main(void) {<br /><br />lcd_init();/* inicjalizacja LCD */<br /><br />lcd_defchar( 0x08, tab0 );<br />lcd_defchar( 0x01, tab1 );<br />lcd_defchar( 0x02, tab2 );<br />lcd_defchar( 0x03, tab3 );<br />lcd_defchar( 0x04, tab4 );<br />lcd_defchar( 0x05, tab5 );<br />lcd_defchar( 0x06, tab6 );<br />lcd_defchar( 0x07, tab7 );<br /><br /><br /><br />lcd_locate(2,0);<br />lcd_char(0x04);<br />lcd_locate(3,0);<br />lcd_char(0x03);<br /><br />lcd_locate(2,1);<br />lcd_char(0x08);<br />lcd_locate(3,1);<br />lcd_char(0x08);<br /><br />lcd_locate(2,2);<br />lcd_char(0x01);<br />lcd_locate(3,2);<br />lcd_char(0x05);<br /><br />lcd_locate(2,3);<br />lcd_char(0x01);<br />lcd_locate(3,3);<br />lcd_char(0x06);<br /><br />lcd_locate(2,4);<br />lcd_char(0x03);<br />lcd_locate(3,4);<br />lcd_char(0x08);<br /><br />lcd_locate(2,5);<br />lcd_char(0x02);<br />lcd_locate(3,5);<br />lcd_char(0x06);<br /><br />lcd_locate(2,6);<br />lcd_char(0x02);<br />lcd_locate(3,6);<br />lcd_char(0x07);<br /><br />lcd_locate(2,7);<br />lcd_char(0x01);<br />lcd_locate(3,7);<br />lcd_char(0x08);<br /><br />lcd_locate(2,8);<br />lcd_char(0x07);<br />lcd_locate(3,8);<br />lcd_char(0x03);<br /><br />lcd_locate(2,9);<br />lcd_char(znak[9][0]);<br />lcd_locate(3,9);<br />lcd_char(znak[9][1]);<br /><br /><br /><br />lcd_locate(0,5);<br /><br />lcd_char(0x01);<br />lcd_char(0x02);<br />lcd_char(0x03);<br />lcd_char(0x04);<br />lcd_char(0x05);<br />lcd_char(0x06);<br />lcd_char(0x07);<br />lcd_char(0x08);<br /><br /><br /> big_num_str(&quot;100&quot;, 0 , 0);<br /><br /><br /><br /><br />/* pętla nieskończona */<br />while(1) {<br /><br />}<br /><br />}<br /><br />void big_num_str(char * str, uint8_t y, uint8_t x)<br />{<br />if(y&lt;=2)<br />{<br />register char numer;<br />while ( (numer=*(str++)) )<br />{<br />lcd_locate(y,x);<br />lcd_char((char)znak[numer][0]);<br />lcd_locate(++y,x);<br />lcd_char((char)znak[numer][1]);<br />x++;<br />y--;<br />}<br />}<br />else<br />{<br />lcd_locate(y,x);<br />lcd_str(&quot;error&quot;);<br />}<br />}[/syntax]<br /><br />Wynik kompilacji:<br /><br /><img src="http://img692.imageshack.us/img692/6938/wyswf.jpg" alt="Obrazek" /><br /><br />info z konsoli:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">**** Budowanie of configuration Release for project BIG_NUM ****<br /><br />make all <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'big_num_str':<br />../main.c:146: warning: array subscript has type 'char'<br />../main.c:148: warning: array subscript has type 'char'<br />Finished building: ../main.c<br /> <br />Building target: BIG_NUM.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,BIG_NUM.map -mmcu=atmega8 -o &quot;BIG_NUM.elf&quot;  ./LCD/lcd44780.o  ./main.o   <br />Finished building target: BIG_NUM.elf<br /> <br />Invoking: AVR Create Extended Listing<br />avr-objdump -h -S BIG_NUM.elf  &gt;&quot;BIG_NUM.lss&quot;<br />Finished building: BIG_NUM.lss<br /> <br />Create Flash image (ihex format)<br />avr-objcopy -R .eeprom -O ihex BIG_NUM.elf  &quot;BIG_NUM.hex&quot;<br />Finished building: BIG_NUM.hex<br /> <br />Create eeprom image (ihex format)<br />avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex BIG_NUM.elf  &quot;BIG_NUM.eep&quot;<br />Finished building: BIG_NUM.eep<br /> <br />Invoking: Print Size<br />avr-size --format=avr --mcu=atmega8 BIG_NUM.elf<br />AVR Memory Usage<br />----------------<br />Device: atmega8<br /><br />Program:    1418 bytes (17.3% Full)<br />(.text + .data + .bootloader)<br /><br />Data:         94 bytes (9.2% Full)<br />(.data + .bss + .noinit)<br /><br /><br />Finished building: sizedummy<br /> <br /><br />**** Build Finished ****</div><br /><br />teraz opiszę co widzimy na wyświetlaczu<br />1- kolumna 0, 1  wiersz 0, 1, 2  to wynik wywołania funkcji:<br />[syntax=c] big_num_str(&quot;100&quot;, 0 , 0);[/syntax]<br />2- kolumna 0 wiersz 5-12 to znaki własne (składowe tych z dołu)<br />3- kolumny 2-3 wiersze 0-9 wpisywane &quot;z ręki&quot; bez użycia funkcji &quot;big_num_str()&quot;<br />kod ostatnich 2 liczb:<br />[syntax=c]lcd_locate(2,8);<br />lcd_char(0x07);<br />lcd_locate(3,8);<br />lcd_char(0x03);<br /><br />lcd_locate(2,9);<br />lcd_char(znak[9][0]);<br />lcd_locate(3,9);<br />lcd_char(znak[9][1]);[/syntax]<br />dla cyfry 9 znaki składowe pobierane z tablicy (by pokazać że działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> )<br /><br />Tablica:<br />[syntax=c]uint8_t znak[10][2] = {<br /><br />{ 0x04,0x03 },<br />{ 0x08,0x08 },<br />{ 0x01,0x05 },<br />{ 0x01,0x06 },<br />{ 0x03,0x08 },<br />{ 0x02,0x06 },<br />{ 0x02,0x07 },<br />{ 0x01,0x08 },<br />{ 0x07,0x03 },<br />{ 0x07,0x08 }<br />};[/syntax]<br />Przechowuje informacje o składowych każdej z cyfr<br />znak[0][0]; to górny znak cyfry 0<br />znak[0][1]; to dolny znak cyfry 0<br /><br />teraz nieszczęsna funkcja, na początek kod:<br />[syntax=c]void big_num_str(char * str, uint8_t y, uint8_t x)<br />{<br />if(y&lt;=2)<br />{<br />register char numer;<br />while ( (numer=*(str++)) )<br />{<br />lcd_locate(y,x);<br />lcd_char((char)znak[numer][0]);<br />lcd_locate(++y,x);<br />lcd_char((char)znak[numer][1]);<br />x++;<br />y--;<br />}<br />}<br />else<br />{<br />lcd_locate(y,x);<br />lcd_str(&quot;error&quot;);<br />}<br />}[/syntax]<br /><br />i objaśnienia:<br />1-argumenty funkcji<br />pierwszy argument to wskaźnik do string(u/a)(ciągu znaków) y to numer wiersza (od 0 do 3) x numer kolumny (od 0 do 19)<br />y i x wskazują miejsce dla górnego znaku pierwszej cyfry z ciągu znaków<br /><br />2- warunek if(y&lt;=2) jeśli y będzie większe niż 2 program wyświetli &quot;error&quot;<br />3- [syntax=c]register char numer;<br />while ( (numer=*(str++)) )[/syntax]<br />kod zapożyczony z funkcji lcd_str();<br />nie będę go objaśniał, bo sam tylko wyobrażam sobie jego działanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />4-dalej jest wypisywanie górnego potem dolnego znaku każdej cyfry z ciągu. (a przynajmniej chciałbym by tak było <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> )<br /><br />Mam nadzieję że teraz dobrze to wyjaśniłem <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=464">1bobik1</a> — 3 lis 2012, o 00:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T20:37:15+01:00</updated>
<published>2012-11-02T20:37:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18095#p18095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18095#p18095"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18095#p18095"><![CDATA[
ale ma się kompilować bez warningów. Jak masz dodatkowe pytania i coś poprawiałeś to zawsze wklejaj poprawiony kod a nie opiszesz że coś zrobiłeś ale dalej warningi - bo tak to mniej więcej jakby przez telefon grać w chińczyka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> albo bierki <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> — 2 lis 2012, o 20:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T20:30:43+01:00</updated>
<published>2012-11-02T20:30:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18093#p18093</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18093#p18093"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18093#p18093"><![CDATA[
Dziękuję pięknie za to artystyczne przedstawienie przekazywania argumentów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Niestety po dodaniu rzutowania jawnego nic się nie zmieniło, te same warningi wyskakują<br /><br />a jednak coś się zmieniło, po wgraniu programu wyświetla we wskazanym miejscu pare znaków niestety nie tych które powinien.<br /><br />volatile zdjęte  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br />Wracam do kombinowania (szczęśliwie się toto kompiluje <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=464">1bobik1</a> — 2 lis 2012, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T16:35:59+01:00</updated>
<published>2012-11-02T16:35:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18069#p18069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18069#p18069"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18069#p18069"><![CDATA[
jasne - więc praktykujemy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />co to za warningi ?<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />./main.c:77: warning: array subscript has type 'char'<br /></div><br /><br />ano takie, że spójrz pan sobie na definicję funkcji lcd_char( char c );<br /><br />widzisz jakiego typu do funkcji ma być przekazany argument ? char - prawda ? a ty jakiego typu argument przekazujesz ? no przecież tablica ma elementy typu uint8_t <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> więc masz niezgodność typów tzn warninga. To nie jest akurat błędem ale na wszelki wypadek końpilator cię ostrzega. Warto jednak się pozbyć takich warningów - pokazując końpilatorowi że ty wiesz co robisz - i przygotować jawne rzutowanie typu o tak:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />lcd_char( <span style="color: #0040FF">(char)</span> znak[numer][0] );<br /></div><br /><br />rozumiesz ? funkcja się spodziewa typu char, ty jej podajesz do zjedzenia uint8_t, więc żeby się nie zakrztusiła to połóż na wierzch plasterek dobrej kiełbasy w postaci jawnego rzutowania <span style="color: #0040FF">(char) </span>.... wtedy nawet się nie zająknie <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: 1 minucie ]</span></strong><br /><br />A co do tego czy twoja funkcja działa czy nie działa - to całkiem inna sprawa - gdzieś masz babola - ale ja na razie nie mam czasu na analizę kodu - sam popróbuj na razie dokąd może jeszcze ktoś nie zerknie okiem<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />aha no i po co ci ten <br /><br />volatile przed tablicą ???? hmmmmmm? zdejmij go <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> — 2 lis 2012, o 16:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T16:26:30+01:00</updated>
<published>2012-11-02T16:26:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18067#p18067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18067#p18067"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18067#p18067"><![CDATA[
Więc powinno działać jak należy a nie działa.<br /><br />Co oznaczają te warningi ?<br /><br />&quot;Oj, oj chyba ktoś tu nie doczytał w książce o funkcjach&quot;<br /><br />doczytał, doczytał, ale zapamiętać i zrozumieć to co innego <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> praktyki potrzebuję....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 2 lis 2012, o 16:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T16:17:14+01:00</updated>
<published>2012-11-02T16:17:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18066#p18066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18066#p18066"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18066#p18066"><![CDATA[
<div class="quotetitle">1bobik1 napisał(a):</div><div class="quotecontent"><br />Wstyd....<br /><br />nie zmieniłem deklaracji na początku programu <br />było tak:<br />[syntax=c]void big_num_str(char *str);[/syntax]<br /></div><br /><br />No właśnie - a czytałeś co napisałem wyżej ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />A jesteś pewien że masz taką samą deklarację i definicję tej funkcji?<br /></div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">1bobik1 napisał(a):</div><div class="quotecontent"><br />Czy argumenty funkcji mogą zmieniać swoją wartość w jej wnętrzu ?<br />chodzi mi o x i y<br /></div><br /><br />Oj, oj chyba ktoś tu nie doczytał w książce o funkcjach i jak są do nich przekazywane argumenty (przez stos) .... więc wewnątrz funkcji ZAWSZE masz dostępne do swobodnego działania ich kopie - więc możesz z nimi postępować na zasadzie &quot;róbta co chceta&quot; ..... i tak po wyjściu z funkcji polecą w kosmos <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> — 2 lis 2012, o 16:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T15:15:26+01:00</updated>
<published>2012-11-02T15:15:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18065#p18065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18065#p18065"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18065#p18065"><![CDATA[
Wstyd....<br /><br />nie zmieniłem deklaracji na początku programu <br />było tak:<br />[syntax=c]void big_num_str(char *str);[/syntax]<br /><br />Tu poprawiony kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />// tablice przechowujące znaki składające się na całą cyfrę<br /><br />uint8_t tab0[] =  {1,1,1,1,1,1,1,1};<br />uint8_t tab1[] =  {31,1,1,1,1,1,1,1};<br />uint8_t tab2[] =  {31,16,16,16,16,16,16,16};<br />uint8_t tab3[] =  {17,17,17,17,17,17,17,31};<br />uint8_t tab4[] =  {31,17,17,17,17,17,17,17};<br />uint8_t tab5[] =  {31,16,16,16,16,16,16,31};<br />uint8_t tab6[] =  {31,1,1,1,1,1,1,31};<br />uint8_t tab7[] =  {31,17,17,17,17,17,17,31};<br /><br /><br />// tablica przechowująca adresy górnego i dolnego znaku składającego sie na cyfrę<br />volatile uint8_t znak[10][2] = {<br /><br />{ 0x04,0x03 },<br />{ 0x08,0x08 },<br />{ 0x01,0x05 },<br />{ 0x01,0x06 },<br />{ 0x03,0x08 },<br />{ 0x02,0x06 },<br />{ 0x02,0x07 },<br />{ 0x01,0x08 },<br />{ 0x07,0x03 },<br />{ 0x07,0x08 }<br />};<br /><br />void big_num(uint8_t num);<br />void big_num_str(char *str, uint8_t y, uint8_t x);<br /><br />int main(void) {<br /><br />lcd_init();/* inicjalizacja LCD */<br /><br />lcd_defchar( 0x08, tab0 );<br />lcd_defchar( 0x01, tab1 );<br />lcd_defchar( 0x02, tab2 );<br />lcd_defchar( 0x03, tab3 );<br />lcd_defchar( 0x04, tab4 );<br />lcd_defchar( 0x05, tab5 );<br />lcd_defchar( 0x06, tab6 );<br />lcd_defchar( 0x07, tab7 );<br /><br /> big_num_str(&quot;100&quot;, 0 , 0);<br /><br />/* pętla nieskończona */<br />while(1) {<br />}<br />}<br />void big_num_str(char * str, uint8_t y, uint8_t x)<br />{<br />if(y&lt;=2)<br />{<br />register char numer;<br />while ( (numer=*(str++)) )<br />{<br />lcd_locate(y,x);<br />lcd_char(znak[numer][0]);<br />lcd_locate(++y,x);<br />lcd_char(znak[numer][1]);<br />x++;<br />                          Y--;<br />}<br />}<br />else<br />{<br />lcd_locate(y,x);<br />lcd_str(&quot;error&quot;);<br />}<br />}<br />[/syntax]<br /><br />i wynik kompilacji:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">**** Budowanie of configuration Release for project BIG_NUM ****<br /><br />make all <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'big_num_str':<br />../main.c:77: warning: array subscript has type 'char'<br />../main.c:79: warning: array subscript has type 'char'<br />Finished building: ../main.c<br /> <br />Building target: BIG_NUM.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,BIG_NUM.map -mmcu=atmega8 -o &quot;BIG_NUM.elf&quot;  ./LCD/lcd44780.o  ./main.o   <br />Finished building target: BIG_NUM.elf<br /> <br />Invoking: AVR Create Extended Listing<br />avr-objdump -h -S BIG_NUM.elf  &gt;&quot;BIG_NUM.lss&quot;<br />Finished building: BIG_NUM.lss<br /> <br />Create Flash image (ihex format)<br />avr-objcopy -R .eeprom -O ihex BIG_NUM.elf  &quot;BIG_NUM.hex&quot;<br />Finished building: BIG_NUM.hex<br /> <br />Create eeprom image (ihex format)<br />avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex BIG_NUM.elf  &quot;BIG_NUM.eep&quot;<br />Finished building: BIG_NUM.eep<br /> <br />Invoking: Print Size<br />avr-size --format=avr --mcu=atmega8 BIG_NUM.elf<br />AVR Memory Usage<br />----------------<br />Device: atmega8<br /><br />Program:    1168 bytes (14.3% Full)<br />(.text + .data + .bootloader)<br /><br />Data:         94 bytes (9.2% Full)<br />(.data + .bss + .noinit)<br /><br /><br />Finished building: sizedummy<br /> <br /><br />**** Build Finished ****</div><br /><br />warningi wskazują na:<br />[syntax=c]lcd_char(znak[numer][0]);<br />                                      i to:<br />             lcd_char(znak[numer][1]);[/syntax]<br /><br />po wgraniu wyświetla &quot;0&quot; górny znak na y2 x0<br />powinno być 100 zaczynające sie na y0 x0<br />Ma ktoś jakiś pomysł?<br /><br />Czy argumenty funkcji mogą zmieniać swoją wartość w jej wnętrzu ?<br />chodzi mi o x i y<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 2 lis 2012, o 15:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T14:55:17+01:00</updated>
<published>2012-11-02T14:55:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18060#p18060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18060#p18060"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18060#p18060"><![CDATA[
No sam zobacz:<br /><br />../main.c:45: error: previous declaration of 'big_num_str' was here<br /><br />toż masz jakąś sieczuszkę w tym swoim kodzie. Weź więc wklej ten cały kod - zamiast kawałkami - bo tak to ci nie podpowiem <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> — 2 lis 2012, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T14:36:03+01:00</updated>
<published>2012-11-02T14:36:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18058#p18058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18058#p18058"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18058#p18058"><![CDATA[
po kliknięciu w ten błąd przechodzi do linijki z wywołaniem funkcji więc myślę że tak<br />definicja i deklaracja jest taka sama (przynajmniej nazwa)<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">**** Budowanie of configuration Release for project BIG_NUM ****<br /><br />make all <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'main':<br />../main.c:128: error: too many arguments to function 'big_num_str'<br />../main.c: At top level:<br />../main.c:142: error: conflicting types for 'big_num_str'<br />../main.c:45: error: previous declaration of 'big_num_str' was here<br />../main.c: In function 'big_num_str':<br />../main.c:150: warning: array subscript has type 'char'<br />../main.c:152: warning: array subscript has type 'char'<br />make: *** &#91;main.o&#93; Error 1<br /><br />**** Build Finished ****</div><br /><br />&quot;no i sprawdź to co na górze napisałem&quot;<br />nie wiem do czego to, wszystko czytałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 2 lis 2012, o 14:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T14:03:30+01:00</updated>
<published>2012-11-02T14:03:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18056#p18056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18056#p18056"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18056#p18056"><![CDATA[
A jesteś pewien że tej linii programu dotyczy ten błąd ?<br /><br />A jesteś pewien że masz taką samą deklarację i definicję tej funkcji?<br /><br />przecież to prosty komunikat i mówi o tym że próbujesz przekazać za dużo argumentów do funkcji<br /><br />więc jeśli sam nie możesz zobaczyć to wklej tu cały fragment błędów z konsoli po kompilacji a nie tylko treść komunikatu no i sprawdź to co na górze napisałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lis 2012, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T13:57:53+01:00</updated>
<published>2012-11-02T13:57:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18055#p18055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18055#p18055"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18055#p18055"><![CDATA[
Przepraszam za ten syntax, wiecej się to nie powtórzy.<br /><br />Ok Twój sposób działa teraz chciałbym pójść krok dalej i wypisywać stringi tych znaków<br />na wzór funkcji lcd_str spłodziłem coś takiego:<br />[syntax=c]void big_num_str(char * str, uint8_t y, uint8_t x)<br />{<br />if(y&lt;=2)<br />{<br />register char numer;<br />while ( (numer=*(str++)) )<br />{<br />lcd_locate(y,x);<br />lcd_char(znak[numer][0]);<br />lcd_locate(++y,x);<br />lcd_char(znak[numer][1]);<br />x++;<br />}<br />}<br />else<br />{<br />lcd_locate(y,x);<br />lcd_str(&quot;error&quot;);<br />}<br />}[/syntax]<br /><br />niestety przy wywołaniu funkcji <br />[syntax=c] big_num_str(&quot;100&quot;, 0 , 0);[/syntax]<br />wyskakuje błąd kompilacji <br />&quot; too many arguments to function 'big_num_str' &quot;<br /><br />co robię źle ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 2 lis 2012, o 13:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-02T09:35:32+01:00</updated>
<published>2012-11-02T09:35:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18041#p18041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18041#p18041"/>
<title type="html"><![CDATA[Re: Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18041#p18041"><![CDATA[
[syntax=c]char zmienna = 0x04;<br /><br />lcd_char( zmienna );[/syntax]<br /><br />o to np ci chodzi ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lis 2012, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[1bobik1]]></name></author>
<updated>2012-11-02T12:54:52+01:00</updated>
<published>2012-11-02T02:30:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18040#p18040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18040#p18040"/>
<title type="html"><![CDATA[Jak poprawnie przekazać adres znaku do funkcji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1741&amp;p=18040#p18040"><![CDATA[
Witam<br /><br />Próbuję stworzyć funkcję do wyświetlania liczb o wymiarze 1x2 na wyswietlaczach ze sterownikiem HD44780<br />wyglądają one tak:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/54/9cd96ed80e3c9358ac701a386b9e2158.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/54/9cd96ed80e3c9358ac701a386b9e2158.jpg" alt="Obrazek" /></a><br /><br />Nie ja je wymyśliłem, znam je z programu Smartie którego używam<br />w tym programie są 3 opcje dużych liter:<br />3x4<br /><a href="http://forum.atnel.pl/_obrazki/o/54/40a0e1459e5ca56478a3b0bdb768b99e.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/54/40a0e1459e5ca56478a3b0bdb768b99e.jpg" alt="Obrazek" /></a><br />2x2<br /><a href="http://img825.imageshack.us/img825/848/dsc4178lb.jpg"  class="postlink">http://img825.imageshack.us/img825/848/dsc4178lb.jpg</a><br /><br />Mój dotychczasowy kod wygląda tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br /><br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br />// tablice przechowujące znaki składające się na całą cyfrę<br />uint8_t tab0&#91;&#93; =  {1,1,1,1,1,1,1,1};<br />uint8_t tab1&#91;&#93; =  {31,1,1,1,1,1,1,1};<br />uint8_t tab2&#91;&#93; =  {31,16,16,16,16,16,16,16};<br />uint8_t tab3&#91;&#93; =  {17,17,17,17,17,17,17,31};<br />uint8_t tab4&#91;&#93; =  {31,17,17,17,17,17,17,17};<br />uint8_t tab5&#91;&#93; =  {31,16,16,16,16,16,16,31};<br />uint8_t tab6&#91;&#93; =  {31,1,1,1,1,1,1,31};<br />uint8_t tab7&#91;&#93; =  {31,17,17,17,17,17,17,31};<br /><br />// tablica przechowująca adresy górnego i dolnego znaku składającego sie na cyfrę<br />volatile uint8_t znak&#91;10&#93;&#91;2&#93; = {<br /><br />{ 0x04,0x03 },<br />{ 0x08,0x08 },<br />{ 0x01,0x05 },<br />{ 0x01,0x06 },<br />{ 0x03,0x01 },<br />{ 0x02,0x06 },<br />{ 0x02,0x07 },<br />{ 0x01,0x08 },<br />{ 0x07,0x03 },<br />{ 0x07,0x08 }<br />};<br /><br />void big_num(uint8_t num);<br /><br />int main(void) {<br /><br />lcd_init();/* inicjalizacja LCD */<br /><br />lcd_defchar( 0x08, tab0 );<br />lcd_defchar( 0x01, tab1 );<br />lcd_defchar( 0x02, tab2 );<br />lcd_defchar( 0x03, tab3 );<br />lcd_defchar( 0x04, tab4 );<br />lcd_defchar( 0x05, tab5 );<br />lcd_defchar( 0x06, tab6 );<br />lcd_defchar( 0x07, tab7 );<br /><br />big_num(1);<br />_delay_ms(300);<br />big_num(2);<br />_delay_ms(300);<br />big_num(3);<br />_delay_ms(300);<br />big_num(4);<br />_delay_ms(300);<br />big_num(5);<br /><br />/* pętla nieskończona */<br />while(1) {<br />}<br />}<br /><br />void big_num(uint8_t num)<br />{<br />uint8_t g, d;<br />g=znak&#91;num&#93;&#91;0&#93;;<br />d=znak&#91;num&#93;&#91;1&#93;;<br /><br />lcd_locate(0,1);<br />lcd_str(g);               //tu jest mój problem - z takim zapisem nie działa tak jak powinno<br />lcd_locate(1,1);<br />lcd_str(d);<br /><br /><br />}[/syntax]<br /><br />cyfry z pierwszego zdjęcia wypisywałem tak:<br />[syntax=c]lcd_locate(2,0);<br />    lcd_str(&quot;\x04&quot;);<br />    lcd_locate(3,0);<br />    lcd_str(&quot;\x03&quot;);[/syntax]<br /><br />jak ten zapis: &quot;\x04&quot; zastąpić wartością ze zmiennej ?<br />Próbowałem wielu zapisów ale sam tego nie wymyślę wskażcie drogę Panowie.<br /><br /><span style="color: #FF0000">[ ale zdaje się, że już po raz drugi koledze zwracam uwagę na to żeby używać znaczników [ syntax = c ] zamiast [ code ] , wystarczy że edytujesz ten post i zobaczysz o co chodzi - mirekk36 ]</span>[syntax=c]&#91;syntax=c&#93;[/syntax][/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=464">1bobik1</a> — 2 lis 2012, o 02:30</p><hr />
]]></content>
</entry>
</feed>