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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-11T00:22:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20387&amp;mode</id>
<entry>
<author><name><![CDATA[abel11]]></name></author>
<updated>2018-03-11T00:22:56+01:00</updated>
<published>2018-03-11T00:22:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205398#p205398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205398#p205398"/>
<title type="html"><![CDATA[Re: Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205398#p205398"><![CDATA[
[syntax=c]int __attribute__((address(0x1800))) zmienna1;<br />int __attribute__((address(0x1802))) zmienna2;<br />int __attribute__((address(0x1812))) zmienna3;<br /><br />struct {<br />    int *wsk1 ;<br />    int *wsk2;<br />    int *wsk3;<br />} s1 = {&amp;zmienna1, &amp;zmienna2, &amp;zmienna3};<br /><br />int main (void){<br />    *s1.wsk1 = 1;<br />    *s1.wsk2 = 2;<br />    *s1.wsk3 = 3;<br />}[/syntax]<br />W MPLAB4.15 z XC16-gcc0 v1.26 działa poprawnie - na symulatorze obserwuje zmiany wybranych komórek pamięci.<br /><br />To tak naprawdę nic więcej jak przypisanie strukturze wskaźników adresów zmiennych o stałym miejscu w pamięci. Tu musisz sobie sprawdzić która wersja będzie oferowała mniejszą zajętość pamięci, ta kolegi dambo, czy ta która zamieściłem. <br />Przy okazji całej strukturze też możesz nadać atrybut adres ale to będzie tylko adres 1 elementu, próba ustalenia adresu każdego z elementów z osobna powinna być zignorowana przez kompilator. <br />Być może jest jakiś sposób na zrobienie tego inaczej ale ja go niestety jeszcze nie znam.<br /><br />Chociaż w Twoim przypadku chyba możesz sobie powołać strukturę wskaźników na SFR uC.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17861">abel11</a> — 11 mar 2018, o 00:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2018-03-10T18:42:29+01:00</updated>
<published>2018-03-10T18:42:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205380#p205380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205380#p205380"/>
<title type="html"><![CDATA[Re: Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205380#p205380"><![CDATA[
Jednak nie jest tak kolorowo <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br />@abel11, mógłbyś podać przykład zastosowania tego w strukturze?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 10 mar 2018, o 18:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2018-03-10T15:04:50+01:00</updated>
<published>2018-03-10T15:04:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205372#p205372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205372#p205372"/>
<title type="html"><![CDATA[Re: Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205372#p205372"><![CDATA[
Oooo! Coś takiego mi odpowiada. Dziękuję bardzo!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 10 mar 2018, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[abel11]]></name></author>
<updated>2018-03-10T14:11:37+01:00</updated>
<published>2018-03-10T14:11:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205363#p205363</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205363#p205363"/>
<title type="html"><![CDATA[Re: Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205363#p205363"><![CDATA[
Często korzystam z tego (kompilator gcc):<br /><a href="https://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html"  class="postlink">https://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html</a><br /><br />Na pierwszy rzut oka sprawa wygląda na banalnie prostą, po prostu używasz __attribute__ i sam ustalasz adres zmiennej. Ważne żeby się nie pomylić bo nie wiem czy kompilator zaprotestuje. W dsPIC czasem definiuje atrybuty zmiennych (pamięć x,y itd), choć raczej nie adres.<br />Przykład z strony (link powyżej)<br />[syntax=c]volatile int porta __attribute__((io (0x22)));[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17861">abel11</a> — 10 mar 2018, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2018-03-10T13:19:32+01:00</updated>
<published>2018-03-10T13:19:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205359#p205359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205359#p205359"/>
<title type="html"><![CDATA[Re: Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205359#p205359"><![CDATA[
Właśnie myślałem o czymś takim żeby zrobić tablice uint8_t RESERVED[10], ale czy to jedyne rozwiązanie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 10 mar 2018, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jatsekku]]></name></author>
<updated>2018-03-10T18:29:42+01:00</updated>
<published>2018-03-10T12:11:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205354#p205354</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205354#p205354"/>
<title type="html"><![CDATA[Nieciągłość struktury w pamięci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20387&amp;p=205354#p205354"><![CDATA[
Drodzy AVRowicze, mam następujące problem:<br />Chciałbym upakować wszystkie rejestry danego peryferium do jednej struktury.<br /><br />Przykład:<br />[syntax=c]typedef struct<br />{<br />__IO uint8_t ODR; //Output Data Register (x)<br />__IO uint8_t DDR; //Direction Data Register (x+1)<br />__I uint8_t   IDR; //Input Data Register (x+2)<br />} __GPIO_t;[/syntax]<br /><br />Tutaj było prosto, bo rejestry PINDx (IDRx), DDRx, PORTx(ODRx) są poustawiane w pamięci kolejno po sobie.<br /><br />Ale problem pojawia się gdy na przykład chciałbym zrobić coś takiego:<br /><br />[syntax=c]typedef struct<br />{<br />__IO uint8_t NTR; //Data Register (x)<br />__IO uint8_t CR //Control Register (x+1)<br />__IO uint8_t OCR; //Output Compare Register (x+10)<br />} __TCNT0_t[/syntax]<br /><br />(x) - oznacza adres w pamięci, w obszarze SFIOR.<br /><br />Jak widać na drugim przykładzie, ostatni rejestr jest ustawiony w obszarze pamieci SFIOR znacznie dalej od pozostałych. W związku z tym pytanie jest następujące:<br />Czy mogę jakoś wymusić umiejscowienie zmiennych ze struktury w pamięci?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3920">Jatsekku</a> — 10 mar 2018, o 12:11</p><hr />
]]></content>
</entry>
</feed>