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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-13T12:55:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14495&amp;mode</id>
<entry>
<author><name><![CDATA[pbmaster]]></name></author>
<updated>2016-02-13T12:55:33+01:00</updated>
<published>2016-02-13T12:55:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153517#p153517</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153517#p153517"/>
<title type="html"><![CDATA[Re: Programowy PWM i pomiar ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153517#p153517"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Podejrzewam, że przy włączonym Pwm-ie diody Led zaczynają ci &quot;szarpać&quot; troszkę prądu. A to powoduje zmiany napięcia zasilającego i wariowanie pomiarów ADC.<br /><br />Kiedyś podłączyłem do procka diodę led. Za pomocą timera programowego ustawiłem aby dioda migała co pół sekundy. Ot taki bajer aby widzieć, że procek pracuje.<br /><br />Potem dołożyłem pomiar ADC. Ale wyniki pomiarów skakały sobie w takt migania diody. Po wyłączeniu migania pomiary znacznie się uspokajały. Jako, że to były tylko testy to nie drążyłem tematu dalej. Może by pomogło inne poprowadzenie zasilania diody led albo podłączenie jej poprzez jakiś tranzystor. Tak aby prąd zasilający diodę nie płynął poprzez wnętrzności procka tylko proso z zasilacza.<br /><br />Może u ciebie jest podobna sytuacja.<br /></div><br /><br />Jest to bardzo prawdopodobne co piszesz, bo po wypięciu diody, z włączonym pwm i adc jest wszystko ok. Sprawdzę przez tranzystor i dam znać. Pozdr.<br /><br />No i oczywiście miałeś rację! Dzięki za poświęcony czas! Biorę się dalej do kodowania <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=2093">pbmaster</a> — 13 lut 2016, o 12:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-13T12:22:53+01:00</updated>
<published>2016-02-13T12:22:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153513#p153513</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153513#p153513"/>
<title type="html"><![CDATA[Re: Programowy PWM i pomiar ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153513#p153513"><![CDATA[
Podejrzewam, że przy włączonym Pwm-ie diody Led zaczynają ci &quot;szarpać&quot; troszkę prądu. A to powoduje zmiany napięcia zasilającego i wariowanie pomiarów ADC.<br /><br />Kiedyś podłączyłem do procka diodę led. Za pomocą timera programowego ustawiłem aby dioda migała co pół sekundy. Ot taki bajer aby widzieć, że procek pracuje.<br /><br />Potem dołożyłem pomiar ADC. Ale wyniki pomiarów skakały sobie w takt migania diody. Po wyłączeniu migania pomiary znacznie się uspokajały. Jako, że to były tylko testy to nie drążyłem tematu dalej. Może by pomogło inne poprowadzenie zasilania diody led albo podłączenie jej poprzez jakiś tranzystor. Tak aby prąd zasilający diodę nie płynął poprzez wnętrzności procka tylko proso z zasilacza.<br /><br />Może u ciebie jest podobna sytuacja.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 13 lut 2016, o 12:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pbmaster]]></name></author>
<updated>2016-02-13T11:41:38+01:00</updated>
<published>2016-02-13T11:41:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153503#p153503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153503#p153503"/>
<title type="html"><![CDATA[Re: Programowy PWM i pomiar ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153503#p153503"><![CDATA[
Dzięki kicajek za zainteresowanie, ale to zauważyłem zaraz po opublikowaniu posta. Już poprawione, jednak nie tutaj leży przyczyna problemu... <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2093">pbmaster</a> — 13 lut 2016, o 11:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-02-11T21:49:12+01:00</updated>
<published>2016-02-11T21:49:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153368#p153368</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153368#p153368"/>
<title type="html"><![CDATA[Re: Programowy PWM i pomiar ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153368#p153368"><![CDATA[
Witam<br />Tak na razie:<br /><div class="quotetitle">pbmaster napisał(a):</div><div class="quotecontent"><br />[syntax=c]uint8_t pwm_r, pwm_g, pwm_b;[/syntax]<br /></div><br />powinno być <strong>volatile</strong> bo używasz w przerwaniu - chyba.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 11 lut 2016, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pbmaster]]></name></author>
<updated>2016-02-11T20:58:48+01:00</updated>
<published>2016-02-11T20:58:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153360#p153360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153360#p153360"/>
<title type="html"><![CDATA[Programowy PWM i pomiar ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14495&amp;p=153360#p153360"><![CDATA[
Próbuję okiełznać programowy PWM i ADC i nie mogę zrozumieć dlaczego po zadaniu jakiejkolwiek wartości pwm pomiar ADC zaczyna bardzo &quot;skakać&quot;. Po zakomentowaniu pwm_g=250 skakanie adc jest w granicach 6, natomiast z użytym pwm_g dochodzi do 64, a kiedy dodam następne wartości pwm dla innych diod jest nawet 120 i więcej. Możecie mnie naprowadzić co robię źle? Poradniki Mirka o ADC obejrzane, filtracja zasilania taka jak w poradnikach. Zastanawia mnie dlaczego ADC mi się &quot;rozjeżdża&quot; po uaktywnieniu pwma? Oto kod:<br /><br />Atmega 8, 8MHz wewn.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 30 sty 2016<br /> *      Author: Pbmaster<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MK_UART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br />#define LED (1&lt;&lt;PB3)<br />#define LED_ON PORTB |= LED<br />#define LED_OFF PORTB &amp;= ~LED<br />#define LED_TOG PORTB ^= LED<br /><br />#define LED_R (1&lt;&lt;PD3)<br />#define LED_R_OFF PORTD |= LED_R<br />#define LED_R_ON PORTD &amp;= ~LED_R<br />#define LED_R_TOG PORTD ^= LED_R<br /><br />#define LED_G (1&lt;&lt;PD4)<br />#define LED_G_OFF PORTD |= LED_G<br />#define LED_G_ON PORTD &amp;= ~LED_G<br />#define LED_G_TOG PORTD ^= LED_G<br /><br />#define LED_B (1&lt;&lt;PD2)<br />#define LED_B_OFF PORTD |= LED_B<br />#define LED_B_ON PORTD &amp;= ~LED_B<br />#define LED_B_TOG PORTD ^= LED_B<br /><br />#define REF_256 (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0)<br />#define REF_VCC (1&lt;&lt;REFS0);<br /><br />#define MAX(a,b) ((a&gt;b)?a:b)<br />#define MIN(a,b) ((a&lt;b)?a:b)<br /><br />uint16_t min = 1023, max, diff;<br />uint16_t wyniki&#91;7&#93;;<br />uint8_t pwm_r, pwm_g, pwm_b;<br /><br />uint16_t pomiar ( uint8_t kanal );<br /><br />int main (void){<br /><br />DDRB |= LED;<br />DDRD |= LED_R | LED_G | LED_B;<br />PORTD |= LED_R | LED_G | LED_B;<br /><br />TCCR2 |= (1&lt;&lt;WGM21); //CTC<br />TCCR2 |= (1&lt;&lt;CS20); //preskaler 1<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie<br />OCR2=99;<br /><br />ADCSRA |= (1&lt;&lt;ADEN); // włącz ADC<br />ADCSRA |= (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0); // preskaler 128<br />ADMUX |= REF_256; // napięcie odniesienia 2,56V<br /><br />USART_Init(__UBRR);<br /><br />sei();<br /><br />tr_cls(0);<br />uart_puts(&quot;Miernik napięcia: &quot;);<br />_delay_ms (1000);<br />tr_cls(1);<br /><br />uint16_t wynik = 0;<br />uint16_t srednia = 0;<br /><br />while(1){<br /><br />wynik = pomiar (PC5);<br />max = MAX(max,wynik);<br />min = MIN(min,wynik);<br />diff = max-min;<br /><br />tr_locate(3,0);<br />uart_putint(srednia, 10);<br />uart_puts(&quot;    min: &quot;);<br />uart_putint(min, 10);<br />uart_puts(&quot;    max: &quot;);<br />uart_putint(max, 10);<br />uart_puts(&quot;    diff: &quot;);<br />uart_putint(diff, 10);<br />uart_puts(&quot;    wynik: &quot;);<br />uart_putint(wynik, 10);<br /><br />pwm_g=250;<br /><br />_delay_us(100);<br /><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 />}<br /><br />ISR (TIMER2_COMP_vect){<br />static uint8_t cnt;<br /><br />if(pwm_r&gt;cnt) LED_R_ON; else LED_R_OFF;<br />if(pwm_g&gt;cnt) LED_G_ON; else LED_G_OFF;<br />if(pwm_b&gt;cnt) LED_B_ON; else LED_B_OFF;<br /><br />cnt++;<br /><br />}[/syntax] <br /><br />Kiedy w przerwaniu dodam &gt;= to ADC jeszcze bardziej szaleje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2093">pbmaster</a> — 11 lut 2016, o 20:58</p><hr />
]]></content>
</entry>
</feed>