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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-28T10:43:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19078&amp;mode</id>
<entry>
<author><name><![CDATA[krzsiek050]]></name></author>
<updated>2017-08-28T10:43:16+01:00</updated>
<published>2017-08-28T10:43:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194086#p194086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194086#p194086"/>
<title type="html"><![CDATA[Re: Błąd kompilacji &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194086#p194086"><![CDATA[
Ok, faktycznie działa, a ja zrozumiałem błąd. Dziękuję za pomoc <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=17738">krzsiek050</a> — 28 sie 2017, o 10:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2017-08-28T10:19:56+01:00</updated>
<published>2017-08-28T10:19:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194085#p194085</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194085#p194085"/>
<title type="html"><![CDATA[Re: Błąd kompilacji &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194085#p194085"><![CDATA[
<div class="quotetitle">krzsiek050 napisał(a):</div><div class="quotecontent"><br />[syntax=c]struct Output {<br />        const uint8_t* DDR;<br />        const uint8_t PIN;<br />        const uint8_t* PORT;<br />        const enum Output_EnabledOn enabledOn;<br />       <br />        volatile enum Output_State state;<br />        volatile uint16_t duration;<br />        volatile uint16_t space;<br />        volatile uint16_t startMilis;<br />        volatile uint16_t startSec;<br />};<br /><br />struct Output Buzzer_buzzer = {<br />        DDRD, //błąd<br />        PD0,<br />        PORTD, //błąd<br />        LOW,<br />       <br />        DISABLED, 0, 0, 0 ,0<br />};[/syntax]<br /></div><br />Do zainicjowania elementów struktury będących wskaźnikami (do portów w tym przypadku) należy użyć operatora <strong>&amp;</strong>. Poza tym wskaźniki do portów muszą być zadeklarowane jako <strong><em>volatile</em></strong>. Jeśli chcesz natomiast, by adres portu nie został zmieniony, to <strong><em>const</em></strong> musi być w innym miejscu, bo tak jak zadeklarowałeś, to nie będziesz mógł zmienić wartości portu, na jaki wskazuje wskaźnik:<br />[syntax=c]struct Output {<br />        volatile uint8_t* const DDR;<br />        const uint8_t PIN;<br />        volatile uint8_t* const PORT;<br />        const enum Output_EnabledOn enabledOn;<br />       <br />        volatile enum Output_State state;<br />        volatile uint16_t duration;<br />        volatile uint16_t space;<br />        volatile uint16_t startMilis;<br />        volatile uint16_t startSec;<br />};<br /><br />struct Output Buzzer_buzzer = {<br />        &amp;DDRD,<br />        PD0,<br />        &amp;PORTD,<br />        LOW,<br />       <br />        DISABLED, 0, 0, 0 ,0<br />};<br /><br />// wpisanie wartości do portu<br />*(Buzzer_buzzer.DDR) = 0x02;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 28 sie 2017, o 10:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzsiek050]]></name></author>
<updated>2017-08-28T09:42:25+01:00</updated>
<published>2017-08-28T09:42:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194084#p194084</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194084#p194084"/>
<title type="html"><![CDATA[Błąd kompilacji &quot;initializer element is not constant&quot;]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19078&amp;p=194084#p194084"><![CDATA[
Witam,<br /><br />Piszę pierwszy projekt w którym mam kilka wyjść obsługiwanych w taki sam sposób. Napisałem więc strukturę i funkcję do ich obsługi i w teorii zostało mi tylko zdefiniowanie odpowiednich struktur i ich użycie. Niestety, tutaj pojawia się problem z kompilacją. Wcześniej na bank używałem DDRx i PORTx jako wskaźnik przekazywany do funkcji i działało. Tutaj się wykrzacza. Czy możecie podpowiedzieć czemu? <br /><br />[syntax=c]enum Output_State {DISABLED, CONTINOUS, SINGLE, REPEAT};<br />enum Output_EnabledOn {LOW, HIGH};<br /><br />struct Output {<br />const uint8_t* DDR;<br />const uint8_t PIN;<br />const uint8_t* PORT;<br />const enum Output_EnabledOn enabledOn;<br /><br />volatile enum Output_State state;<br />volatile uint16_t duration;<br />volatile uint16_t space;<br />volatile uint16_t startMilis;<br />volatile uint16_t startSec;<br />};[/syntax]<br /><br />[syntax=c]struct Output Buzzer_buzzer = {<br />DDRD, //błąd<br />PD0,<br />PORTD, //błąd<br />LOW,<br /><br />DISABLED, 0, 0, 0 ,0<br />};[/syntax]<br /><br />Jest to deklaracja globalna. Błąd brzmi &quot;initializer element is not constant&quot; w liniach z komentarzem. Do kompilacji używam AtmelStudio 7.0.14.17. Gdy pierwsze 4 pola struktyr nie miały modyfikatora &quot;cost&quot;, błąd również wystąpił.<br /><br />@Edit<br />W ErrorList mam też 2 komunikaty INFO &quot;(near initialization for 'Buzzer_buzzer.PORT')&quot;, &quot;(near initialization for 'Buzzer_buzzer.DDR')&quot;. Nie wiem co one znaczą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17738">krzsiek050</a> — 28 sie 2017, o 09:42</p><hr />
]]></content>
</entry>
</feed>