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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-11-07T21:46:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1769&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-07T21:46:43+01:00</updated>
<published>2012-11-07T21:46:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18439#p18439</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18439#p18439"/>
<title type="html"><![CDATA[Re: ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18439#p18439"><![CDATA[
No to napisałem wyżej ile może być powodów tego<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2012, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2012-11-07T21:17:31+01:00</updated>
<published>2012-11-07T21:17:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18433#p18433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18433#p18433"/>
<title type="html"><![CDATA[Re: ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18433#p18433"><![CDATA[
Zasilanie na ADC mam przez cewkę 10uH. Projekt trochę zlutowany na płytce lutowanej, a trochę na stykowej.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Chodzi mi o to, że mi nigdy nie wyświetliło wartości pomiędzy tymi napięciami. I stąd moje pytanie dlaczego ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 7 lis 2012, o 21:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-07T20:56:40+01:00</updated>
<published>2012-11-07T20:56:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18431#p18431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18431#p18431"/>
<title type="html"><![CDATA[Re: ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18431#p18431"><![CDATA[
1. bierzesz sobie w łapki notę PDF swojego procka.<br />2. wchodzisz do rozdziału o ADC (z lewej strony)<br />3. wchodzisz na ostatni podrozdział w tymże rozdziale (zwykle nazywa się on Register Description) czyli opis rejestrów i masz tam nazwy wszystkich swoich rejestrów w procku.<br /><br />w książce pisałem że jak się zaczyna coś robić z prockiem to tak trzeba postępować<br /><br />wtedy byś zobaczył że w większości procków jeśli chodzi o ADC to masz rejestr ADCSRA (np w ATmega32) ale już np w ATtiny26 masz ten sam rejestr pod nazwą ADCSR<br /><br />więc tym się to różni nie mówiąc już o tym że jak napiszesz w Eclipse ADCSR dla projektu z m32 - to wyskoczy ci w tej linii błąd<br /><br />--------------<br /><br />a odnośnie tego skakania jak mówisz 4.15 - 4.18 to w czym problem hmmm?<br /><br />najpierw zastanów się do czego ci TAK dokładny pomiar co do drugiego miejsca po przecinku<br /><br />potem weź pod uwagę jak zbudowałeś swój układ (masz jakiś zestaw uruchomieniowy? czy jakaś płytka stykowa ?) ... jak masz rozwiązane zasilanie ? czy jest filtrowanie itp itd - NIC o tym nie napisałeś - a to także ma i to OGROMNY wpływ na stabilne pomiary z ADC<br /><br />no i kolejna sprawa - stosujesz zwykłą średnią arytmetyczną która nie zawsze jest najlepszym sposobem. Chcesz mieć bardziej precyzyjnie ? to w książce na DVD w przykładach masz uśrednianie ale taką fajną metodą (jest to tzw cyfrowy filtr dolnoprzepustowy) - średnia ciągnięta .... spójrz w kod i zobacz - bo z takim uśrednianiem zaczyna być jeszcze lepiej z wynikami<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2012, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2012-11-07T20:33:27+01:00</updated>
<published>2012-11-07T20:33:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18423#p18423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18423#p18423"/>
<title type="html"><![CDATA[Re: ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18423#p18423"><![CDATA[
To nie pomogło, dalej wyświetla cały czas na przemian 4,15V 4,18V<br />Jaka jest różnica jak się napisze:<br /><br />[syntax=c]uint16_t pomiar(uint8_t kanal) {<br />        //ustawienie wybranego kanału w rejestrze ADMUX<br />        ADMUX = (ADMUX &amp; 0xF8) | kanal;<br />        //START pomaiaru przez ustawienie bitu ADSC w rejestrze ADCSR<br />        ADCSRA |= (1&lt;&lt;ADSC);<br />        //oczekiwanie na koniec promiaru (dopóki bit ADSC jest =1)<br />        while( ADCSRA &amp; (1&lt;&lt;ADSC));<br /> <br />        return ADCW;<br />}[/syntax]<br /> <br /><br />a<br /><br />[syntax=c]<br />uint16_t pomiar(uint8_t kanal) {<br />//ustawienie wybranego kanału w rejestrze ADMUX<br />ADMUX = (ADMUX &amp; 0xF8) | kanal;<br />//START pomaiaru przez ustawienie bitu ADSC w rejestrze ADCSR<br />ADCSR |= (1&lt;&lt;ADSC);<br />//oczekiwanie na koniec promiaru (dopóki bit ADSC jest =1)<br />while( ADCSR &amp; (1&lt;&lt;ADSC));<br /><br />return ADCW;<br />}[/syntax]<br /><br />chodzi mi o ADCSR<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 7 lis 2012, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-07T18:12:26+01:00</updated>
<published>2012-11-07T18:12:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18396#p18396</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18396#p18396"/>
<title type="html"><![CDATA[Re: ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18396#p18396"><![CDATA[
przede wszystkim to zmień tą linię <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />ADMUX <strong><span style="color: #FF0000">|</span></strong>= (ADMUX &amp; 0xF8) | kanal;<br /></div><br /><br />na prawidłową - bo jest tu mały błąd i gdy zachce ci się mierzyć napięcie na więcej niż 1 kanale to będziesz miał ZONK'a , zaglądaj proszę na stronę z uaktualnieniami do książki<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/uaktualnienia-programow-do-dvd.html" >http://atnel.pl/uaktualnienia-programow-do-dvd.html</a><!-- m --><br /><br />masz tam w tabelce:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Błąd pomiaru napięcia za pomocą kilku kanałów w funkcji pomiar(), omawianej w książce, rozdział n/t ADC<br /></div><br /><br />poza tym skoro sumujesz 100 razy wynik z zakresu 0 -1024 to przecież może ci zabraknąć zakresu w zmiennej pm bo masz ją zdefiniowaną jako 16-bitową (uint16_t) <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... więc od razu zwiększ typ dla pm na uint32_t<br /><br />i np też zamiast robić jawne rzutowanie (chociaż to nie jest akurat błąd):<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">pm=(uint32_t)pom/100; </div><br /><br />to rób to tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">pm = pom / 100UL; </div><br /><br />wygodniej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lis 2012, o 18:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2012-11-07T17:53:05+01:00</updated>
<published>2012-11-07T17:53:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18392#p18392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18392#p18392"/>
<title type="html"><![CDATA[ADC ?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1769&amp;p=18392#p18392"><![CDATA[
Witam. Mój program pobiera 100 wartości z ADC, a później obniża z nich średnią. Moje pytanie jest takie, dlaczego nigdy nie uda mi się uzyskać np. 10,71V uzyskam 10,70 V ; 10,73 V ; 10,76V. Ale nigdy nie uzyskam rozdzielczości co 0,01V. Wiem, że mikrokontroler(Atm8) ma przetwornik 10 bitowy, a ja do dzielnika napięcia używam rezystorów 1k i 10k, ale przecież wartość odczytana z przetwornika zmienia się np. w ciągu 0,1s raz jest 900, a raz jest 901.<br />[syntax=c]<br /> * main.c<br /> *<br /> *  Created on: 2010-08-18<br /> *      Author: Łukasz<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />//#include &quot;LCD/lcd44780.h&quot;<br /><br />#include &quot;LED/multi.h&quot;// dołączenie naszego pliku nagłówkowego (obsługa LED)<br /><br />uint16_t pomiar(uint8_t kanal); // deklaracja funkcji pomiaru<br /><br />uint8_t i;<br />uint32_t wynik;<br />uint16_t pm;<br />uint32_t pom;<br /><br /><br />int main(void) {<br />d_led_init();   // inicjalizacja wyświetlacza multipleksowanego<br />//lcd_init();<br />sei();// włączenie globalnego zezwolenia na przerwania<br /><br />//wybór napięcia<br />// ADMUX |= (1&lt;&lt;REFS0); //VCC<br />ADMUX |= (1&lt;&lt;REFS0)|(1&lt;&lt;REFS1); // 2,56V<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);//włączenie modułu ADC oraz ustawienie preskalerana 64<br />k2=1;<br />while(1) {<br />pom=0;<br />for(i=0;i&lt;100;i=i+1)<br />{<br />pom=pom + pomiar(5);<br />_delay_ms(1);// oczekiwanie 1ms<br />}<br /><br />pm=(uint32_t)pom/100;//pm=pomiar(5);<br />wynik = (uint32_t)pm * 245 * 11;   //powinienło być zamiast 11 10,5, więc zamiast 245 jest 234<br />cy1=wynik/1000000;<br />cy2= (wynik/100000) % 10;<br />cy3= (wynik/10000) % 10;<br />cy4= ((wynik/1000) % 10);<br /><br />}<br /><br />/*<br />lcd_cls();<br /><br />lcd_locate(0,0);<br />//pomair napięcia na wejściu ADCx i wyświetlenie go na LCD<br />pm=pomiar(1);<br />wynik = (uint32_t)pm * 25 * 11;<br />czu_d = wynik/10000;<br />czu_u = (wynik/10) % 1000;<br />if (czu_d &lt; 10) lcd_int(0);<br />lcd_int(czu_d);<br />lcd_char( '.' );<br />lcd_int(czu_u);<br />lcd_str( &quot;V&quot; );<br /><br />lcd_locate(1,0);<br />lcd_int(pm);<br />_delay_ms(1000);<br />*/<br /><br /><br />}<br /><br />// definincja funkcje,która dokonuje pomiaru na wybranym kanale/wejściu<br />uint16_t pomiar(uint8_t kanal) {<br />//ustawienie wybranego kanału w rejestrze ADMUX<br />ADMUX |= (ADMUX &amp; 0xF8) | kanal;<br />//START pomaiaru przez ustawienie bitu ADSC w rejestrze ADCSR<br />ADCSRA |= (1&lt;&lt;ADSC);<br />//oczekiwanie na koniec promiaru (dopóki bit ADSC jest =1)<br />while( ADCSRA &amp; (1&lt;&lt;ADSC));<br /><br />return ADCW;<br />}<br /><br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 7 lis 2012, o 17:53</p><hr />
]]></content>
</entry>
</feed>