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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-28T17:13:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11138&amp;mode</id>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-28T17:13:10+01:00</updated>
<published>2015-03-28T17:13:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124884#p124884</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124884#p124884"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124884#p124884"><![CDATA[
można zamknąc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 28 mar 2015, o 17:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2015-03-26T23:42:33+01:00</updated>
<published>2015-03-26T23:42:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124751#p124751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124751#p124751"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124751#p124751"><![CDATA[
Można i tak, wszystko zależy od tego co chcesz osiągnąć, jakie masz założenia do programu. Sposobów na wykonanie tego samego zadania jest tysiące, ważne żeby program działał tak jak sobie założyłeś  <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=3349">Arek1111111111</a> — 26 mar 2015, o 23:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-26T17:50:09+01:00</updated>
<published>2015-03-26T17:50:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124697#p124697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124697#p124697"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124697#p124697"><![CDATA[
w sumie na początku pętli while(1) postanowiłem dodać takie coś  by sprawdzało wcześniejszy stan diody i jesli bedzie w stanie wysoki to ma tak zostać ale jesli nie  to ma sprawdzić stan adc i jesli wtedy będzie wartość większa od 500 to zmienić jej stan   <br />[syntax=c]/*<br /> * sredinna.c<br /> *<br /> *  Created on: 26 mar 2015<br /> *      Author: krzychuu<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#define led1 PB0 //defincja diody podłaczonej do PB0<br />void init_adc (void); //deklaracja funkcji<br />uint16_t pomiar(uint8_t kanal); //deklaracja funkci pomiaru<br />int main(void){<br /><br />DDRB |=(1&lt;&lt;led1); //ddrb jako wyjscie<br />init_adc();//inicjalizacja adc<br />uint32_t srednia=0;<br />uint8_t time=9;<br />while(1){<br />if(!(PINB, PB0)) //jeśli wejście jest w stanie wysokim<br />{<br />return 1;<br />}<br />else<br />  if(srednia&gt;500)led_on();<br />  else{<br />  pomiar();<br /><br /><br />srednia=srednia*time;<br />srednia=srednia+ADC;<br />srednia=srednia/(time+1);<br />if(srednia&gt;350)<br />{<br />led_on();<br /><br />}<br /><br /><br /><br /><br /><br />void init_adc (void){<br /><br />//==================ADC init=====================<br />ADMUX |=(1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Wybór napięcia odniesienia Vcc<br />ADCSRA |= (1&lt;&lt; ADEN);//Włączenie modułu ADC<br />ADCSRA |= (1&lt;&lt; ADPS1)|(1&lt;&lt; ADPS0);//(1&lt;&lt; ADPS0) //oraz prescalera na 8<br />ADMUX|=(1&lt;&lt;MUX0);//wybrano adc1<br />}<br />}<br />}<br />void led_on(void){<br />PORTB|=(1&gt;&gt;led1);<br />}<br />uint16_t pomiar(uint8_t kanal){<br />ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />while(ADCSRA &amp; (1&lt;&lt;ADSC)); //czeka na zakończenie konwersji<br />return ADC;<br />}<br />}[/syntax]<br />tylko nie wiem czy dobrze rozumuje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 26 mar 2015, o 17:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2015-03-25T22:12:28+01:00</updated>
<published>2015-03-25T22:12:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124644#p124644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124644#p124644"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124644#p124644"><![CDATA[
Bardzo ładnie to widać dodając opóźnienie do pomiarów aby pomiary były wykonywanie np co 250 ms, wtedy gdy adc jest powyżej 500 to co te 250 ms dioda zmienia stan na przeciwny.<br />Aby zrobić tak że gdy adc jest powyżej 500 dioda się świeciła, a gdy jest poniżej dioda była zgaszona można to rozwiązać np tak:<br />[syntax=c]if(srednia&gt;500)LED_ON;<br />  else LED_OF;[/syntax]<br /><br />Wtedy nie potrzeba nawet tak dużego opóźnienia pomiarów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 25 mar 2015, o 22:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arek1111111111]]></name></author>
<updated>2015-03-25T20:53:50+01:00</updated>
<published>2015-03-25T20:53:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124629#p124629</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124629#p124629"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124629#p124629"><![CDATA[
Witam, przerobiłem Twój kod. Tutaj jest już obsługa uarta. Dioda zmienia stan na przeciwny za każdym razem kiedy wartość średnia przekroczy 500. Trzeba pamiętać że nieraz dioda zmienia stan na przeciwny kilka razy w ciągu małej chwili więc to może być zgubne. Trzeba by się zastanowić nad np zwłoką czasową jak przy obsłudze przycisków. To takie moje gdybanie.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br /><br />#include &quot;MYUART/myuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br />#define LED (1&lt;&lt;PC0)//MAKRA DLA DIODY LED<br />#define LED_ON PORTC |= LED<br />#define LED_OF PORTC &amp;= ~LED<br />#define LED_TOG PORTC ^= LED<br /><br />uint16_t pomiar(uint8_t kanal);<br />void get_vol(uint16_t adc);<br /><br />int main(void)<br />{<br /><br />DDRC |= LED;<br />//inicjalizacjia adc<br />ADCSRA |= (1&lt;&lt;ADEN);//WŁACZ ADC<br />ADCSRA |= (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0); // preskaler = 128<br />    ADMUX |= (1&lt;&lt;REFS1) | (1&lt;&lt;REFS0); //WEWNĘTRZNE ZRÓDŁO ODNIESIENIA 2,56 V<br />uart_init(__UBRR);// INICJALIZACJIA UART<br /><br />tr_cls(0);//CZYSZCZENIE UARTA<br />uart_puts(&quot;miernik napiecia&quot;);<br />    _delay_ms(1000);<br />tr_cls(1);<br />tr_locate(1,3);<br />tr_attr(1,YELLOW,BLACK);<br />uart_puts(&quot;atmega32&quot;);<br /><br />         uint16_t wynik;<br />         uint32_t srednia=0;<br />         uint8_t time=9;<br /><br /><br />//sei();<br />while(1)//PĘTLA GŁÓWNA<br />{<br /><br />           wynik=pomiar(PA7);<br />          srednia=srednia*time;<br />          srednia=srednia+wynik;<br />          srednia=srednia/(time+1);<br />          if(srednia&gt;500) LED_TOG;<br /><br /><br />        tr_locate(3,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts(&quot;Wartosc ADC : &quot;);<br />tr_pen_color(RED);<br />uart_putlong(srednia,10);<br />uart_puts(&quot;              &quot;);<br />//LED_TOG;<br />_delay_ms(5);<br /><br /><br />}<br />}<br />uint16_t pomiar(uint8_t kanal)<br />{<br /> ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br /> ADCSRA |= (1&lt;&lt;ADSC);<br /> while(ADCSRA &amp;(1&lt;&lt;ADSC));<br /> return ADCW;<br />}<br />void get_vol(uint16_t adc)<br />{<br /><br />}[/syntax]<br /><br />To działający kod, może trochę Ci pomoże<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3349">Arek1111111111</a> — 25 mar 2015, o 20:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-25T09:27:32+01:00</updated>
<published>2015-03-25T09:27:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124565#p124565</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124565#p124565"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124565#p124565"><![CDATA[
Witamn obejzałem wyzej podany poradnik i napisałem takie coś <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#define led1 PB0 //defincja diody podłaczonej do PB0<br />void init_adc (void); //deklaracja funkcji<br />int main(void){<br /><br /> DDRB |=(1&lt;&lt;led1);  //ddrb jako wyjscie<br /> PORTB |= (1&lt;&lt;led1);<br /> init_adc();<br /> uint16_t wynik;<br /> uint32_t srednia=0;<br /> uint8_t time=9;<br /> while(1){<br /> ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />  while(ADCSRA &amp; (1&lt;&lt;ADSC)); //czeka na zakończenie konwersji<br />  wynik=ADC;<br />  srednia=srednia*time;<br />  srednia=srednia+wynik;<br />  srednia=srednia/time+1;<br />  if(srednia&gt;500)<br />{<br /><br /><br />  PORTB ^= (1&lt;&lt;led1);<br /><br /><br />}<br /><br />void init_adc (void){<br /><br /> //==================ADC init=====================<br /> ADMUX |=(1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Wybór napięcia odniesienia Vcc<br /> ADCSRA |= (1&lt;&lt; ADEN);//Włączenie modułu ADC<br /> ADCSRA |= (1&lt;&lt; ADPS1)|(1&lt;&lt; ADPS0);//(1&lt;&lt; ADPS0)//oraz prescalera na 8<br /> ADMUX|=(1&lt;&lt;MUX0);//wybrano adc1<br />}<br />}<br />}[/syntax]<br /><br />ale brak jest reakcji diody podłączonej do pb0 napiecie reguluje potencjometrem podłczonym do wejscia adc0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 25 mar 2015, o 09:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-03-22T12:24:33+01:00</updated>
<published>2015-03-22T12:24:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124216#p124216</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124216#p124216"/>
<title type="html"><![CDATA[Re: Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124216#p124216"><![CDATA[
Panie.... obejrzyj sobie DOKŁADNIE ten cały cykl poradników<br /><!-- m --><a class="postlink" href="https://www.youtube.com/playlist?list=PLtXXWLsA5QNi_R9uDXpHRpo5hRnig_f23" >https://www.youtube.com/playlist?list=P ... 5hRnig_f23</a><!-- m --><br /><br />i zobacz jak można podejść do uśredniania i co się w ogóle z tym wiąże od strony sprzętowej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 mar 2015, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysiekwfd]]></name></author>
<updated>2015-03-22T10:37:05+01:00</updated>
<published>2015-03-22T10:37:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124196#p124196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124196#p124196"/>
<title type="html"><![CDATA[Usrednianie adc prosze o sprawdzenie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11138&amp;p=124196#p124196"><![CDATA[
Witam chciałbym uśrednić 4 wyniki pomiarów z adc i napisałem coś takiego prosze o sprawdzenie poprawności kodu .<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#define led1 PB0 //defincja diody podłaczonej do PB0<br />void init_adc (void); //deklaracja funkcji<br />unsigned int pomiar;<br />unsigned int usredniony_pomiar;<br />unsigned char pomiar_licznik;<br />static unsigned int temp;<br /><br />int main(void){<br /><br />DDRB |=(1&lt;&lt;led1);  //ddrb jako wyjscie<br /> PORTB |= (1&lt;&lt;led1);<br /> init_adc();<br /> while(1){<br /> ADCSRA |= (1&lt;&lt;ADSC); //start konwersji<br />  while(ADCSRA &amp; (1&lt;&lt;ADSC)); //czeka na zakończenie konwersji<br /><br />  pomiar = ADC;      // pobranie wartosci pomiaru z rejestru ADC<br />  temp+= pomiar ;<br />  pomiar_licznik++;<br />  if(pomiar_licznik == 4)<br />{<br /><br />   usredniony_pomiar = temp / pomiar_licznik;   // zmienna przechowuje usredniony pomiar<br />   temp = 0;<br />   pomiar_licznik = 0;<br />}<br />  if(usredniony_pomiar&gt;500)<br />  {<br />  PORTB ^= (1&lt;&lt;led1);<br />  }<br />}<br /><br />void init_adc (void){<br /><br /> //==================ADC init=====================<br /> ADMUX |=(1&lt;&lt;REFS0);//|(1&lt;&lt;REFS1); //Wybór napięcia odniesienia Vcc, REFS1 - 2,56V<br /> ADCSRA |= (1&lt;&lt; ADEN);//Włączenie modułu ADC<br /> ADCSRA |= (1&lt;&lt; ADPS1)|(1&lt;&lt; ADPS0);//(1&lt;&lt; ADPS0)//oraz prescalera na 8<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8367">krzysiekwfd</a> — 22 mar 2015, o 10:37</p><hr />
]]></content>
</entry>
</feed>