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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21444&amp;mode</id>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-10-18T19:43:39+01:00</updated>
<published>2018-10-18T19:43:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212768#p212768</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212768#p212768"/>
<title type="html"><![CDATA[Re: Błąd &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212768#p212768"><![CDATA[
Dzięki<br />Tego mi brakowało.<br />To pokazuje też ile jeszcze wiedzy mi brakuje.<br />Ale najważniejsze że rozumiem ten kod, co kilka miesięcy temu było by niemożliwe.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 18 paź 2018, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-10-18T19:06:17+01:00</updated>
<published>2018-10-18T19:06:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212764#p212764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212764#p212764"/>
<title type="html"><![CDATA[Re: Błąd &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212764#p212764"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />DDRA nie jest liczbą uint8_t<br /></div><br />DDRA jest liczbą <strong><em>uint8_t</em></strong>, tylko że reprezentuje <strong>zawartość</strong> rejestru, która nie jest wartością stałą znaną podczas kompilacji (stąd błąd).<br />Wartością stałą jest za to wskaźnik do tego rejestru i to poprzez wskaźnik należy się do rejestru odwoływać.<br />Niestety tablica dwuwymiarowa tu się nie sprawdzi, bo LINIAx_PORT to musi być adres rejestru (typ <em><strong>volatile uint8_t*</strong></em>), za to LINIAx_PIN to stała wartość całkowita (typ <em><strong>uint8_t</strong></em>), a jak wiadomo tablica może zawierać tylko elementy tego samego typu.<br />Trzeba więc stworzyć dwie tablice (co będzie mało wygodne), lub stworzyć strukturę ze wskaźnikiem i stałą całkowitą, a później tablicę struktur:[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define ILE_LINII_TESTUJEMY 3<br /><br />#define LINIA1_PIN PA1<br />#define LINIA2_PIN PA3<br />#define LINIA3_PIN PB3<br /><br />#define LINIA1_PORT &amp;DDRA<br />#define LINIA2_PORT &amp;DDRA<br />#define LINIA3_PORT &amp;DDRB<br /><br />typedef struct {<br />    volatile uint8_t *port;<br />    uint8_t bit;<br />} pin_ctrl_t;<br /><br />pin_ctrl_t tablica&#91;3&#93; = {<br />    { LINIA1_PORT, LINIA1_PIN },<br />    { LINIA2_PORT, LINIA2_PIN },<br />    { LINIA3_PORT, LINIA3_PIN }<br />};<br /><br />uint8_t i = 0;<br /><br />void tester_engine( void );<br /> <br />int main( void ) {<br /> <br />    while ( 1 ) {<br />        tester_engine();<br />    }// while<br />}// main<br /> <br /> <br /> <br />void tester_engine( void ) {<br />    for ( i = 0 ; i&lt;ILE_LINII_TESTUJEMY; i++ ) {<br />        *tablica&#91;i&#93;.port |= ( 1 &lt;&lt; tablica&#91;i&#93;.bit );<br />    }// for<br />}// tester_engine()[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 18 paź 2018, o 19:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-10-18T18:28:08+01:00</updated>
<published>2018-10-18T18:28:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212762#p212762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212762#p212762"/>
<title type="html"><![CDATA[Re: Błąd &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212762#p212762"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />DDRA nie jest liczbą uint8_t (jak zmieniłem na liczbę, to mi się skompilowało).<br /></div><br />Napisz w którym miejscu zrobiłeś tę zmianę ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 18 paź 2018, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-10-18T18:18:50+01:00</updated>
<published>2018-10-18T18:18:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212760#p212760</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212760#p212760"/>
<title type="html"><![CDATA[Re: Błąd &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212760#p212760"><![CDATA[
DDRA nie jest liczbą uint8_t (jak zmieniłem na liczbę, to mi się skompilowało).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 18 paź 2018, o 18:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-10-18T18:30:48+01:00</updated>
<published>2018-10-18T18:08:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212758#p212758</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212758#p212758"/>
<title type="html"><![CDATA[Błąd &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21444&amp;p=212758#p212758"><![CDATA[
Witajcie <br />Chciałem sobie ułatwić życie i poległem.<br />Wymyśliłem że stworzę pętlę w której będę ustawiał określony stan na określonym pinie procka.<br />Wykreowałem tablicę dwu wymiarową <br />i w tablicy wstawiłem przyjazne dla mnie nazwy LINIA1_PORT, LINIA2_PORT,  LINIA3_PORT oraz LINIA1_PIN,  LINIA2_PIN  LINIA2_PIN. Niestety kompilator czepia się nazw LINIAx_PORT.<br />Krzyczy main.c:17:1: error: initializer element is not constant  <br />Rozumiem już co to oznacza ale nie mam pojęcia jak to obejść.<br />Tak mi ta pętla pasuje i w zasadzie mógłbym to obejść stosując switch-a ale wolałbym zdeklarować w tablicy i odwoływać się tak jak w kodzie.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define ILE_LINII_TESTUJEMY 3<br /><br />#define LINIA1_PIN PA1<br />#define LINIA2_PIN PA1<br />#define LINIA3_PIN PB3<br /><br />#define LINIA1_PORT DDRA<br />#define LINIA2_PORT DDRA<br />#define LINIA3_PORT DDRB<br /><br />uint8_t i = 0;<br /><br />uint8_t tablica &#91;3&#93; &#91;3&#93; = {{ LINIA1_PORT, 1, 1 }<br />    , {LINIA1_PIN, LINIA2_PIN,  LINIA3_PIN}<br />};<br /><br />void tester_engine( void );<br /><br />int main( void ) {<br /><br />    while ( 1 ) {<br />        tester_engine();<br />    }//_____________________________________________  Koniec while   ________<br />}//_________________________________________________  Koniec main    ________<br /><br /><br /><br />void tester_engine( void ) {<br />    for ( i = 0 ; i == ( ILE_LINII_TESTUJEMY  - 1 ) ; i++ ) {<br />        tablica &#91;0&#93;&#91;i&#93; |= ( 1 &lt;&lt; tablica &#91;1&#93; &#91;0&#93; );<br />    }// _____________________________________________ Koniec for i __________________________<br />}//__________________________________________________ Koniec tester_engine___________________[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 18 paź 2018, o 18:08</p><hr />
]]></content>
</entry>
</feed>