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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=17031&amp;mode</id>
<entry>
<author><name><![CDATA[Alef2]]></name></author>
<updated>2016-12-11T18:25:38+01:00</updated>
<published>2016-12-11T18:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177152#p177152</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177152#p177152"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177152#p177152"><![CDATA[
<div class="quotetitle">mucios15 napisał(a):</div><div class="quotecontent"><br />Takie dziwne kwestie mi po głowie krążą<br /></div><br />Wcale nie dziwne!<br />Wbrew pozorom pytanie czy &quot;za jednym zamachem&quot; wykonać 10 pomiarów, czy wykonywać je w odpowiednich odstępach czasu nie jest bez sensu.<br />Jeżeli źródłem niedokładności jest sam przetwornik, to nie ma znaczenia czy dokonujemy na raz 10 pomiarów czy co jakiś czas.<br />Jeżeli natomiast źródłem zakłóceń jest układ zewnętrzny i wolnozmienny (w stosunku do ADC) to należy pomiarów dokonywać w określonych odstępach czasu.<br />Można też ująć to inaczej:<br />-pomiary wykonywane na raz uśrednią na szumy ADC,<br />-pomiary dokonywane w określonych odstępach czasu uśrednią wszystkie szumy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14998">Alef2</a> — 11 gru 2016, o 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-11T16:19:30+01:00</updated>
<published>2016-12-11T16:19:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177130#p177130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177130#p177130"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177130#p177130"><![CDATA[
tak sobie myślę,  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br />teraz aktualizujesz tablicę OK .Od ostatniej wartości.<br />Możesz ją aktualizować przecież także co licznik_sek==30.<br />Tylko tak myślę że lepiej jest wystawić flagę w &quot;licznik_sek==30&quot; i po zakończeniu pomiaru i aktualizacji ją skasować, żeby nie powtórzyła się operacja _  ponieważ &quot; licznik_sek==30&quot; jest spełnione przez 1000ms.  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 11 gru 2016, o 16:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-11T16:07:19+01:00</updated>
<published>2016-12-11T16:07:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177125#p177125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177125#p177125"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177125#p177125"><![CDATA[
Ja robię to tak i działa w miarę dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />oczywiście w kodzie mam zadeklarowane potrzebne zmienne oraz tablicę. <br /><br />[syntax=c]for(i=4;i&gt;0;i--)<br />{<br /><br /><br />sr&#91;i&#93;= sr&#91;i-1&#93;;<br /><br /><br /><br /><br /><br />}<br /><br />sr&#91;0&#93;=data;<br /><br />for(a=0;a&lt;sample;a++) srednia+=sr&#91;a&#93;;<br /><br />srednia /=sample;[/syntax]<br /><br />w sumię to nie wiele się różni ode tego co Wy oraz Pan Mirek zaproponowaliście. <br /><br />Teraz powiem jak chce to wykorzystać. Chcę to wykorzystać w dwóch miejscach w programie, przy odbiorze danych z uartu ( przesył wartości jedna po drugiej). <br />Oraz chcę wykonywać pomiar ADC co 30 sekund np. if(licznik_sek==30). Chciałbym aby wartość pomiaru, która będzie w zmiennj pomocniczej trafiała na pierwsze miejsce w tablicy, była przesuwana i tak w koło . Mi się wydaje że liczona średnia z tych pomiarów to będzie tzw. moving average. Czy dobrze mi sie wydaje , czy jestem w błędzie i powinienm jeszcze dokładnie doczytać co to jest moving average. Wiem ze jest kilka rodzajów tej średniej ( np. ważona średnia ruchoma) . Ale mi chodzi o tą podstawową. <br />Ogólnie to zastanawiałem się czy w chwili if(licznik_sek==30) nie wykonywać już 10 pomiarów a nie tylko 1 . Ale pomyslaem ze przy pomiarze wolno zmiennych napięć no to w czasie dokonania tych 10 pomiarów , to wartosci nie bedą miały wielkiego rozrzutu. A tak wgl to przecież gdybym chciał w 1 sekundzie zapełnić tablice 10 elementową wartościami pomiarów, to podejrzewam ze chyba by to nie funkcjonowało do końca dobrze przy takim zapisie if(licznik_sek==30) , ponieważ czas w jakim dokonuje się tutaj pomiar wynosi 1 sekundę, a awięc to chyba za krótko aby wpisyać 10 wartości do tablicy . <br />Takie dziwne kwestie mi po głowie krążą, większość z nich jest spowodowana brakiem większego doświadczenia, to odrazu mówię zresztą i chyba widać. Ale dlatego pisze tematy w dziale rybnym, żeby nie bruździć moimi zagadkami w miejsu gdzie są poważne rozważania ;p<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 11 gru 2016, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Alef2]]></name></author>
<updated>2016-12-11T14:41:38+01:00</updated>
<published>2016-12-11T14:41:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177114#p177114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177114#p177114"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177114#p177114"><![CDATA[
<div class="quotetitle">mucios15 napisał(a):</div><div class="quotecontent"><br />O ile się nie myle to aby liczyć średnią kroczącą muszę przeprowadzić przesuwanie w tablicy<br /></div><br />Można i tak, chociaż nie jest to konieczne. Wszystko zależy od tego jaką średnią ruchomą chcesz liczyć. Bo jest ich na prawdę wiele.<br />Jak słusznie zauważył kolega Mellanogaster, bufor cykliczny jest tu rozwiązaniem wręcz idealnym.<br />W skrócie wygląda to tak: bieżący odczyt wpisujesz do tablicy o indeksie i, zwiększasz indeks i sprawdzasz, czy nie przekroczył zakresu, jeśli przekroczył to zerujesz indeks. Program mógłby wyglądać tak:<br />[syntax=c]sr&#91;i&#93;=wartosc;<br />i++;<br />if (i&gt;4)i=0;<br />//liczenie średniej<br />srednia=0;<br />for(j=0;j&lt;5;j++) srednia=srednia+a&#91;i&#93;;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14998">Alef2</a> — 11 gru 2016, o 14:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mellanogaster]]></name></author>
<updated>2016-12-11T10:06:12+01:00</updated>
<published>2016-12-11T10:06:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177087#p177087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177087#p177087"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177087#p177087"><![CDATA[
A może mechanizm bufora cyklicznego by zastosować? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2911">Mellanogaster</a> — 11 gru 2016, o 10:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-10T23:58:54+01:00</updated>
<published>2016-12-10T23:58:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177077#p177077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177077#p177077"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177077#p177077"><![CDATA[
O ile się nie myle to aby liczyć średnią kroczącą muszę przeprowadzić przesuwanie w tablicy. Dlatego wiedzieć jak to zrobić. Dziękuję za podpowiedzi. Pokombinuje i dam znać o efektach.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 10 gru 2016, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2016-12-10T20:49:39+01:00</updated>
<published>2016-12-10T20:49:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177047#p177047</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177047#p177047"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177047#p177047"><![CDATA[
<div class="quotetitle">mucios15 napisał(a):</div><div class="quotecontent"><br />opiuje mi się ta sama wartość do wszystkich elementów<br /></div><br /><br />Tak się zachowuje bo tak napisałeś. <br /><br />Przeanalizuj na spokojnie co się tam dzieje.<br /><br />Wchodzisz w pętle,  przepisujesz wartość  z pierwszego elementu do kolejnego i zapisujesz nowe dane do elementu 0. A potem znów przesuwane dane do drugiego elementu i znów do pierwszego wpisujesz te same dane.  <br /><br />Spróbuj to samo ale nie w pętli a po fladze od uarta zapisać dane do elementu 0.<br /><br />aha, i jak chcesz uniknąć nadpisywania wartości to musisz w drugą stronę jechać chyba co??<br /><br />Teraz do elem 1 wpisujesz wartość z 0 i dalej popychasz ją kolejno do 2, 3, 4, 5.<br /><br />Jakbyś spróbował [syntax=c]if(flaga_uarta){<br />   flaga_uarta = 0;<br />   for (i=4; i&gt;0; i--) sr&#91;i+1&#93; = sr&#91;i&#93;;<br />   sr&#91;0&#93; = wartosc;<br />}[/syntax]  powinno być lepiej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 10 gru 2016, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[P3ndz3l3k]]></name></author>
<updated>2016-12-10T19:54:27+01:00</updated>
<published>2016-12-10T19:54:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177045#p177045</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177045#p177045"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177045#p177045"><![CDATA[
Jeśli potrzebujesz obliczać średnią to po co przesuwać te dane wrzucaj je po kolei a później po prostu oblicz średnią.<br />Z całej tablicy a jeśli chcesz wiedzieć która była zapisana ostatnia przechowuj pozycję tablicy w jakiejś zmiennej. <br /><br />Pozdrawiam Paweł.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3709">P3ndz3l3k</a> — 10 gru 2016, o 19:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-10T18:55:10+01:00</updated>
<published>2016-12-10T18:55:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177042#p177042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177042#p177042"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177042#p177042"><![CDATA[
Witam,<br /><div class="quotetitle">mucios15 napisał(a):</div><div class="quotecontent"><br />[syntax=c]for(i=0;i&lt;4;i++) sr&#91;i+1&#93;= sr&#91;i&#93;;<br /> <br />sr&#91;0&#93;=wartosc;[/syntax]<br /></div><br /><br />zobacz co się dzieje po kolei .<br />kopiujesz do drugiej pozycji z pozycji pierwszej , a do trzeciej z już uaktualnionej pozycji 2. <br />może przesuwaj od prawej - kopiując 5-tą z 4-tej, 4-tą z 3-ciej, 3-cią z 2-giej, 2-gą z 1-szej.<br />coś jakoś:<br />[syntax=c]for(i=0;i&lt;4;i++) sr&#91;4-i&#93;= sr&#91;3-i&#93;;<br />sr&#91;0&#93;=wartosc;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 10 gru 2016, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-12-10T18:35:10+01:00</updated>
<published>2016-12-10T18:35:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177039#p177039</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177039#p177039"/>
<title type="html"><![CDATA[Re: Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177039#p177039"><![CDATA[
Witam<br />A jest jakiś powód że musisz pomiar ładować do pierwszej komórki, całość przesuwać aby szykować miejsce dla następnego pomiaru?<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 10 gru 2016, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mucios15]]></name></author>
<updated>2016-12-10T17:34:04+01:00</updated>
<published>2016-12-10T17:34:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177032#p177032</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177032#p177032"/>
<title type="html"><![CDATA[Przesuwanie wartości w tablicy.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17031&amp;p=177032#p177032"><![CDATA[
Cześć wszystkim, chciałem prosić o pomoc w opanowaniu tematu jak powyżej. Już mówię o co chodzi... Wysyłam daną liczbę przez UART do mikroprocesora. Wartość zapisuje pod pierwszy element w tablicy. Następnie podczas ponownego wysłania liczby do tablicy, chciałbym ponownie zapisać aktualną wartość pod pierwszy element tablicy. Natomiast następną ( tą wcześniejszą umieścić pod 2 element w tablicy) i tak regularnie przesuwać wartości w prawo. Taki mechanizm chciałbym później wykorzystać do liczenia średniej. <br /><br />Na razie naskrobałem coś na pętli for: <br />[syntax=c]static uint32_t sr&#91;5&#93;; // powiedzmy ze chce aby w tablicy było 5 próbek<br /><br />for(i=0;i&lt;4;i++) sr&#91;i+1&#93;= sr&#91;i&#93;;<br /><br />sr&#91;0&#93;=wartosc;[/syntax]<br /><br />To co wyżej to tylko tak pokazałem , ze tak się kieruje aby zmieniać elemtny tablicy, ale w ten sposób  kopiuje mi się ta sama wartość do wszystkich elementów . Ogólnie to kod mam w funkcji , nie wysyłałem wszystkiego ponieważ jest na pewno źle, bo próbowałem coś na wskaźnikach itp. Kazdy elemnent tablicy podglądam sobie na lcd. <br />Wiem ze Pan Mirek bardzo fajnie pokazuje uśrednianie w poradnikach, ale ja chciałbym aby to było na tzw. ruchomych elementach w tablicy. <br /><br /><br />Jeśli ktoś się mną zainteresuje to bardzo mnie to ucieszy. <br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11599">mucios15</a> — 10 gru 2016, o 17:34</p><hr />
]]></content>
</entry>
</feed>