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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-29T15:22:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=8324&amp;mode</id>
<entry>
<author><name><![CDATA[Rodis11]]></name></author>
<updated>2014-08-29T15:22:02+01:00</updated>
<published>2014-08-29T15:22:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93362#p93362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93362#p93362"/>
<title type="html"><![CDATA[Re: ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93362#p93362"><![CDATA[
Dzięki za pomoc! Mieliście rację <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Teraz wszystko ładnie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5598">Rodis11</a> — 29 sie 2014, o 15:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rajmund96]]></name></author>
<updated>2014-08-28T22:57:00+01:00</updated>
<published>2014-08-28T22:57:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93331#p93331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93331#p93331"/>
<title type="html"><![CDATA[Re: ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93331#p93331"><![CDATA[
Witam .<br />Koledze ten kod wyswietla te same wyniki, gdyż zmienne y, x na wzajem sie usredniaja w tej funkcji [syntax=c]uint16_t ADC_Mediana( uint16_t pomiar );[/syntax] jest tak gdyż pomiary następują po sobie wpisując po kolei wartości do bufora , a dalej do zmiennej odpowiedzialnej za uśrednianie<br /> przykład : <br />x = 0, y = 10<br />(x+y) / 2 = 5 <br />, a jest to srednia ciągnięta ( bo się ciągnie  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> ) więc w rezlutacie obie zmienne będą wskazywac  mniej więcej to samo kiedy wykonają sie kolejne pomiary<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />O widze że kolega mnie ubiegł <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 25 minutach ]</span></strong><br /><br />Rozwiązaniem jest stworzenie typu strukturalnego, w którym będziesz przechowywał indeks bufora oraz sam bufor <br /><br />[syntax=c]typedef struct {<br /><br />uint8_t idx;<br />uint16_t Array&#91;SAMPLE&#93;;<br /><br />} TVAL;<br /><br />TVAL x, y; // definiujemy zmienne typu strukturalnego TVAL<br /><br /><br />uint16_t ADC_Mediana( uint16_t pomiar, TVAL * value ) // dodatkowy argument jako wskaznik<br />{<br />        //static uint16_t Array&#91;SAMPLE&#93;;<br />        //static uint8_t A_indeks;<br />        uint16_t bufor = 0;<br />        uint8_t i;<br /> <br />        value-&gt;Array&#91;value-&gt;idx&#93; = pomiar;<br />        value-&gt;idx++;<br />        if( value-&gt;idx &gt;= SAMPLE ) value-&gt;idx = 0;<br /> <br />        for( i = 0; i &lt; SAMPLE; i++) bufor +=value-&gt;Array&#91;i&#93;;<br />        bufor /= SAMPLE;<br /> <br />        return bufor;<br />}[/syntax]<br />a i nie dawaj więcej próbej niż 64 bo przekroczysz zakres zmiennej bufor, a jeśli chcesz więcej próbek to zmień tej zmiennej typ na uint32_t<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2275">rajmund96</a> — 28 sie 2014, o 22:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-08-28T22:33:13+01:00</updated>
<published>2014-08-28T22:33:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93330#p93330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93330#p93330"/>
<title type="html"><![CDATA[Re: ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93330#p93330"><![CDATA[
spójrz na funkcję ADC_Mediana. Wg mnie problem tkwi tutaj w tym, że masz w tej funkcji zmienne statyczne, a wykorzystujesz tę funkcję do wyliczania jednocześnie dwóch wartości X i Y. działałoby to gdybyś zrobił dwie takie same funkcje ale o innej nazwie i je wykorzystywał osobno do wyliczenia WYNIK.X oraz WYNIK.Y. myślę, że wiesz o co mi chodzi. Dlatego wg mnie mieszają Ci się wyniki pomiarów  <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=1672">Nondzu</a> — 28 sie 2014, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rodis11]]></name></author>
<updated>2014-08-28T21:22:10+01:00</updated>
<published>2014-08-28T21:22:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93321#p93321</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93321#p93321"/>
<title type="html"><![CDATA[Re: ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93321#p93321"><![CDATA[
Nie posiadam schematu, ale jest to układ mierzący napięcie na dwóch wyjściach akcelerometru analogowego.<br />Wyniki są wyświetlane na LCD. Pod port PC4 mam podpiętą nóżkę z osi X natomiast pod PC5 nóżkę osi Y.<br />Gwarantuję poprawność połączenia, układ połączony z dbałością wiec nie tu problem. Jeśli jednak będzie taka potrzeba<br />postaram się jutro wieczorem zamieścić schemat. Robiąc pomiary osobno wszystko działa jak należy. Wartość ADC w osi X zmienia<br />się jedynie gdy ruszam płytką w tej osi, analogicznie jest dla Y. Problemem jest to, że gdy mierzę jednocześnie napięcie w obu osiach.<br />Ruszając płytką tylko w jednej osi np. X ( czyli zmienia się napięcie na jednej nóżce, drugie napięcie jest stałe ) to i tak zmienia się wartość w osi Y.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5598">Rodis11</a> — 28 sie 2014, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JanuszT]]></name></author>
<updated>2014-08-28T21:06:26+01:00</updated>
<published>2014-08-28T21:06:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93316#p93316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93316#p93316"/>
<title type="html"><![CDATA[Re: ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93316#p93316"><![CDATA[
Witam<br /><br />Mógłbyś pokazać schemat swojego ukladu?<br /><br />Czy możesz dokładniej opisać co masz na myśli pisząc, że wartości &quot;zmiany wartości wpływają na siebie&quot;?<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4367">JanuszT</a> — 28 sie 2014, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rodis11]]></name></author>
<updated>2014-08-28T20:27:41+01:00</updated>
<published>2014-08-28T20:27:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93306#p93306</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93306#p93306"/>
<title type="html"><![CDATA[ADC - 2 kanały]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8324&amp;p=93306#p93306"><![CDATA[
Witam. Oglądając poradnik Pana Mirka na youtube odnośnie ADC skonstruowałem układ,<br />który mierzy jednocześnie napięcie na dwóch wejściach.<br />Niestety jednak coś nie mogę znaleźć błędu w kodzie ( prawdopodobnie zbyt mała wiedza )<br />Problem jest taki że próbki mi się mieszają, a dokładniej gdy zmieniam wartość napięcia na PC5<br />wpływa to na WYNIK.X oraz odwrotnie. W rezultacie do zmiennych WYNIK.X oraz WYNIK.Y wpisane zostają<br />te same wyniki. Proszę o pomoc w jakimś odseparowaniu wyników od siebie.<br /><br />[syntax=cpp]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;HD44780.c&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#define SAMPLE 20<br /><br />void ADC_Initialize();<br />uint16_t ADC_Get( uint8_t kanal );<br />uint16_t ADC_Mediana( uint16_t pomiar );<br /><br />typedef struct<br />{<br />uint16_t sample_X;<br />uint16_t sample_Y;<br /><br />uint16_t med_X;<br />uint16_t med_Y;<br /><br />uint16_t X;<br />uint16_t Y;<br /><br />}DATA;<br /><br />int main()<br />{<br /><br />LCD_Initalize();<br />ADC_Initialize();<br /><br />DATA WYNIK;<br /><br />for(;;)<br />{<br /><br />WYNIK.sample_X = ADC_Get( PC4 );<br />WYNIK.X = ADC_Mediana( WYNIK.sample_X );<br /><br />WYNIK.sample_Y = ADC_Get( PC5 );<br />WYNIK.Y = ADC_Mediana( WYNIK.sample_Y );<br /><br />LCD_Home();<br />LCD_WriteText(&quot;X: &quot;);<br />LCD_putlong( WYNIK.X, 10 );<br />LCD_WriteText(&quot;  &quot;);<br />LCD_GoTo(0,1);<br />LCD_WriteText(&quot;Y: &quot;);<br />LCD_putlong( WYNIK.Y, 10 );<br />LCD_WriteText(&quot;  &quot;);<br /><br /><br />_delay_ms( 5 );<br />}<br /><br />return 0;<br />}<br /><br />void ADC_Initialize()<br />{<br />ADCSRA |= (1&lt;&lt;ADEN);<br />ADCSRA |= (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0);<br />ADMUX  |= (1&lt;&lt;REFS1) | (1&lt;&lt;REFS0);<br />}<br /><br />uint16_t ADC_Get( uint8_t kanal )<br />{<br />ADMUX = ( ADMUX &amp; 0b11111000 ) | kanal;<br />ADCSRA |= (1&lt;&lt;ADSC); //start convert<br />while( ADCSRA &amp; (1&lt;&lt;ADSC) );<br />return ADCW;<br />}<br /><br />uint16_t ADC_Mediana( uint16_t pomiar )<br />{<br />static uint16_t Array&#91;SAMPLE&#93;;<br />static uint8_t A_indeks;<br />uint16_t bufor = 0;<br />uint8_t i;<br /><br />Array&#91;A_indeks&#93; = pomiar;<br />A_indeks++;<br />if( A_indeks &gt;= SAMPLE ) A_indeks = 0;<br /><br />for( i = 0; i &lt; SAMPLE; i++) bufor +=Array&#91;i&#93;;<br />bufor /= SAMPLE;<br /><br />return bufor;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5598">Rodis11</a> — 28 sie 2014, o 20:27</p><hr />
]]></content>
</entry>
</feed>