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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-06T22:07:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1408&amp;mode</id>
<entry>
<author><name><![CDATA[main.c]]></name></author>
<updated>2015-05-06T22:07:02+01:00</updated>
<published>2015-05-06T22:07:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128422#p128422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128422#p128422"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128422#p128422"><![CDATA[
Dziękuję za pomoc. To było to <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=332">main.c</a> — 6 maja 2015, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tranzystozaur]]></name></author>
<updated>2015-05-06T19:06:23+01:00</updated>
<published>2015-05-06T19:06:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128407#p128407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128407#p128407"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=128407#p128407"><![CDATA[
Odpowiedz troche z poslizgiem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> wiec pytanie pewnie juz nie aktualne. Zaryzykuje jednak... <br /><br />....prawdopodobnie chodzi o ustawienienie Eclipsa bo kod jest ok. Mirek to wyjasnia na stronach 141/142 swojej niebieskiej ksiazki:<br /><br />Project --&gt; Properties --&gt; drzewko C/C++Build --&gt; Settings --&gt; <br />dalej w zakladce Tool settings (kolejne drzewko) --&gt; AVRCompiler --&gt; Miscellaneous --&gt; po prawej w &quot;Other flags&quot; wpisac: <strong>-DMCU=$(AVRTARGETMCU)</strong><br /><br />Mialem ten sam problem i pomoglo od razu. <br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9561">tranzystozaur</a> — 6 maja 2015, o 19:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[main.c]]></name></author>
<updated>2015-02-12T00:18:52+01:00</updated>
<published>2015-02-12T00:18:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=118507#p118507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=118507#p118507"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=118507#p118507"><![CDATA[
Odgrzeję stary temat. Mam problem z podstawieniem przez preprocesor wartości zamiast MCU (czyli w moim przypadku atmega328p) - podstawia mi dosłownie MCU i wysyła na RSa. Z parametrem F_CPU nie ma problemu - to samo makro podstawi wartość kwarca. Spotkaliście się z takim przypadkiem?<br /><br />[syntax=c]#define TOSTRING( a ) STRINGX ( a )<br />#define STRINGX( a )  #a<br /><br />uart_puts_P ( PSTR(&quot;Hardware: MCU &quot;) );<br />uart_puts_P ( PSTR( TOSTRING( MCU ) ) );<br /><br />uart_puts_P ( PSTR(&quot; Crystal &quot;) );<br />uart_puts_P ( PSTR(TOSTRING(F_CPU)) );<br />uart_puts_P ( PSTR(&quot; Hz\r\n&quot;) );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=332">main.c</a> — 12 lut 2015, o 00:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kidcowboy]]></name></author>
<updated>2012-08-13T14:41:57+01:00</updated>
<published>2012-08-13T14:41:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12515#p12515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12515#p12515"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12515#p12515"><![CDATA[
Zrozumiałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bardzo dziękuję <br /><br />P.S. Dane kontaktowe wysłałem na Państwa maila<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=313">kidcowboy</a> — 13 sie 2012, o 14:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-13T14:02:47+01:00</updated>
<published>2012-08-13T14:02:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12513#p12513</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12513#p12513"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12513#p12513"><![CDATA[
Nie - nie trujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> - pytaj śmiało do bólu <br /><br />(ale przy okazji zajrzyj też tutaj bo tam mam prośbę do ciebie:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post12501.html#p12501" >post12501.html#p12501</a><!-- l -->)<br /><br />----------------------<br /><br />posłuchaj makro <br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) STRINGX(a)</div><br /><br />dostaje najpierw do obróbki nazwę MCU (bo pod taką zdefiniowana jest nazwa procka) .... Więc w tym kroku <strong>TOSTRING(a)</strong> trafia owa nazwa <strong><span style="color: #8000FF">MCU</span></strong> i zostaje ona rozwinięta do nazwy <strong><span style="color: #008000">ATmega32</span></strong> żeby przekazać ją dopiero do <strong>STRINGX(a)</strong><br /><br />dopiero wtedy może się wykonać drugie makro <strong>STRINGX(a) #a</strong> ponieważ ma ono już to o co nam chodziło czyli nazwę <strong><span style="color: #008000">ATmega32 </span></strong>a nie nazwę <strong><span style="color: #FF0000">MCU</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 sie 2012, o 14:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kidcowboy]]></name></author>
<updated>2012-08-13T13:37:03+01:00</updated>
<published>2012-08-13T13:37:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12511#p12511</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12511#p12511"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12511#p12511"><![CDATA[
OK. ja chyba nie do końca rozumiem zapis <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) STRINGX(a) </div><br />Jak ...&quot; pierwsze makro TOSTRING najpierw pobierze parametr jaki się kryje pod przekazywaną nazwą &quot;... <br />bo zapis <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define STRINGX(a) #a</div><br />jest dla mnie zrozumiały <br /><br />P.S. Mam nadzieję że za mocno nie &quot;truję&quot; - po prostu jest to dla mnie niejasne a chciałbym zrozumieć. Jeśli gdzieś dalej w książce jest jakiś przykład, który mi to rozjaśni to ok - nie ma tematu . Po po prostu nie chcę się uczyć na zasadzie: &quot;tak zrób bo tak jest i być musi&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=313">kidcowboy</a> — 13 sie 2012, o 13:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-13T13:25:30+01:00</updated>
<published>2012-08-13T13:25:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12510#p12510</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12510#p12510"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12510#p12510"><![CDATA[
Ale przecież ta &quot;zmienna&quot; jak o nie napisałeś z makefile nie ma żadnej takie postaci jak sobie tutaj wymyśliłeś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />char MCU[] ..... itd<br /><br />zapomnij o tym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />MCU to stała tekstowa z makefile i jest to obrabiane na etapie kompilacji przez preprocesor a nie na etapie kodu programu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> żeby jakieś tam char MCU[] się tworzyło<br /><br />to tak samo jak stała F_CPU w makefile - rozumiesz ? tyle że F_CPU jest stałą dosłowną liczbową<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 sie 2012, o 13:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kidcowboy]]></name></author>
<updated>2012-08-13T13:16:47+01:00</updated>
<published>2012-08-13T13:16:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12508#p12508</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12508#p12508"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12508#p12508"><![CDATA[
Mirku trafiłeś w sedno ! Doczytać doczytałem - problem ze zrozumieniem mam. <br /><br />Jeśli założymy że zmienna nazwy procesora w pliku makefile ma następującą definicję:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">char MCU&#91;&#93;={&quot;Atmega 32&quot;};</div><br /><br />To wtedy makro <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) STRINGX(a) </div><br />pobierze jak gdyby ciało zmiennej MCU ?? <br />I wtedy <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define STRINGX(a) #a </div><br />dokona podstawienia ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=313">kidcowboy</a> — 13 sie 2012, o 13:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-13T12:14:03+01:00</updated>
<published>2012-08-13T12:14:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12503#p12503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12503#p12503"/>
<title type="html"><![CDATA[Re: OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12503#p12503"><![CDATA[
No nie rozumie kolega i nie jest to to samo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Tyle że ja bym na prawdę szczerze polecał zrobić sobie ćwiczenie praktyczne i wyświetlić efekt takich przypuszczeń np na LCD<br /><br />a zobaczyłbyś wtedy że w wyniku tego co ci się wydaje zobaczysz MCU zamiast ATMEGA32<br /><br />ale hmm dziwi mnie to co piszesz bo w książce dokładnie na tejże stronie wyjaśniam dlaczego tak się dzieje - nie doczytałeś ? czy nie zrozumiałeś tego co tam dalej jest napisane ?<br /><br />jeśli masz<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) #a</div><br /><br />i w kodzie napiszesz<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">TOSTRING(MCU)</div><br /><br />to jako wynikowy string dostaniesz <strong><span style="color: #FF0000">MCU</span></strong><br /><br />a jeśli napiszesz tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) STRINGX (a) <br />#define STRINGX(a)  #a</div><br /><br />i w kodzie dasz<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">TOSTRING(MCU)</div><br /><br />to w pierwszej linii makra najpierw nazwa <strong><span style="color: #0040FF">MCU </span></strong>zostanie rozwinięta do <strong><span style="color: #0040FF">ATmega32 </span></strong>i przekazana jako parametr do STRINGX(a) dzięki czemu efektem końcowym będzie<br /><br /><strong><span style="color: #008000">ATmega32</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 sie 2012, o 12:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kidcowboy]]></name></author>
<updated>2012-08-13T10:09:41+01:00</updated>
<published>2012-08-13T10:09:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12496#p12496</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12496#p12496"/>
<title type="html"><![CDATA[OPERATOR ZAMIANY NA STRING #]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1408&amp;p=12496#p12496"><![CDATA[
Witam, mam takie pytanko czy dobrze zrozumiałem omawiany temat ?<br /><br />Na stronie 136 napisano jak automatycznie można uzyskać efekt &quot;przedstawienia się&quot; mikrokontrolera używając dyrektyw :<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) STRINGX (a) <br />#define STRINGX(a)  #a</div><br /><br />czy teraz odwołując się w programie np.<br /><br />TOSTRING(MCU) uzyskam string np. &quot;atmega32&quot; ?? bo napisano, że &quot;...makro TOSTRING najpierw pobierze parametr jaki się kryje się pod przekazywaną nazwą ( rozumiem że pod MCU ) i przekaże go do STRINGX(a). Wtedy zadziała rozwinięcie drugiej makrodefinicji która naszą nazwę procesora zamieni na string....&quot;<br /><br />Wydaje mi się że czegoś tu nie rozumiem wg mnie to zadziała tak samo jak <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define TOSTRING(a) #a</div><br /><br />Z góry dziękuję za pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=313">kidcowboy</a> — 13 sie 2012, o 10:09</p><hr />
]]></content>
</entry>
</feed>