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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-02-19T00:11:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=105&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-02-19T00:11:33+01:00</updated>
<published>2018-02-19T00:11:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204178#p204178</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204178#p204178"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204178#p204178"><![CDATA[
ktoś by ci poświęcił pewnie czas ale gdybyś nie bawił się w archeologa i nie doklejał się do starych wątków - masz pytanie zakładaj nowy wątek. Nie wiem czy byś chciał wchodzić na forum na którym byś widział jeden GIGA WĄTEK i wszyscy by się do niego doklejali - jest sens ?<br /><br />forum jest po to aby zadawać pytania w nowych wątkach ...<br /><br />dlatego blokuję ten wątek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lut 2018, o 00:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[11jacekj]]></name></author>
<updated>2018-02-18T21:11:31+01:00</updated>
<published>2018-02-18T21:11:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204168#p204168</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204168#p204168"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=204168#p204168"><![CDATA[
Zainteresowałem się dwustopniowym makro bo doszedłem w BB do rozdziału o wyświetlaczu LCD. Przeczytałam rozdział już dwa razy teraz czytam trzeci bo nie ogarniam tego do końca. Przyznam szczerze że czytam też ten wątek na forum bo muszę to zrozumieć w końcu, nie całkiem rozumiem co tu piszecie więc zacząłem kombinować po swojemu. I tu mam prośbę, gdyby ktoś poświęcił mi chwilę przeczytał moje wypociny i skomentował ewentualnie poprawił moje rozumowanie to bardzo by mi pomógł. Mamy taki fragment kodu:<br />[syntax=c]#define LCD_RSPORT    C<br /> <br />#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT ## x)<br /><br />PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS);[/syntax]<br />Po napotkaniu w kodzie linijki [syntax=c]PORT(LCD_RSPORT) &amp;= ~(1&lt;&lt;LCD_RS);[/syntax] kompilator w miejsce LCD_RSPORT wstawi literę C.<br />C jako argument zostanie przekazana do dyrektyw [syntax=c]#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT ## x)[/syntax]<br />które jak dla mnie działają od końca.<br />W linii [syntax=c]#define SPORT(x) (PORT ## x)[/syntax] najpierw C zostanie sklejone ze słowem PORT, otrzymamy PORTC. W tej samej linii SPORT(C) ostanie zastąpione słowem PORTC. Następnie przejdziemy linię wyżej i suma sumarum w tej linii otrzymamy słowo PORTC. A następnie PORTC zostanie wstawione miejscu gdzie kompilator napotkał PORT(LCD_RSPORT).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12856">11jacekj</a> — 18 lut 2018, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[boryshoroneskul]]></name></author>
<updated>2018-02-04T12:36:58+01:00</updated>
<published>2018-02-04T12:36:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=203280#p203280</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=203280#p203280"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=203280#p203280"><![CDATA[
Przepraszam, że poruszam może przebrzmiały temat. Takie coś znalazłem, może to komuś coś rozjaśni.<br />__CONCAT to jest makro które przyjmuje nie tylko tokeny jako argumenty, a tak wydaje mi się, mają makra bezpośrednio używające ##   (Tak?)<br />Jestem początkujący, z góry przepraszam za błędy.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;                 //definicje adresów portów i bitów<br />#include &lt;stdint.h&gt;//Definicje typów np. int16_t .Tu jest __CONCAT<br />#include&lt;util/delay.h&gt;<br /><br />#define CTRL B<br />#define _DDR __CONCAT(DDR,CTRL)    <br />#define _PORT __CONCAT(PORT,CTRL)<br /><br />int main(void)       //Mruganie diodą. <br />{<br />_DDR |=(1&lt;&lt;PD7);   //DDR(CTRL) |=(1&lt;&lt;PD7);  <br />for(;;)<br />{<br />_PORT^=(1&lt;&lt;PD7);    //PORT(CTRL)^=(1&lt;&lt;PD7);//Zmieniam znak<br />_delay_ms(1000);<br />}<br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15942">boryshoroneskul</a> — 4 lut 2018, o 12:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Parser]]></name></author>
<updated>2017-01-14T21:46:29+01:00</updated>
<published>2017-01-14T21:46:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179864#p179864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179864#p179864"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179864#p179864"><![CDATA[
Dzięki wielkie koledzy. <br /><br />Rozwinięcie iom8.h oświeciło mnie !   <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=12906">Parser</a> — 14 sty 2017, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-01-14T21:26:44+01:00</updated>
<published>2017-01-14T21:26:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179862#p179862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179862#p179862"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179862#p179862"><![CDATA[
Witam<br /><div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Sprawa prosta. PC5 to makro 5. (to jest to samo)<br /></div><br />bo:<br /><div class="quotetitle">iom8.h napisał(a):</div><div class="quotecontent"><br />/* PORTC */<br />#define PC6 6<br />#define PC5 5<br />#define PC4 4<br />#define PC3 3<br />#define PC2 2<br />#define PC1 1<br />#define PC0 0<br /></div><br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 14 sty 2017, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-01-14T21:12:55+01:00</updated>
<published>2017-01-14T21:12:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179861#p179861</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179861#p179861"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179861#p179861"><![CDATA[
witam,<br />Sprawa prosta. PC5 to makro 5. (to jest to samo) <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Zauważ że wpisując PC5 zamiast PD5 lub odwrotnie, uzyskasz identyczne zachowanie programu.<br />Będzie tylko mniej czytelny dla nas i Ciebie. PA5,PB5,PC5... to jest wartość 5.<br />To samo dla PA0,PB0,PC0...to 0. <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=11549">Daro69</a> — 14 sty 2017, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Parser]]></name></author>
<updated>2017-01-14T19:40:21+01:00</updated>
<published>2017-01-14T19:40:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179855#p179855</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179855#p179855"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=179855#p179855"><![CDATA[
Głęboka cześć tym co czytają ... <br /><br />Właśnie przemęczam te makra upraszczające z BB-ka, strona 218-220. Opisuję przykład z książki. <br />Lewą stronę rozumiem . ( Dla mnie te makra po prostu likwidują nawias  przekształcając  ciąg znaków PORT(X)  w PORTX )<br /><br />W inicjacji <strong> DDR (LCD_D7PORT) |= ( 1&lt;&lt;LCD_D7):</strong><br />Makra + definicja : #define LCD_D7PORT  C    powodują, że zapis : DDR (LCD_D7PORT)  przechodzi w DDRC  <br /><br />OK. Ale co ze stroną prawą tej inicjacji ?  skoro mamy port C i była definicja : #define LCD_D7  5<br />to wychodzi mi |= (1&lt;&lt;5 )     a  powinno być  |= (1&lt;&lt;PC5) <br /><br />dlaczego 5 zamiast PC5 ?   <br /><br />Chwała temu kto mi to  wyjaśni, bo też nie daje mi to spokoju ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12906">Parser</a> — 14 sty 2017, o 19:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-06T23:21:47+01:00</updated>
<published>2015-08-06T23:21:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136656#p136656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136656#p136656"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136656#p136656"><![CDATA[
<div class="quotetitle">Arni napisał(a):</div><div class="quotecontent"><br />Jeśli tak<br /></div><br />No DOKŁADNIE tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... dokładnie i nie inaczej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> - widzisz w końcu zaskoczyłeś <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> — 6 sie 2015, o 23:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2015-08-06T23:20:44+01:00</updated>
<published>2015-08-06T23:20:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136655#p136655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136655#p136655"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136655#p136655"><![CDATA[
Czyli mogę rozwinąć to tak?<br />[syntax=c]PORT(LED_PORT) SPORT(D)<br /><br />SPORT(D) (PORT##D)[/syntax]<br /><br />Jeśli tak, to zaczynam to rozumieć. Jeśli nie, to stracę resztę włosów, która mi została na głowie.<br /><br />Może Pan polecić jakieś rzetelne źródło informacji (książka, artykuł) na temat działania preprocesora?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10260">Arni</a> — 6 sie 2015, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-06T23:08:28+01:00</updated>
<published>2015-08-06T23:08:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136650#p136650</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136650#p136650"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136650#p136650"><![CDATA[
po to jest to D żeby właśnie przekazać do drugiego makra jako argument, dopiero na poziomie drugiego makra - preprocesor podstawi sobie D <br /><br />Na pierwszym poziomie <br /><br />[syntax=c]#define PORT(x) (PORT##x)[/syntax]<br /><br />preprocesor zobaczy tylko nieszczęsny LED_PORT <br /><br />REASUMUJĄAC, gdy najpierw będzie tak:<br /><br />[syntax=c]#define PORT(x) SPORT(x)[/syntax]<br /><br />to do makra SPORT zostanie przekazana nazwa stałej LED_PORT<br /><br />[syntax=c]#define SPORT(x) (PORT##x)[/syntax]<br /><br />a tutaj już sobie LED_PORT zamieni na D bo zobaczy, że stałej o nazwie LED_PORT przypisana jest wartość D<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sie 2015, o 23:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2015-08-06T22:54:26+01:00</updated>
<published>2015-08-06T22:54:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136645#p136645</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136645#p136645"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136645#p136645"><![CDATA[
Hmmm...<br /><br />Nie o pamiętanie chodzi a o rozumienie i z tym mam cały czas problem.<br /><br />Skoro preprocesor ignoruje zapis po pierwszej spacji to po co jest tam to 'D'? Skąd on później wie, że do PORT ma dokleić D?<br /><br /><br />[syntax=c]#define LED_PORT D[/syntax]<br /><br />Cały czas myślałem, że powyższy zapis mówi preprocesorowi, że LED_PORT znaczy 'D'...<br /><br />Ja wiem, że to działa, ale chcę wiedzieć jak. Jeśli zrozumiem, to nie będę musiał pamiętać <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=10260">Arni</a> — 6 sie 2015, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-06T22:03:17+01:00</updated>
<published>2015-08-06T22:03:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136634#p136634</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136634#p136634"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136634#p136634"><![CDATA[
<div class="quotetitle">Arni napisał(a):</div><div class="quotecontent"><br />chciałby pod 'x' podstawiać LED_PORT zamiast 'D'? LED_PORT znaczy przecież 'D' bo tak to wcześniej zdefiniowaliśmy, czy nie?<br /></div><br />Nie ...<br /><br />eeeeh jeszcze raz ...<br /><br />sprawdź sobie bo można to sprawdzić nawet bez kompilacji w eclipse i bez wgrywania do procka.<br /><br />Zrób taką definicję:<br /><br />[syntax=c]#define MUCHA[/syntax]<br /><br />a później zrób tak<br /><br />[syntax=c]#ifdef MUCHA<br />int main( void ) {<br /><br />    while(1);<br />}<br />#endif[/syntax]<br /><br />okaże się, że w związku z tym iż jest zdefiniowana STAŁA o nazwie MUCHA to ten fragment kodu będzie biały i da się skompilować - zgadza się<br /><br />a teraz zmień na górze definicję tak:<br /><br />[syntax=c]#define MUCHA1[/syntax]<br /><br />zobaczysz że Eclipse zaznaczy na szaro to co znajduje się w warunku <strong><span style="color: #BF0040">#ifdef </span></strong>- zgadza się ? zgadza no bo preprocesor nie widzi już nazwy <strong><span style="color: #0080FF">MUCHA</span></strong><br /><br />a teraz uważaj dokładnie, teraz zrób taką definicję na górze<br /><br />[syntax=c]#define MUCHA D[/syntax]<br /><br />Jak myślisz - zanim to zrobisz - zadziała warunek czy nie ? heeee ... i tu cię mam  - zobacz warunek zadziała<br /><br />jeśli tego nie wiedziałeś i nie rozumiesz to zapamiętaj sobie że DEFINICJA STAŁEJ PREPROCESORA liczy się tylko do pierwszej spacji - reszta jest pomijana - jeśli nie definiujemy WYRAŻENIA w tym miejscu ... a więc preprocesor widzi tylko stałą o nazwie <strong><span style="color: #0080FF">MUCHA </span></strong>a nie <strong><span style="color: #0040FF">MUCHA D</span></strong> - rozumiesz ?<br /><br />dlatego odpowiedziałem NIE na twoje powyższe pytanie <br /><br />teraz już to chyba zapamiętasz co ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sie 2015, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2015-08-06T21:36:16+01:00</updated>
<published>2015-08-06T21:36:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136631#p136631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136631#p136631"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=136631#p136631"><![CDATA[
To ja muszę zadać pytanie. Proszę się trzymać.<br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Oczywiście ktoś mógłby zadać pytanie - ale zaraz hola hola, to po co takie podwójne makro skoro można byłoby niby prościej to napisać o tak np:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define PORT(x) (PORT##x)</div><br /><br />no nie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Ale niestety - jeśli byś tak zrobił to w miejscu kodu, preprocesor rozwinąłby to nieszczęśliwie tak:<br /><br />PORT<strong><span style="color: #FF0000">LED_PORT</span></strong> |= (1&lt;&lt;PD2);<br /><br />teraz jaśniej troszkę ?<br /></div><br /><br />Dlaczego on by tak to rozwinął? Przecież <br /><br />[syntax=c]#define LED_PORT   D[/syntax]<br /><br />znaczy, że LED_PORT ma być podstawiane jako literka &quot;D&quot; w kodzie kompilowanego programu. Dlaczego kompilator przy sklejaniu bezpośrednio:<br /><br />[syntax=c]#define PORT(x) (PORT##x)[/syntax]<br /><br />chciałby pod 'x' podstawiać LED_PORT zamiast 'D'? LED_PORT znaczy przecież 'D' bo tak to wcześniej zdefiniowaliśmy, czy nie?<br /><br />Ja rozumiem, że to pytanie trochę o to dlaczego czerwone jest czerwone (co jak się okazuje nie jest takie jednoznaczne i oczywiste ale to temat na inną dyskusję <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />). Zastanawia mnie jednak jak preprocesor interpretuje 'parametry', które podajemy mu w nawiasach i dlaczego przy makrze dwupoziomowym podstawi 'D' zamiast LED_PORT, a przy jednopoziomowym stanie na LED_PORT.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10260">Arni</a> — 6 sie 2015, o 21:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-04-04T17:16:43+01:00</updated>
<published>2014-04-04T17:16:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76948#p76948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76948#p76948"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76948#p76948"><![CDATA[
<div class="quotetitle">rafmodel napisał(a):</div><div class="quotecontent"><br />Tylko jedno pytanie skąd kompilator wie, że raz za x ma podstawić literę a kiedy liczbę?<br />Wynika to może z tego , że PORT i DDR to litery a PIN to liczby?<br /></div><br /><br />jeszcze raz proszę przeczytaj uważnie to:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post975.html#p975" >post975.html#p975</a><!-- l --><br /><br />i zobacz jak działają te makra<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 kwi 2014, o 17:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rafmodel]]></name></author>
<updated>2014-04-04T15:31:17+01:00</updated>
<published>2014-04-04T15:31:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76947#p76947</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76947#p76947"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76947#p76947"><![CDATA[
Karolku i wszystkim innym - już sobie poradziłem. Tylko jedno pytanie skąd kompilator wie, że raz za x ma podstawić literę a kiedy liczbę?<br />Wynika to może z tego , że PORT i DDR to litery a PIN to liczby?<br />Pozdrawiam i dziękuję za wyrozumiałość i pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3320">rafmodel</a> — 4 kwi 2014, o 15:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2014-04-04T14:43:04+01:00</updated>
<published>2014-04-04T14:43:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76945#p76945</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76945#p76945"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76945#p76945"><![CDATA[
Po to właśnie by nie trzeba pisać całej nazwy portu tylko A, i numer Pinu.<p>Statystyki: Napisane przez Gość — 4 kwi 2014, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rafmodel]]></name></author>
<updated>2014-04-04T14:42:03+01:00</updated>
<published>2014-04-04T14:42:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76944#p76944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76944#p76944"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76944#p76944"><![CDATA[
Przepraszam, ale tak mam, jak czegoś nie mogę zrozumieć tzn, że się zaciąłem. <br />Takie mamy definicje w .h. <br />[syntax=c]#define LCD_D7PORT  A<br />#define LCD_D7 6<br />#define LCD_D6PORT  A<br />#define LCD_D6 5<br />#define LCD_D5PORT  A<br />#define LCD_D5 4<br />#define LCD_D4PORT  A<br />#define LCD_D4 3[/syntax]<br />No dobra teraz już się zamotałem. Skoro w całym programie korzystamy z tych definicji czyli  np LCD_D7PORT i LCD_D7. to po co nam te makra. Myślałem, że makra umożliwiają nam skrócenie czynności do minimum tak jak np w Visual Basic'u pod excela.<br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />, wiem, że załapie, Karolek a  z tym wpisanie PORT(C) w eclipsie to nie za bardzo rozumiem, sorry <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=3320">rafmodel</a> — 4 kwi 2014, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[karolek]]></name></author>
<updated>2014-04-04T14:07:35+01:00</updated>
<published>2014-04-04T14:07:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76943#p76943</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76943#p76943"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76943#p76943"><![CDATA[
wpisz do eclipsa <br /><br />napisz np PORT(C) i najedz myszka , jak sie pokaze &quot;chmurka&quot; to zjedz na nia myszka i strzaleczkami przesówaj w lewo lub  w prawo bardzo ułatwia!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2535">karolek</a> — 4 kwi 2014, o 14:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-04-04T13:59:43+01:00</updated>
<published>2014-04-04T13:59:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76942#p76942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76942#p76942"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76942#p76942"><![CDATA[
bo e programie piszesz np PORT 6   i ten x jest zamieniany na 6<br />nie widze calego kodu i pisze z pamieci.  ale zobacz na definicje portow lcd w pliku .h i bedzie wszystko jasne. <br /><br />Wysłane z telefonu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 4 kwi 2014, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rafmodel]]></name></author>
<updated>2014-04-04T13:41:55+01:00</updated>
<published>2014-04-04T13:41:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76941#p76941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76941#p76941"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=76941#p76941"><![CDATA[
Proszę o wybaczenie, ale nie rozumiem kompletnie tego makra ułatwiającego dostęp do portów.Siedzę nad LCD i w zasadzię działanie rozumiem (noty+bluebook+przykłady) i jakoś ogólnie to łapie. Ale teraz się wgryzam dokładnie linijka po linijka. Mamy takie makro<br />[syntax=c]#define SET_RS PORT(LCD_RSPORT) |=(1&lt;&lt;(LCD_RS)[/syntax]<br />to jest jasne nazwa makra SET_RS spowoduje ustawienie 1 na porcie LCD_RSPORT na miejscu LCD_RS bitu. wcześniej zdefiniowaliśmy w pliku nagłówkowym  zarówno port A jak i który bit 0. i jest ok<br />Ale przy tym makrze się rozkładam:<br />[syntax=c]#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT##x)[/syntax]<br />definicję rozumiem ale skąd wiemy jakie jest x?? gdzie to jest przypisane? Oczywiście mam na myśli program wraz z biblioteką do LCD z płyty załączonej do BlueBook'a.<br /><br />Dziękuje za pomoc i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3320">rafmodel</a> — 4 kwi 2014, o 13:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rysiekm55]]></name></author>
<updated>2013-11-09T17:06:48+01:00</updated>
<published>2013-11-09T17:06:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=55997#p55997</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=55997#p55997"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=55997#p55997"><![CDATA[
Dziś po długiej analizie wreszcie zrozumiałem jak działają te makra. Jak w książce napisane skracają definicji portów w pliku nagłówkowym, zamiast pełnej nazwy wstawia się samą literę; A, B, C, D itd....A potem makra uzupełniają do pełnej postaci.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1756">rysiekm55</a> — 9 lis 2013, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pisiorek]]></name></author>
<updated>2013-07-02T09:40:11+01:00</updated>
<published>2013-07-02T09:40:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40585#p40585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40585#p40585"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40585#p40585"><![CDATA[
OK, teraz wszystko jasne. Dziękuję i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1454">pisiorek</a> — 2 lip 2013, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-02T09:17:35+01:00</updated>
<published>2013-07-02T09:17:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40584#p40584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40584#p40584"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40584#p40584"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />dlaczego jednak nie można tego skrócić do takiej formy ? Czy to jest niedoskonałość preprocesora, czy jest jakiś inny powód ?<br /></div><br /><br />w książce niebieskiej starałem się to opisać, tu na forum też niejednokrotnie - i zawsze też proszę - nie dopatrywać się niedoskonałości w kompilatorach itp ... gdy się samemu jeszcze nie do końca coś rozumie bo to prowadzi ZAWSZE na manowce <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />ale ok powtórzę to po raz kolejny<br /><br />nie można od razu zrobić tak jak piszesz ponieważ po takiej operacji:<br /><br />[syntax=c]#define LED_PORT D<br />#define PORT(x) (PORT##x)[/syntax]<br /><br />otrzymałbyś w wyniku sklejenia nazwę<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />PORT<span style="color: #FF0000">LED_PORT</span><br /></div><br /><br />zamiast oczekiwanego PORT<span style="color: #0040FF">D</span>, rozumiesz - sklejenie działa od razu na przekazany argument którym jest LED_PORT, preprocesor nie ma możliwości rozwinięcia nazwy LED_PORT do literki D, i dlatego potrzebny jest kolejny krok żeby argument LED_PORT został zamieniony przez samą literkę D, która dopiero zostanie doklejona<br /><br />teraz będzie jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lip 2013, o 09:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pisiorek]]></name></author>
<updated>2013-07-02T08:59:24+01:00</updated>
<published>2013-07-02T08:59:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40581#p40581</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40581#p40581"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40581#p40581"><![CDATA[
Dziękuję za szybką odpowiedź, jeszcze ostatnia wątpliwość. Odnośnie fragmentu z pierwszego Twojego postu wyjaśniającego problem, oraz oTwojej odpowiedzi na mój poprzedni post: <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Oczywiście ktoś mógłby zadać pytanie - ale zaraz hola hola, to po co takie podwójne makro skoro można byłoby niby prościej to napisać o tak np:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define PORT(x) (PORT##x)</div><br /><br />no nie ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Ale niestety - jeśli byś tak zrobił to w miejscu kodu, preprocesor rozwinąłby to nieszczęśliwie tak:<br /><br />PORT<span style="color: #FF0000">LED_PORT</span> |= (1&lt;&lt;PD2);<br /></div> a w odpowoiedzi na mój post :<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Dobrze rozumiesz tylko w tym miejscu mała nieścisłość:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent">pisiorek napisał(a):<br />w konsekwencji wycięcie z niej tylko końcowego oznaczenia portu, czyli w tym przypadku litery &quot;D&quot;, a fragment:<br /></div><br /><br />nie nastąpi żadne wycięcie - tylko podstawienie argumentu definicji preprocesora czyli tej literki D</div><br />Skoro fragment kodu:<div class="codetitle"><b>Code:</b></div><div class="codecontent">(...)PORT(x)(...)</div> radzi sobie z wyłuskaniem samego parametru &quot;D&quot;, bo w SPORT(x) już zostaje SPORT(D), to teoretycznie zapis mógłby wyglądać  tak: <div class="codetitle"><b>Code:</b></div><div class="codecontent">#define PORT(x) (PORT##x)</div>dlaczego jednak nie można tego skrócić do takiej formy ? Czy to jest niedoskonałość preprocesora, czy jest jakiś inny powód ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1454">pisiorek</a> — 2 lip 2013, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-02T07:40:06+01:00</updated>
<published>2013-07-02T07:40:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40577#p40577</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40577#p40577"/>
<title type="html"><![CDATA[Re: Przykład z książki: 5.5 LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=105&amp;p=40577#p40577"><![CDATA[
Dobrze rozumiesz tylko w tym miejscu mała nieścisłość:<br /><br /><div class="quotetitle">pisiorek napisał(a):</div><div class="quotecontent"><br />w konsekwencji wycięcie z niej tylko końcowego oznaczenia portu, czyli w tym przypadku litery &quot;D&quot;, a fragment:<br /></div><br /><br />nie nastąpi żadne wycięcie - tylko podstawienie argumentu definicji preprocesora czyli tej literki D<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lip 2013, o 07:40</p><hr />
]]></content>
</entry>
</feed>