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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-01-05T12:44:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19893&amp;mode</id>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-05T12:44:21+01:00</updated>
<published>2018-01-05T12:44:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201518#p201518</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201518#p201518"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201518#p201518"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Faktycznie moim zamiarem było to upodobnić do stopki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />,<br /></div><br />Mój post był<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Napisane: wczoraj, o 00:54<br /></div>więc takie działania przy takiej porze tak się kończą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br />PS. Bardzo fajny artykuł. Będę musiał pokorzystać z __flash <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=3427">rskup</a> — 5 sty 2018, o 12:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-01-05T11:27:38+01:00</updated>
<published>2018-01-05T11:27:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201515#p201515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201515#p201515"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201515#p201515"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Odkreślone było na dole maila jak stopka, więc zostało za nią uznane a nie jako link do przejrzenia<br /></div><br />Faktycznie moim zamiarem było to upodobnić do stopki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, ale sądzilłem, że temat łącza jest na tyle zbliżony do tego, o czym pisałem, że może ktoś się zainteresuje... <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=14165">andrews</a> — 5 sty 2018, o 11:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-04T10:28:15+01:00</updated>
<published>2018-01-04T10:28:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201471#p201471</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201471#p201471"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201471#p201471"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Wystarczy kliknąć link, który podałem w poście powyżej (AVR-GCC - dane w pamięci FLASH) i wszystko się wyjaśni.<br /></div>Popatrzę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Odkreślone było na dole maila jak stopka, więc zostało za nią uznane a nie jako link do przejrzenia <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 4 sty 2018, o 10:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-01-04T08:29:04+01:00</updated>
<published>2018-01-04T08:29:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201464#p201464</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201464#p201464"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201464#p201464"><![CDATA[
<div class="quotetitle">czarusgg napisał(a):</div><div class="quotecontent"><br />Jeśli zamiast przestarzałego PGOGMEM uzyłbyś __flash, to od razu dobrze by Ci działało. Ponieważ wtedy odwołujemy się do danych tak jakby były zwykłymi zmiennymi w RAM.<br /></div><br />Przecież dokładnie to próbowałem uświadomić autorowi wątku już w moim poście powyżej (patrz komentarze w kodzie).<br /><br /><div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />A czy na pewno __flash działa w AVR GCC? Bo to jest składnia IAR ...<br /></div><br />Wystarczy kliknąć link, który podałem w poście powyżej (<a href="http://forum.atnel.pl/topic19149.html#p194736"  class="postlink">AVR-GCC - dane w pamięci FLASH</a>) i wszystko się wyjaśni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 4 sty 2018, o 08:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-01-04T00:54:47+01:00</updated>
<published>2018-01-04T00:54:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201454#p201454</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201454#p201454"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201454#p201454"><![CDATA[
A czy na pewno __flash działa w AVR GCC? Bo to jest składnia IAR ...<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 4 sty 2018, o 00:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[czarusgg]]></name></author>
<updated>2018-01-03T23:18:30+01:00</updated>
<published>2018-01-03T23:18:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201450#p201450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201450#p201450"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201450#p201450"><![CDATA[
Jeśli zamiast przestarzałego PGOGMEM uzyłbyś __flash, to od razu dobrze by Ci działało. Ponieważ wtedy odwołujemy się do danych tak jakby były zwykłymi zmiennymi w RAM. Kompilator dzięki definicji wie, że dane są w ROZM i wygeneruje prawidłowy kod. Także nic nie tracimy na takim zapisie. Zyskujemy zaś zdecydowaną poprawę czytelności i jeszcze parę innych korzyści [emoji3]<br /><br />Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1942">czarusgg</a> — 3 sty 2018, o 23:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miksior]]></name></author>
<updated>2018-01-01T19:48:55+01:00</updated>
<published>2018-01-01T19:48:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201342#p201342</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201342#p201342"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201342#p201342"><![CDATA[
dzieki koledzy! faktycznie podany przez was sposob z pgm_read_byte dziala! 2 dni kminienia na darmo <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />andrews, dzieki, sposob kolegow wyzej juz mi wszystko wyjasnil, ewentualnie pozniej przetestuje kod ktory wrzuciles<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16029">miksior</a> — 1 sty 2018, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-01-01T18:46:46+01:00</updated>
<published>2018-01-01T18:46:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201338#p201338</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201338#p201338"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201338#p201338"><![CDATA[
<div class="quotetitle">miksior napisał(a):</div><div class="quotecontent"><br />jesli wpisze &quot;z palca&quot; wartosci, tj tab[1], tab[2] wszystko dziala, ale tab[zmienna+1] juz nie, <strong>wyjasni mi ktos czemu?</strong><br /></div><br />Wartości elementów tablicy są stałe i znane w momencie kompilacji.<br /><br />Kiedy użyjesz <strong><em>tab[1]</em></strong>, indeks tablicy jest stały i znany w momencie kompilacji, tak samo jak wartość elementu tablicy pod tym indeksem.<br /><br />Kiedy sprawdzasz warunek <strong><em>if (tab[1]==1)</em></strong>, wyrażenie w nawiasie może być obliczone w momencie kompilacji, i najprawdopodobniej to właśnie robi kompilator optymalizując kod - kompilator wcale nie generuje kodu odczytującego wartość elementu tablicy, tylko w momencie kompilacji sprawdza, czy wyrażenie <strong><em>tab[1]==1</em></strong> jest prawdą, czy też nie.<br /><br />Kiedy sprawdzasz warunek <strong><em>if (tab[zmienna]==1)</em></strong>, kompilator nie może przewidzieć w momencie kompilacji, jaka będzie wartość zmiennej <strong><em>zmienna</em></strong> w trakcie wykonywania programu, musi więc faktycznie wygenerować kod pobierający wartość z tablicy <strong><em>tab[]</em></strong>. Tablice zapisujesz w pamięci FLASH za pomocą atrybutu PROGMEM, jednak jak koledzy wyżej zwrócili Ci uwagę, nie odczytujesz elementów prawidłowo. W przypadku użycia atrybutu PROGMEM powinieneś do odczytu użyć makra <strong><em>pgm_read_byte()</em></strong>.<br /><br />Alternatywnie możesz zrobić tak:<br />[syntax=c]// zdefiniować tablicę w pamięci FLASH<br />// za pomocą kwalifikatora __flash<br />    const __flash uint8_t tab&#91;&#93; ={<br />        1,1,1,1,1,1,1,1,  <br />        1,0,0,1,0,0,0,0<br />    };<br /><br />// i później odczytywać elementy tablicy tak, jak to robiłeś do tej pory<br />// czyli tak samo jak odczyt tablicy w pamięci RAM<br />    if (tab&#91;zmienna+1&#93;==1)  WYKONAJ_COS;[/syntax]<br />_________________<br /><a href="http://forum.atnel.pl/topic19149.html#p194736"  class="postlink">AVR-GCC - dane w pamięci FLASH</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 1 sty 2018, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2018-01-01T16:49:45+01:00</updated>
<published>2018-01-01T16:49:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201337#p201337</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201337#p201337"/>
<title type="html"><![CDATA[Re: Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201337#p201337"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#define LED1 PA1<br /><br />const uint8_t tab&#91;&#93; PROGMEM = {<br />    1, 1, 1, 1, 0, 0, 0, 0,<br />    1, 1, 0, 0, 1, 1, 0, 0,<br />    1, 0, 1, 0, 1, 0, 1, 0 <br />};<br />                     <br />uint8_t i;<br /><br />int main( void ) {<br /><br />    DDRA  |= ( 1 &lt;&lt; LED1 );<br />    PORTA |= ( 1 &lt;&lt; LED1 );<br /><br />    while ( 1 ) {<br /><br />        if ( i == ( sizeof( tab ) / sizeof( uint8_t )  )  ) i = 0;<br /><br />        if ( pgm_read_byte( &amp;tab&#91;i++&#93; ) ) PORTA &amp;= ~( 1 &lt;&lt; LED1 );<br />        else PORTA |= ( 1 &lt;&lt; LED1 );<br /><br />        _delay_ms( 500 );<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 1 sty 2018, o 16:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miksior]]></name></author>
<updated>2018-01-01T15:15:03+01:00</updated>
<published>2018-01-01T15:15:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201332#p201332</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201332#p201332"/>
<title type="html"><![CDATA[Pytanie o indeksowanie tablicy - tab[x+1] czy tak mozna?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19893&amp;p=201332#p201332"><![CDATA[
Witam, wiem ze dzis nowy rok i kazdy pewnie sie leczy po wczoraj ale moze ktos tu jest:)<br />mam pewne pytanie, zapewne trywialne ale blokuje mnie i nie potrafie znalesc jednoznacznej odpowiedzi w sieci<br /><br />Otoż, mam pewna tablice uzupelniona wartosciami tylko 0 i 1, oto fragment tej tablicy:<br />[syntax=c]const uint8_t tab&#91;&#93; PROGMEM ={<br />   1,1,1,1,1,1,1,1,  <br />   1,0,0,1,0,0,0,0,[/syntax]<br />Musze sprawdzac po kolei 8 kolejnych liczb z tablicy zaczynajac od jakiegos tam indeksu, wymyslilem to tak ze wprowadzam dodatkowa zmienna, ktora jest wlasnie tym indeksem i dodaje po kolei do niego wartosc +1 aby sprawdzac kolejne liczby<br />[syntax=c]zmienna = 0;<br />if (tab&#91;zmienna&#93;==1)  WYKONAJ COS;<br />else WYKONAJ COS INNEGO;<br /><br />if (tab&#91;zmienna+1&#93;==1) WYKONAJ COS;<br />else WYKONAJ COS INNEGO;<br /><br />itd az do:<br /><br />if (tab&#91;zmienna+7&#93;==1) WYKONAJ COS;<br />else WYKONAJ COS INNEGO;[/syntax]<br /><br />niestety moj sposob nie dziala, program wariuje, jesli wpisze &quot;z palca&quot; wartosci, tj tab[1], tab[2] wszystko dziala, ale tab[zmienna+1] juz nie, wyjasni mi ktos czemu? probowalem tez &quot;wprowadzic&quot; zmienna przez argument funkcji, efekt byl ten sam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16029">miksior</a> — 1 sty 2018, o 15:15</p><hr />
]]></content>
</entry>
</feed>