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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-10-27T10:39:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=15696&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-10-27T10:39:43+01:00</updated>
<published>2020-10-27T10:39:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229567#p229567</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229567#p229567"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229567#p229567"><![CDATA[
<div class="quotetitle">mario.ie napisał(a):</div><div class="quotecontent"><br />ale zrozumialem przeslanie...chyba przez lenistwo zawracam glowe zamiast poszukac<br /></div><br />Wcale to nie było moim przesłaniem .... tu kolega troszkę popłynął w domysłach niestety, a nawet mocno popłynął.<br /><br />To, że w Bluebooku pokazywałem takie makra to było przede wszystkim po to żeby pokazać możliwości preprocesora i lepiej nauczyć czytelnika jak można z tego korzystać .... krótko mówiąc w celach dydaktycznych.<br /><br />Na dzień dzisiejszy nie przez żadne zapracowanie tylko normalnie i otwartym tekstem odradzam stosowanie takich makr, a jak widzę że ktoś tak sobie to tłumaczy jak kolega - to nawet nie będę wyjaśniał dlaczego, powiem tylko że i tak ...i tak sam z nich za jakiś czas zrezygnujesz i sam zobaczysz dlaczego ... później będzie trzeba przerabiać różne swoje kody - szczególnie te starsze gdzie będziesz miał naćkane tych makr. Ale dobrze ucz się na własnych błędach - może dłużej zajmie, ale za to nikt ci tego nie odbierze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... tak czy inaczej powodzenia !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 paź 2020, o 10:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2020-10-26T23:17:24+01:00</updated>
<published>2020-10-26T23:17:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229561#p229561</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229561#p229561"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229561#p229561"><![CDATA[
No i pięknie! O to chodziło - wędka, nie ryba <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=1546">micky</a> — 26 paź 2020, o 23:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario.ie]]></name></author>
<updated>2020-10-26T22:25:27+01:00</updated>
<published>2020-10-26T22:25:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229560#p229560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229560#p229560"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229560#p229560"><![CDATA[
Witam panie Mirku;<br />z calym szacunkiem rozumiem ze ma pan pelne rece roboty i czasu brak dla wszytkich <br />entuzjastow ale w BB pisal pan o makrach upraszczajacych dostep do portow,<br />wiec zapytalem,<br />a tu tak na nie  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ...<br />ale zrozumialem przeslanie...chyba przez lenistwo zawracam glowe zamiast poszukac  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ,<br /> i tu dla innych zanim zapytaja :<br /><br />//forum.atnel.pl/post974.html#p974<br />i<br />//mirekk36.blogspot.com/2011/12/jezyk-c-makra-upraszczajace-dostep-do.html<br />i tak na marginesie kolego micki,<br />chwile to trwalo ale znalazlem idac panskim tropem ,<br />sam sie pograzylem przy deklaracji podalem pin nie deklarujac portu  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />,<br />brak jednego argumentu wygenerowal blad  <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=9479">mario.ie</a> — 26 paź 2020, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2020-10-26T07:57:36+01:00</updated>
<published>2020-10-26T07:57:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229556#p229556</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229556#p229556"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229556#p229556"><![CDATA[
Brak jednego argumentu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 26 paź 2020, o 07:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2020-10-26T00:15:50+01:00</updated>
<published>2020-10-26T00:15:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229553#p229553</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229553#p229553"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229553#p229553"><![CDATA[
Najlepiej w ogóle nie używać takich makr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 paź 2020, o 00:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario.ie]]></name></author>
<updated>2020-10-26T00:11:11+01:00</updated>
<published>2020-10-26T00:11:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229551#p229551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229551#p229551"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=229551#p229551"><![CDATA[
Witam , mam podobny problem,compilator twierdzi ze nie zdeklarowalem nazwy RESET2<br /><br />[syntax=c]#define_port2(x)PORT ## x<br />#define_ddr2(x)DDR ## x<br />#define_pin2(x)PIN ## x<br /><br />#define_reg(x,y)x<br />#define_pin_num(x,y)y<br /><br /><br /><br />#defineSET_OUTPUT2(x,y)DDR(x) |= (1&lt;&lt;y)<br />#defineSET_INPUT2(x,y)DDR(x) &amp;= ~(1&lt;&lt;y)<br />#defineSET_INPUT_WITH_PULLUP2(x,y)SET_INPUT2(x,y);SET2(x,y)<br /><br />#defineIS_SET2(x,y)((PIN(x) &amp; (1&lt;&lt;y)) != 0)<br /><br />#definePORT(x)_port2(x)<br />#defineDDR(x)_ddr2(x)<br />#definePIN(x)_pin2(x)<br />#defineREG(x)_reg(x)<br />#definePIN_NUM(x)_pin_num(x)<br /><br />#defineRESET2(x,y)PORT(x) &amp;= ~(1&lt;&lt;y)<br />#defineSET2(x,y)PORT(x) |= (1&lt;&lt;y)<br />#defineTOGGLE2(x,y)PORT(x) ^= (1&lt;&lt;y)<br /><br />#defineRESET(x)RESET2(x)<br />#defineSET(x)SET2(x)<br />#defineTOGGLE(x)TOGGLE2(x)<br />#defineSET_OUTPUT(x)SET_OUTPUT2(x)<br />#defineSET_INPUT(x)SET_INPUT2(x)<br />#defineSET_PULLUP(x)SET2(x)<br />#defineIS_SET(x)IS_SET2(x)[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/9479/c4c82e4274233daaebc9e19fbf6f76d6.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9479/c4c82e4274233daaebc9e19fbf6f76d6.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9479">mario.ie</a> — 26 paź 2020, o 00:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-01T17:21:07+01:00</updated>
<published>2016-07-01T17:21:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163214#p163214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163214#p163214"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163214#p163214"><![CDATA[
<div class="quotetitle">janusz17 napisał(a):</div><div class="quotecontent"><br />Makra działają dobrze, tylko zrobiłeś w kodzie lekki galimatias.<br /></div><br /><br />Bo jak autor wątku myśli dlaczego w Bluebooku są nazwy<br /><br />SEG_A, SEG_B itd a nie jakieś jednoliterowe kikuty A, B itp ???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 lip 2016, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2016-07-01T16:20:37+01:00</updated>
<published>2016-07-01T16:20:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163212#p163212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163212#p163212"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163212#p163212"><![CDATA[
Makra działają dobrze, tylko zrobiłeś w kodzie lekki galimatias. Najpierw definiujesz:<br />[syntax=c]#define P_ANOD C<br />#define P_CYFR D[/syntax] <br />a zaraz potem <br />[syntax=c]#define C (1&lt;&lt;2)<br />#define D (1&lt;&lt;3)[/syntax]<br /><br />czyli ostatecznie w nazwie portu zostaje podstawiona wartość np. (1&lt;&lt;2) zamiast litery C i (1&lt;&lt;3) zamiast litery D. To samo dzieje się przy podstawianiu do DDR().<br />Poprostu inaczej oznacz segmenty. Użyj małych liter albo dodaj przed nimi podkreślnik: _A, _B....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 1 lip 2016, o 16:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kroniowiorka]]></name></author>
<updated>2016-07-01T13:44:57+01:00</updated>
<published>2016-07-01T13:44:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163201#p163201</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163201#p163201"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163201#p163201"><![CDATA[
Dodałem spacje i nic to nie zmienia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13713">Kroniowiorka</a> — 1 lip 2016, o 13:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2016-07-01T13:30:03+01:00</updated>
<published>2016-07-01T13:30:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163200#p163200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163200#p163200"/>
<title type="html"><![CDATA[Re: Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163200#p163200"><![CDATA[
A czy po słowie #include nie powinno być spacji? Pliki main.c i przerwanie.c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 1 lip 2016, o 13:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kroniowiorka]]></name></author>
<updated>2016-07-01T12:21:20+01:00</updated>
<published>2016-07-01T12:21:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163196#p163196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163196#p163196"/>
<title type="html"><![CDATA[Nie działają makra]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15696&amp;p=163196#p163196"><![CDATA[
Witam ostatnio mam problem tego typu, że gdy chcę użyć makr z książki to wyrzuca mi błędy.<br /><br /><br />definicje.h<br />[syntax=c]#ifndef _definicje_h_<br />#define _definicje_h_<br /><br />/*-------------------------PORTY I PINY----------------------------------------*/<br /><br />#define P_ANOD C<br />#define P_CYFR D<br /><br />#define A1 (1&lt;&lt;0)<br />#define A2 (1&lt;&lt;1)<br />#define A3 (1&lt;&lt;2)<br />#define A4 (1&lt;&lt;3)<br /><br />#define A (1&lt;&lt;0)<br />#define B (1&lt;&lt;1)<br />#define C (1&lt;&lt;2)<br />#define D (1&lt;&lt;3)<br />#define E (1&lt;&lt;4)<br />#define F (1&lt;&lt;5)<br />#define G (1&lt;&lt;6)<br />#define DOT (1&lt;&lt;7)<br /><br /><br />#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT##x)<br />//MAKRO PINU<br />#define PIN(x) SPIN(x)<br />#define SPIN(x) (PIN##x)<br />//MAKRO DDR<br />#define DDR(x) SDDR(x)<br />#define SDDR(x) (DDR##x)<br /><br />/*-----------------------------ZMIENNE I FUNKCJE------------------------------------*/<br /><br />void ini(void);<br /><br />#endif[/syntax]<br /><br />przerwanie.c<br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&quot;definicje.h&quot;<br /><br /><br />void ini(void){<br />DDR(P_CYFR) |= (A | B | C | D | E | F | G | DOT );<br />PORT(P_CYFR) &amp;=~ (A | B | C | D | E | F | G | DOT );<br /><br />DDR(P_ANOD) |= (A1 | A2 | A3 | A4);<br />PORT(P_ANOD) |= (A1 | A2 | A3 | A4);<br />}[/syntax]<br /><br />main.c<br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&quot;definicje.h&quot;<br /><br /><br />int main(void){<br />ini();<br />while(1){<br /><br /><br /><br />}//tu kończy się pętla while<br />}//tu kończy się int main(void);[/syntax]<br /><br /><br />Błędy:<br />13:17:54 **** Incremental Build of configuration Release for project Projekt_z_glowy ****<br />make all <br />'Building file: ../przerwanie.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF&quot;przerwanie.d&quot; -MT&quot;przerwanie.o&quot; -c -o &quot;przerwanie.o&quot; &quot;../przerwanie.c&quot;<br />In file included from ../przerwanie.c:2:0:<br />../przerwanie.c: In function 'ini':<br />../definicje.h:31:18: error: pasting &quot;DDR&quot; and &quot;(&quot; does not give a valid preprocessing token<br /> #define SDDR(x) (DDR##x)<br />                  ^<br />../definicje.h:30:16: note: in expansion of macro 'SDDR'<br /> #define DDR(x) SDDR(x)<br />                ^<br />../przerwanie.c:6:2: note: in expansion of macro 'DDR'<br />  DDR(P_CYFR) |= (A | B | C | D | E | F | G | DOT );<br />  ^<br />../przerwanie.c:6:2: warning: implicit declaration of function 'DDR' [-Wimplicit-function-declaration]<br />../przerwanie.c:6:14: error: lvalue required as left operand of assignment<br />  DDR(P_CYFR) |= (A | B | C | D | E | F | G | DOT );<br />              ^<br />In file included from ../przerwanie.c:2:0:<br />../definicje.h:25:19: error: pasting &quot;PORT&quot; and &quot;(&quot; does not give a valid preprocessing token<br /> #define SPORT(x) (PORT##x)<br />                   ^<br />../definicje.h:24:17: note: in expansion of macro 'SPORT'<br /> #define PORT(x) SPORT(x)<br />                 ^<br />../przerwanie.c:7:2: note: in expansion of macro 'PORT'<br />  PORT(P_CYFR) &amp;=~ (A | B | C | D | E | F | G | DOT );<br />  ^<br />../przerwanie.c:7:2: warning: implicit declaration of function 'PORT' [-Wimplicit-function-declaration]<br />../przerwanie.c:7:15: error: lvalue required as left operand of assignment<br />  PORT(P_CYFR) &amp;=~ (A | B | C | D | E | F | G | DOT );<br />               ^<br />In file included from ../przerwanie.c:2:0:<br />../definicje.h:31:18: error: pasting &quot;DDR&quot; and &quot;(&quot; does not give a valid preprocessing token<br /> #define SDDR(x) (DDR##x)<br />                  ^<br />../definicje.h:30:16: note: in expansion of macro 'SDDR'<br /> #define DDR(x) SDDR(x)<br />                ^<br />../przerwanie.c:9:2: note: in expansion of macro 'DDR'<br />  DDR(P_ANOD) |= (A1 | A2 | A3 | A4);<br />  ^<br />../przerwanie.c:9:14: error: lvalue required as left operand of assignment<br />  DDR(P_ANOD) |= (A1 | A2 | A3 | A4);<br />              ^<br />In file included from ../przerwanie.c:2:0:<br />../definicje.h:25:19: error: pasting &quot;PORT&quot; and &quot;(&quot; does not give a valid preprocessing token<br /> #define SPORT(x) (PORT##x)<br />                   ^<br />../definicje.h:24:17: note: in expansion of macro 'SPORT'<br /> #define PORT(x) SPORT(x)<br />                 ^<br />../przerwanie.c:10:2: note: in expansion of macro 'PORT'<br />  PORT(P_ANOD) |= (A1 | A2 | A3 | A4);<br />  ^<br />../przerwanie.c:10:15: error: lvalue required as left operand of assignment<br />  PORT(P_ANOD) |= (A1 | A2 | A3 | A4);<br />               ^<br />make: *** [przerwanie.o] Błąd 1<br /><br />Wie ktoś czym to jest spowodowane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13713">Kroniowiorka</a> — 1 lip 2016, o 12:21</p><hr />
]]></content>
</entry>
</feed>