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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-20T13:54:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4852&amp;mode</id>
<entry>
<author><name><![CDATA[erykko]]></name></author>
<updated>2013-11-20T13:54:41+01:00</updated>
<published>2013-11-20T13:54:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57853#p57853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57853#p57853"/>
<title type="html"><![CDATA[Re: Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57853#p57853"><![CDATA[
Z tym, że błąd pojawia się nawet przy deklarowaniu kolejnych pinów wejściowych i wyjściowych z makra. Same tampltes można ominąć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1529">erykko</a> — 20 lis 2013, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-20T13:23:24+01:00</updated>
<published>2013-11-20T13:23:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57845#p57845</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57845#p57845"/>
<title type="html"><![CDATA[Re: Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57845#p57845"><![CDATA[
Jak ci się zachciewa używać takich makr - to poczytaj sobie najpierw o templates'ach dla C w Atmel Studio <br /><br />Skądinąd takie makra dla prostego programowania w C to mega przerost formy nad treścią ... Najgorzej jest używać czegoś czego się nie rozumie ... A błędy które ci wyskakują nie są związane stricte z kompilacją jakichś tam makr tylko z faktem przede wszystkim że templates'y nie są obsługiwane w eclipse (zdaje się bo pewien nie jestem - nie korzystam z tempaltes przy programowaniu w C dla AVR) ... chociaż to fajny mechanizm ale trzeba mieć świadomość jakie on niesie za sobą zalety ale także wady ... na jedną wadę właśnie się naciąłeś<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lis 2013, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2013-11-20T12:31:03+01:00</updated>
<published>2013-11-20T12:31:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57834#p57834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57834#p57834"/>
<title type="html"><![CDATA[Re: Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57834#p57834"><![CDATA[
<div class="quotetitle">perlon napisał(a):</div><div class="quotecontent"><br />Po podstawieniu przez preprocesor backslashe są kontynuatorami linii czyli, że następna linia jest funkcjonalną kontynuacją poprzedniej.<br /></div><br /><br />Dzięki, nigdy tego jeszcze nie używałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 20 lis 2013, o 12:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-11-20T12:18:51+01:00</updated>
<published>2013-11-20T12:18:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57832#p57832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57832#p57832"/>
<title type="html"><![CDATA[Re: Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57832#p57832"><![CDATA[
Po podstawieniu przez preprocesor backslashe są kontynuatorami linii czyli, że następna linia jest funkcjonalną kontynuacją poprzedniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 20 lis 2013, o 12:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2013-11-20T12:09:52+01:00</updated>
<published>2013-11-20T12:09:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57829#p57829</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57829#p57829"/>
<title type="html"><![CDATA[Re: Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57829#p57829"><![CDATA[
A do czego są te backslash-e na końcu każdej lini w pliku makra<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 20 lis 2013, o 12:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[erykko]]></name></author>
<updated>2013-11-20T11:18:47+01:00</updated>
<published>2013-11-20T11:18:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57819#p57819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57819#p57819"/>
<title type="html"><![CDATA[Błędy budowy w Eclipse]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4852&amp;p=57819#p57819"><![CDATA[
Jako, że w Atmel Studio mam jeden błąd, którego nie potrafię ogarnąć skopiowałem kod do Eclipse. Eclipse wyświetla mi ponad 20 błędów, tak jakby w ogóle miał problem z plikiem z makrami, poniżej wrzucam kod. Wszystko co związane z makrem jest oznaczone jako błąd. Już na etapie deklaracji &quot;PIN_IN&quot; oraz &quot;PIN_OUT&quot; są oznaczone jako problemy.<br /><br />Kod programu:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;LCD/PinMacros.h&quot;<br />#include &quot;LCD/lcd.h&quot;<br /><br />PIN_OUT(led, C, 7);<br />PIN_OUT(buzz, C, 3);<br />PIN_OUT(kontrolka1, A, 6);<br />PIN_OUT(kontrolka2, A, 5);<br /><br />PIN_IN(key1, C, 6)(true);<br />PIN_IN(key2, C, 5)(true);<br />PIN_IN(key3, C, 4)(true);<br />PIN_IN(key4, D, 2)(true);<br />PIN_IN(key5, A, 7)(true);<br /><br />void rozpocznij_pomiar(uint8_t krotnosc);<br /><br />volatile char lcd_lines&#91;2&#93;&#91;16&#93;;<br /><br />volatile uint8_t krotnosc_pomiaru;<br />volatile uint8_t numer_pomiaru;<br />volatile int suma_pomiarow;<br />volatile int uplyw_czasu;<br /><br />typedef enum {<br />Led, Buzz<br />} Indicator;<br />volatile Indicator indicator;<br /><br />template &lt;typename Pin&gt;<br />uint8_t klawisz_wcisniety(Pin pin)<br />{<br />if (!pin.value())<br />{<br />_delay_ms(80);<br />if (!pin.value())<br />return 1;<br />}<br />return 0;<br />}<br /><br />volatile unsigned char flaga1;<br />volatile unsigned char flaga2;<br /><br />int main(void) {<br /><br />lcd_init();<br /><br />sprintf((char *) lcd_lines&#91;0&#93;, &quot;Witaj!&quot;);<br />sprintf((char *) lcd_lines&#91;1&#93;, &quot;Nacisnij Start&quot;);<br /><br />MCUCR |= (1 &lt;&lt; ISC01);<br />GICR |= (1 &lt;&lt; INT0);<br /><br />kontrolka1.set();<br /><br />while (1) {<br /><br />lcd_cls();<br />lcd_locate(0, 0);<br />lcd_str((char*) lcd_lines&#91;0&#93;);<br />lcd_locate(1, 0);<br />lcd_str((char*) lcd_lines&#91;1&#93;);<br /><br />if (flaga1) {<br />TCCR1B &amp;= ~((1 &lt;&lt; CS12) | (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10));<br />TCNT1 = 0;<br /><br />sprintf((char *) lcd_lines&#91;0&#93;, &quot;Blad! Za dlugi&quot;);<br />sprintf((char *) lcd_lines&#91;1&#93;, &quot;czas reakcji&quot;);<br />flaga1 = 0;<br />}<br /><br />if (flaga2) {<br />int srednia = suma_pomiarow / krotnosc_pomiaru;<br />sprintf((char *) lcd_lines&#91;0&#93;, &quot;Twoj wynik to&quot;);<br />sprintf((char *) lcd_lines&#91;1&#93;, &quot;%i ms&quot;, srednia);<br />flaga2=0;<br />}<br /><br />if (klawisz_wcisniety(key5)) {<br />indicator = Indicator(!indicator);<br />kontrolka1.set(indicator == Led);<br />kontrolka2.set(indicator == Buzz);<br />}<br /><br />if (klawisz_wcisniety(key1)) {<br />lcd_cls();<br />rozpocznij_pomiar(1);<br />}<br /><br />if (klawisz_wcisniety(key3)) {<br />lcd_cls();<br />rozpocznij_pomiar(5);<br />}<br />}<br />}<br /><br />void rozpocznij_pomiar(uint8_t krotnosc) {<br />krotnosc_pomiaru = krotnosc;<br />numer_pomiaru = 0;<br />suma_pomiarow = 0;<br />uplyw_czasu = 0;<br /><br />sei();<br /><br />_delay_ms(1000 + 500 * (rand() % 3));<br /><br />if (indicator == Led)<br />led.set();<br />else if (indicator == Buzz)<br />buzz.set();<br /><br />OCR1A = 2000;<br />TCCR1B |= (1 &lt;&lt; WGM12);<br />TCCR1B |= (1 &lt;&lt; CS11);<br />TIMSK |= (1 &lt;&lt; OCIE1A);<br /><br />}<br /><br />ISR(TIMER1_COMPA_vect) {<br />++uplyw_czasu;<br />TCNT1 = 0;<br />if (uplyw_czasu == 3000) {<br />flaga1 = 1;<br />}<br />}<br /><br />ISR(INT0_vect) {<br />TCCR1B &amp;= ~((1 &lt;&lt; CS12) | (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10));<br />TCNT1 = 0;<br />suma_pomiarow += uplyw_czasu;<br />++numer_pomiaru;<br /><br />cli();<br /><br />led.clear();<br />buzz.clear();<br /><br />if (numer_pomiaru == krotnosc_pomiaru) {<br />flaga2 = 1;<br />}<br />}[/syntax]<br /><br />Makra:<br />[syntax=c]#ifndef PINMACROS<br /><br />#define PIN_OUT(name, portLetter, pinNumber) \<br />struct Pin##portLetter##pinNumber \<br />{ \<br />Pin##portLetter##pinNumber() \<br />{ \<br />DDR##portLetter |= (1 &lt;&lt; pinNumber); \<br />} \<br />inline void set() \<br />{ \<br />PORT##portLetter |= (1 &lt;&lt; pinNumber); \<br />} \<br />inline void set(bool value) \<br />{ \<br />value ? set() : clear(); \<br />} \<br />inline void clear() \<br />{ \<br />PORT##portLetter &amp;= ~(1 &lt;&lt; pinNumber); \<br />} \<br />inline void toggle() \<br />{ \<br />PORT##portLetter ^= (1 &lt;&lt; pinNumber); \<br />} \<br />} name<br /><br />#define PIN_IN(name, portLetter, pinNumber) \<br />struct Pin##portLetter##pinNumber \<br />{ \<br />Pin##portLetter##pinNumber(bool pullup = false) \<br />{ \<br />if (pullup) \<br />PORT##portLetter |= (1 &lt;&lt; pinNumber); \<br />} \<br />inline uint8_t value() \<br />{ \<br />return PIN##portLetter &amp; (1 &lt;&lt; pinNumber); \<br />}\<br />} name<br /><br />#endif /* PINMACROS_H_ */[/syntax]<br /><br />A tutaj błędy:<br />DescriptionResourcePathLocationType<br />make: *** [main.o] Error 1nowylicznik C/C++ Problem<br />expected specifier-qualifier-list before 'PinD2'main.c/nowylicznikline 29C/C++ Problem<br />expected specifier-qualifier-list before 'PinC7'main.c/nowylicznikline 21C/C++ Problem<br />expected specifier-qualifier-list before 'PinC6'main.c/nowylicznikline 26C/C++ Problem<br />expected specifier-qualifier-list before 'PinC5'main.c/nowylicznikline 27C/C++ Problem<br />expected specifier-qualifier-list before 'PinC4'main.c/nowylicznikline 28C/C++ Problem<br />expected specifier-qualifier-list before 'PinC3'main.c/nowylicznikline 22C/C++ Problem<br />expected specifier-qualifier-list before 'PinA7'main.c/nowylicznikline 30C/C++ Problem<br />expected specifier-qualifier-list before 'PinA6'main.c/nowylicznikline 23C/C++ Problem<br />expected specifier-qualifier-list before 'PinA5'main.c/nowylicznikline 24C/C++ Problem<br />expected expression before 'Indicator'main.c/nowylicznikline 98C/C++ Problem<br />expected declaration specifiers or '...' before numeric constantmain.c/nowylicznikline 26C/C++ Problem<br />expected declaration specifiers or '...' before numeric constantmain.c/nowylicznikline 27C/C++ Problem<br />expected declaration specifiers or '...' before numeric constantmain.c/nowylicznikline 28C/C++ Problem<br />expected declaration specifiers or '...' before numeric constantmain.c/nowylicznikline 29C/C++ Problem<br />expected declaration specifiers or '...' before numeric constantmain.c/nowylicznikline 30C/C++ Problem<br />expected '=', ',', ';', 'asm' or '__attribute__' before '&lt;' tokenmain.c/nowylicznikline 46C/C++ Problem<br />'struct PinC7' has no member named 'set'main.c/nowylicznikline 126C/C++ Problem<br />'struct PinC7' has no member named 'clear'main.c/nowylicznikline 153C/C++ Problem<br />'struct PinC3' has no member named 'set'main.c/nowylicznikline 128C/C++ Problem<br />'struct PinC3' has no member named 'clear'main.c/nowylicznikline 154C/C++ Problem<br />'struct PinA6' has no member named 'set'main.c/nowylicznikline 71C/C++ Problem<br />'struct PinA6' has no member named 'set'main.c/nowylicznikline 99C/C++ Problem<br />'struct PinA5' has no member named 'set'main.c/nowylicznikline 100C/C++ Problem<br /><br /><br />Dziwne. W Atmel Studio nie ma tylu błędów, a tu występują. Tak jakby kompilator w jakiś inny sposób to kompilował.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1529">erykko</a> — 20 lis 2013, o 11:18</p><hr />
]]></content>
</entry>
</feed>