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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-11T10:12:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15972&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-08-11T10:12:06+01:00</updated>
<published>2016-08-11T10:12:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165870#p165870</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165870#p165870"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165870#p165870"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />więc mimo wszystko łatwiej pomóc wiedząc na jaki mikrokontroler się pisze<br /></div><br />ZDECYDOWANIE ... więc takie stwierdzenia<br /><br /><div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Nie pisałem że chodzi o PIC bo w takich sytuacjach zaraz jest dziesięć postów typu to nie to forum nie ten kompilator itp,<br /></div><br /> ... rzekłbym na tym forum, są hmmm no nie na miejscu. Gdzie kolega spotkał się u nas z takimi sytuacjami &quot;dzięsięciu&quot; postów ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sie 2016, o 10:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-08-11T09:31:14+01:00</updated>
<published>2016-08-11T09:31:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165865#p165865</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165865#p165865"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165865#p165865"><![CDATA[
Ja nie mam pretensji, ja się tylko chciałem wytłumaczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Nie pisałem że chodzi o PIC bo w takich sytuacjach zaraz jest dziesięć postów typu to nie to forum nie ten kompilator itp, a jeden post na temat problemu. Problem dotyczył ogólnie języka C a nie platformy na jaką jest pisany kod.<br /></div><br />Niemniej zestaw pewnych funkcji standardowych/wbudowanych jest zależny od platformy/kompilatora/toolchain'u, więc mimo wszystko łatwiej pomóc wiedząc na jaki mikrokontroler się pisze.<br /><br />Zwróć proszę jeszcze raz uwagę na mój <a href="http://forum.atnel.pl/topic15972.html#p165814"  class="postlink">post powyżej</a>, ponieważ dopisałem jedną ważną informację.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 sie 2016, o 09:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-11T08:10:21+01:00</updated>
<published>2016-08-11T08:10:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165863#p165863</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165863#p165863"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165863#p165863"><![CDATA[
@andrews i bardzo cieszę się że rozwinąłeś szerzej wątek. <br />Nie pisałem że chodzi o PIC bo w takich sytuacjach zaraz jest dziesięć postów typu to nie to forum nie ten kompilator itp, a jeden post na temat problemu. Problem dotyczył ogólnie języka C a nie platformy na jaką jest pisany kod.<br /><br />Moje procedury EE_Czytaj i EE_Zapisz realizują to samo co eeprom_write_block i eeprom_read_block dla AVR.<br /><br />Dzięki, bardzo mi pomogłeś. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 11 sie 2016, o 08:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-08-11T06:45:10+01:00</updated>
<published>2016-08-11T06:45:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165861#p165861</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165861#p165861"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165861#p165861"><![CDATA[
<div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Niestety funkcji zapisu i odczytu bloku nie mogę użyć bo to kompilator na PIC CCS<br /></div>Nie sprecyzowałeś tego wcześniej, a wątek umieściłeś w dziale &quot;Język C dla AVR&quot;, stąd moje odniesienia do avr-libc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 sie 2016, o 06:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-11T06:22:19+01:00</updated>
<published>2016-08-11T06:22:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165860#p165860</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165860#p165860"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165860#p165860"><![CDATA[
@andrews faktycznie rzutowanie wskaźnika na zmienną typu int8 wewnątrz procedury zapisu i odczytu rozwiązało problem warningów.<br /><br />Mam tylko nadzieję że kompilator zawsze adresuje dane ze struktury obok siebie. Kolejność jeżeli pozamienia nie ma znaczenia ważne aby dane struktury były w jednym bloku. Na chwilę obecną wygląda że wszystkie struktury są w kupie.<br /><br />Niestety funkcji zapisu i odczytu bloku nie mogę użyć bo to kompilator na PIC CCS dlatego piszę własne funkcje i jeszcze dodatkowo dane zapisywane są w wewnętrznym eeprom i zewnętrznym I2C<br /><br />Problem został rozwiązany w 100%.<br /><br />Jeszcze raz dzięki bo pomoc tutaj jest bezcenna.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 11 sie 2016, o 06:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-08-11T09:16:53+01:00</updated>
<published>2016-08-10T17:27:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165814#p165814</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165814#p165814"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165814#p165814"><![CDATA[
<div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Jak to teraz prawidłowo zmodyfikować aby było poprawnie bez warningów &quot;Pointer types do not math&quot;.<br /></div><br />Nie byłoby problemu, gdybyś korzystał ze <a href="http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__avr__eeprom.html"  class="postlink">standardowych funkcji</a> zapisu/odczytu do EEPROM:<br />[syntax=c]eeprom_write_block( (const void*)&amp;Bufor1, (void*)0, sizeof(TBufor) );<br />eeprom_read_block( (void*)&amp;Bufor1, (const void*)0, sizeof(TBufor) );[/syntax]<br />Te funkcje akceptują właśnie wskaźniki typu void.<br /><br />Poza tym zamiast używać liczbowych wskaźników proponowałbym deklarować dane w EEPROM za pomocą makra EEMEM:<br />[syntax=c]TBufor Bufor1_ram;<br />TBufor EEMEM Bufor1_ee;<br /><br />// zapis do EEPROM<br />eeprom_write_block( (const void*)&amp;Bufor1_ram, (void*)&amp;Bufor1_ee, sizeof(Bufor1_ram) );<br />eeprom_read_block( (void*)&amp;Bufor1_ram, (const void*)&amp;Bufor1_ee, sizeof(Bufor1_ram) );[/syntax]<br /><br />PS.<br />A gdybyś koniecznie chciał napisać własną funkcję, to wystarczy wewnątrz funkcji rzutować wskaźnik na dowolny wskaźnik do typu ośmiobitowego, np.:<br />[syntax=c]void EE_Czytaj(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {<br />    int8 *adresRAM = (int8*)AdresBUF;<br />    while (IloscDanych--) *adresRAM ++ = EE_Read(AdresEE++);<br />}[/syntax]<br />Kolejność danych czy też ich rozmieszczenie nie są problemem, bo będą takie same jak w RAM, więc odwołanie <strong>&amp;Bufor1_ee.B</strong> będzie wskazywało na ten sam element struktury co odwołanie <strong>&amp;Bufor1_ram.B</strong> Tak samo działają funkcje standardowych bibliotek Atmela <strong>eeprom_read_block()</strong> i <strong>eeprom_read_block()</strong> służące właśnie do zapisu struktur i tablic - kopiują dane z RAM do EEPROM bajt bo bajcie w tej samej kolejności. Tak samo działa też np. funkcja standardowa <strong>memcpy()</strong> do kopiowania bloków danych z RAM do RAM (która również operuje na wskaźnikach void*). Nie trzeba pisać osobnych funkcji dla każdego typu zmiennej. Mankamentem jest tylko to, że nie ma pełnej kontroli nad typami danych i trzeba uważać, by podać właściwy rozmiar danych do skopiowania.<br /><br />EDIT (11.08.2016 10:15):<br />Dodam jeszcze jedną ważną uwagę. Zwykle w mikrokontrolerach o niewielkich zasobach struktury są pakowane (np. avr-gcc ma opcję <em>'-fpack-struct'</em>), jednak jak słusznie zauważył kolega <strong>Sparrow-hawk</strong> ogólnie (w przypadku niepakowanych struktur) może się zdarzyć, że struktura będzie zawierać tzw. &quot;padding bytes&quot; (nie będę się tutaj wdawał w szczegóły). W takim przypadku struktura będzie miała rozmiar inny, niż by to wynikało ze zsumowania rozmiarów wszystkich jej elementów. Dlatego istotne jest, aby rozmiar struktury wyznaczać za pomocą operatora rozmiaru <strong><em>sizeof</em></strong>, a nie na podstawie własnych obliczeń.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 10 sie 2016, o 17:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-10T15:03:04+01:00</updated>
<published>2016-08-10T15:03:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165802#p165802</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165802#p165802"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165802#p165802"><![CDATA[
Pisanie funkcji do każdej struktury nie wchodzi w grę. Brak ROM <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Każda komórka jest już na wagę złota <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W sumie ze zmianą typu zmienny na int8 nie będzie problemu.<br />Może to i będzie najlepsze rozwiązanie założyć kilka tablic int8 o różnym rozmiarze. Zapis tablicy to już nie problem zwłaszcza że rozmiar każdej będzie stały.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 10 sie 2016, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-08-10T14:45:19+01:00</updated>
<published>2016-08-10T14:45:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165801#p165801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165801#p165801"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165801#p165801"><![CDATA[
<div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />ale z twojej propozycji wynika że do każdej definicji struktury musiałbym pisać taką funkcję<br /></div><br />Tak dokładnie, tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> I jak tak to widzę. <br /><br />Chyba, że przechowujesz dane tylko jednego typu, wtedy lepiej użyć będzie tablicy. Jeżeli ilość danych w tej tablicy będzie zmienna, to musisz albo przechowywać ten rozmiar np. w 0 komórce tablicy, albo tworzysz strukturę zawierającą tablicę i w drugiej zmiennej rozmiar tej tablicy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 10 sie 2016, o 14:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-10T14:35:41+01:00</updated>
<published>2016-08-10T14:35:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165800#p165800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165800#p165800"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165800#p165800"><![CDATA[
@Sparrow-hawk a mógłbyś napisać jakiś kawałek kodu jak to widzisz w swoim rozwiązaniu ?<br /><br />Nie wiem czy dobrze zrozumiałem ale z twojej propozycji wynika że do każdej definicji struktury musiałbym pisać taką funkcję bo struktury są w różnym rozmiarze i różne typy zmiennych przechowują.<br /><br />Powyższy kod jest tylko przykładowym aby przedstawić o co mi chodzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 10 sie 2016, o 14:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-08-10T14:40:00+01:00</updated>
<published>2016-08-10T14:31:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165799#p165799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165799#p165799"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165799#p165799"><![CDATA[
Kompilator dobrze sugeruje, że typ który masz, czyli void* nie obsługuje arytmetyki wskaźników. <br /><br />Po za tym struktura, to nie tablica. Skąd pewność, że poszczególne pola zostaną ułożone w pamięci jeden za drugim?<br /><br />Skoro chcesz zapisywać struktury, to napisz funkcję, która jako argument dostaje wskaźnik na strukturę, i zapisuje poszczególne jej pola, a nie jakieś rzutowanie. Więc albo zastosuj zmienną tablicową, albo napisz dwie funkcje obsługujące dwie różne struktury.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 10 sie 2016, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-10T14:43:00+01:00</updated>
<published>2016-08-10T09:46:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165788#p165788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165788#p165788"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165788#p165788"><![CDATA[
@squeez nie to jest problemem.<br /><br />@andrews bingo o to chodziło ale pojawiły się nowe alerty.<br /><br />Wielkie dzięki za dotychczasową pomoc.<br /><br /><br />Teraz jeszcze mi daje ten alert na wskażnikach *AdresBUF++ &quot;Pointer types do not math&quot; w procedurach :<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">void EE_Zapisz(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {<br />    while (IloscDanych--) EE_Write(AdresEE++,*AdresBUF++);<br />}<br /><br />void EE_Czytaj(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {<br />    while (IloscDanych--) *AdresBUF++ = EE_Read(AdresEE++);<br />} </div><br /><br /><br />Przykładowy kod wygląda teraz tak:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">typedef struct {<br />   int8 A;                 <br />   int8 B;                <br />   int16 C;                    <br />}TBufor;<br />TBufor Bufor1, Bufor2;         <br /><br />typedef struct {<br />   int16 A;                 <br />   int8 B;                        <br />}TBuforek;<br />TBuforek Buforek1, Buforek2, Buforek3; <br /><br />void EE_Zapisz(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {<br />    while (IloscDanych--) EE_Write(AdresEE++,*AdresBUF++);<br />}<br /><br />void EE_Czytaj(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {<br />    while (IloscDanych--) *AdresBUF++ = EE_Read(AdresEE++);<br />}<br /><br />main {<br /><br />   // Zapis<br />   EE_Zapisz(0, (void*)&amp;Bufor1, sizeof(TBufor));<br />   EE_Zapisz(10, (void*)&amp;Buforek1, sizeof(TBuforek));<br /><br />   // Odczyt<br />   EE_Czytaj(0, (void*)&amp;Bufor1, sizeof(TBufor));<br />   EE_Czytaj(10, (void*)&amp;Buforek1, sizeof(TBuforek));<br /><br />}<br /><br /></div><br /><br /><br />Jak to teraz prawidłowo zmodyfikować aby było poprawnie bez warningów &quot;Pointer types do not math&quot;.<br />Już się zaczynam zastanawiać czy to nie błąd kompilatora bo na 2 starszych wersjach nie ma warningów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 10 sie 2016, o 09:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-08-10T09:40:09+01:00</updated>
<published>2016-08-10T09:40:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165787#p165787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165787#p165787"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165787#p165787"><![CDATA[
<div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Jak to inaczej zapisać aby procedura &quot; EE_Zapisz&quot; była uniwersalna. Dodam że w/w zapis działa prawidłowo poza warningiem kompilatora<br /></div><br />[syntax=c]TBuforek Buforek1;<br /><br />void EE_Zapisz(int8 AdresEE, void *AdresBUF, Int8 IloscDanych) {}<br /><br />// wywołanie funkcji<br />EE_Zapisz(0, (void*)&amp;Bufor1, sizeof(TBufor));<br />EE_Zapisz(0, (void*)&amp;Buforek1, sizeof(TBuforek));[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 10 sie 2016, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-10T09:26:23+01:00</updated>
<published>2016-08-10T09:26:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165785#p165785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165785#p165785"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165785#p165785"><![CDATA[
No faktycznie masz rację ale od razu wynikł kolejny problem mianowicie do procedury &quot;EE_Zapisz&quot; potrzebuję przekazywać adres różnych struktur o różnym rozmiarze.<br /><br />Przykładowo coś w tym stylu:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">typedef struct {<br />   int8 A;                 <br />   int8 B;                <br />   int8 C;                    <br />}TBufor;<br />TBufor Bufor1, Bufor2;         <br /><br />typedef struct {<br />   int8 A;                 <br />   int8 B;                        <br />}TBuforek;<br />TBuforek Buforek1, Buforek2, Buforek3;    <br /><br />main {<br /><br />   EE_Zapisz(0, &amp;Bufor1, 3);<br />   EE_Zapisz(20, &amp;Buforek3, 2);<br /><br />}<br /><br />void EE_Zapisz(int8 AdresEE, int8 *AdresBUF, Int8 IloscDanych)<br />  {<br />    while (IloscDanych--) EE_Write(AdresEE++,*AdresBUF++);<br />  }<br /></div><br /><br />Jak to inaczej zapisać aby procedura &quot; EE_Zapisz&quot; była uniwersalna tak aby w dowolnym momencie można zapisać dowolną zawartość struktury do EEprom. Dodam że w/w zapis działa prawidłowo poza warningiem kompilatora<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 10 sie 2016, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-08-10T09:20:02+01:00</updated>
<published>2016-08-10T09:20:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165784#p165784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165784#p165784"/>
<title type="html"><![CDATA[Re: Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165784#p165784"><![CDATA[
A dlaczego masz zadeklarowane:<br /><div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />void EE_Zapisz(int8 AdresEE, <strong>int8</strong> *AdresBUF, Int8 IloscDanych)<br /></div><br />zamiast np.:<br />void EE_Zapisz(int8 AdresEE, <strong>TBufor</strong> *AdresBUF, Int8 IloscDanych)<br />???<br /><br />Kompilator oczekuje wskaźnika na int8, a Ty wywołujesz funkcję podając wskaźnik na strukturę:<br />EE_Zapisz(0, <strong>&amp;Bufor1</strong>, 3);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 10 sie 2016, o 09:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2016-08-10T09:09:54+01:00</updated>
<published>2016-08-10T09:09:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165780#p165780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165780#p165780"/>
<title type="html"><![CDATA[Wskaźnik do struktury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15972&amp;p=165780#p165780"><![CDATA[
Witam <br /><br />Chciałbym zapytać jak poprawnie przekazać adres początku struktury Bufor1 i Bufor2 do procedury. <br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">typedef struct {<br />   int8 A;                 <br />   int8 B;                <br />   int8 C;                    <br />}TBufor;<br />TBufor Bufor1, Bufor2;         <br /><br /><br />main {<br /><br />   EE_Zapisz(0, &amp;Bufor1, 3);<br /><br />}<br /><br />void EE_Zapisz(int8 AdresEE, int8 *AdresBUF, Int8 IloscDanych)<br />  {<br />    while (IloscDanych--) EE_Write(AdresEE++,*AdresBUF++);<br />  }<br /><br /></div><br /><br />Przy kompilacji kodu z fragmentem jak wyżej wszystko się kompiluje i działa jednak kompilator daje ostrzeżenie &quot;Undefined Identifier Bufor1&quot;  &quot;Undefined Identifier Bufor2&quot;. Oczywiście mogę przekazać adres pierwszej danej w strukturze np: &quot;EE_Zapisz(0, &amp;Bufor1.A, 3);&quot; i wtedy już nie ma ostrzeżenia.<br /><br />W jaki sposób przekazać poprawnie adres struktury używając tylko nazw struktur czyli &quot;Bufor1&quot; &quot;Bufor2&quot;.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 10 sie 2016, o 09:09</p><hr />
]]></content>
</entry>
</feed>