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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-10T11:14:01+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=20485&amp;mode</id>
<entry>
<author><name><![CDATA[fenix2]]></name></author>
<updated>2018-04-10T11:14:01+01:00</updated>
<published>2018-04-10T11:14:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206689#p206689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206689#p206689"/>
<title type="html"><![CDATA[Re: Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206689#p206689"><![CDATA[
Kod programu jest w pierwszym poście dla 1 wejścia. Analogicznie jest dla drugiego.<br />Dodam zresztą najważniejsze fragmenty.<br />Mam Blue booka ale tam niestety nie jest to zagadnienie poruszone. <br /><br />[syntax=c]typedef struct {<br />uint16_t adc_mid;// wartośc uśredniona ADC<br />uint16_t ref_adc;// wartośc ADC dla środkowego napięcia<br />uint16_t ref_v;// Środkowe napięcie<br />char v1&#91;3&#93;;<br />char v2&#91;3&#93;;<br />}TVOL;<br /><br />TVOL accu1_vol;<br /><br />typedef struct {<br />uint16_t adc_mid2;// wartośc uśredniona ADC<br />uint16_t ref_adc2;// wartośc ADC dla środkowego napięcia<br />uint16_t ref_v2;// Środkowe napięcie<br />char a1&#91;3&#93;;<br />char a2&#91;3&#93;;<br />}TCUR;<br /><br />TCUR accu1_cur;<br />//Pomiar ADC<br /><br />uint16_t pomiar (uint8_t kanal){<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;//Maskowanie, wyór kanału ADC<br />ADCSRA |= (1&lt;&lt;ADSC);//Start konwersji<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));//Czekaj aż skończy pomiar<br />return ADCW;<br /><br />}<br /><br />//Pomiar ADC2<br /><br />uint16_t pomiar2 (uint8_t kanal2){<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal2;//Maskowanie, wybór kanału ADC<br />ADCSRA |= (1&lt;&lt;ADSC);//Start konwersji<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));//Czekaj aż skończy pomiar<br />return ADCW;<br />}<br />// Funkcjia podaj napięcie, przelaiczanie<br />void get_vol (uint16_t adc, TVOL * voltage) {<br /><br />static uint16_t sr&#91;SR&#93;; //Tablica do uśredniania, bufor do zapamiętywania próbek SR- ilośc próbek;<br />static uint8_t idx;// Index tablicy;<br />uint32_t sr1=0;// Średnia wartośc;<br />uint8_t i;<br /><br />sr&#91;idx++ &amp; (SR-1)&#93; = adc;// Napełnianie tablicy wartościami pomiarów 'adc', SR-1 - ilośc elementów<br />//if(idx &amp; (SR-1)) return;//<br /><br />for(i=0; i&lt;SR; i++) sr1+=sr&#91;i&#93;;//Sumowanie elementów tablicy<br />sr1/= SR;//Srednia<br />voltage-&gt; adc_mid = sr1;//Wrzucenie średniej do adc_mid<br /><br />uint16_t wynik = (sr1* (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;//Pomiar z uśrednianiem<br />//uint16_t wynik = (adc* (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;//Pomiar bez uśredniania<br /><br />div_t divmod = div(wynik, 100);<br />itoa(divmod.quot, voltage-&gt;v1, 10);<br />itoa(divmod.rem, voltage-&gt;v2, 10);<br />if(divmod.rem &lt; 10 ){<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;='\0';<br />voltage-&gt;v2&#91;2&#93;='\0';<br /><br />}<br /><br />// Funkcjia podaj PRAD, przelaiczanie<br />void get_vol2 (uint16_t adc2, TCUR * voltage2) {<br /><br />uint16_t wynik2 = (adc2* (uint32_t)voltage2-&gt;ref_v2 ) / voltage2-&gt;ref_adc2;//Pomiar bez uśredniania<br /><br />div_t divmod2 = div(wynik2, 100);<br />itoa(divmod2.quot, voltage2-&gt;a1, 10);<br />itoa(divmod2.rem, voltage2-&gt;a2, 10);<br />if(divmod2.rem &lt; 10 ){<br />voltage2-&gt;a2&#91;0&#93;='0';<br />voltage2-&gt;a2&#91;1&#93;=divmod2.rem+'0';<br />}<br /><br />voltage2-&gt;a1&#91;2&#93;='\0';<br />voltage2-&gt;a2&#91;2&#93;='\0';<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19176">fenix2</a> — 10 kwi 2018, o 11:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2018-04-10T10:07:37+01:00</updated>
<published>2018-04-10T10:07:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206687#p206687</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206687#p206687"/>
<title type="html"><![CDATA[Re: Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206687#p206687"><![CDATA[
Nie znam Twojego kodu, ale podzielę się z Tobą swoim doświadczeniem z ADC<br />1. Po przełączeniu kanału pierwszy pomiar wywalałem do kosza - był przekłamany - nie wiem do końca dlaczego tak było - niby poprzednia konwersja się skończyła... Być może ja popełniałem gdzieś błąd w kodzie, ale po wywaleniu pierwszej konwersji uzyskiwałem satysfakcjonujące mnie wyniki, więc tematu nie drążyłem.<br />2. Zmieniając kanał robiłem na nim serię pomiarów, z której wyciągałem średnią. Chodzi o to, że nie robiłem pomiaru pojedynczego i nie zmieniałem kanału, tylko po wykonaniu kilku pomiarów zmieniałem kanał.<br />Bawiłem się (chyba) atmega8. Było to dość dawno - z dwa, trzy projekty temu  <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=6195">APAP75</a> — 10 kwi 2018, o 10:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenix2]]></name></author>
<updated>2018-04-10T08:44:44+01:00</updated>
<published>2018-04-10T08:44:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206685#p206685</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206685#p206685"/>
<title type="html"><![CDATA[Re: Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206685#p206685"><![CDATA[
Witam,<br /><br />pomiary napięcie ładnie działają ale chciałbym zrobić jednocześnie na dwóch kanałach. <br />I tu zaczął się problem. <br />Zrobiłem analogiczną funkcję jak dla pierwszego kanału.<br />I pomiary zaczęły skakać dziwnie jak by oba kanały się nakładły na siebie. <br />Jeśli robię pomiar tylko na jednym to wszystko działa poprawie . <br />Jak to rozwiązać?<br />NA dole kawałek kodu wywołującego pomiar. <br />Każdy z osoban działa dobrze. Dałem nawet opóźnienie bo myślałem że może przetwornik się nie wyrabia ale to nic nie pomogło. <br />[syntax=c]wynik = pomiar (PC5);<br /> get_vol (wynik, &amp;accu1_vol);<br />_delay_ms( 100 );<br />wynik2 = pomiar2 (PC0);<br />get_vol2 (wynik2, &amp;accu1_cur);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19176">fenix2</a> — 10 kwi 2018, o 08:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenix2]]></name></author>
<updated>2018-03-29T17:51:50+01:00</updated>
<published>2018-03-29T17:51:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206224#p206224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206224#p206224"/>
<title type="html"><![CDATA[Re: Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206224#p206224"><![CDATA[
Zadziałało, dziękuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19176">fenix2</a> — 29 mar 2018, o 17:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-03-25T18:47:31+01:00</updated>
<published>2018-03-25T18:47:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206044#p206044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206044#p206044"/>
<title type="html"><![CDATA[Re: Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206044#p206044"><![CDATA[
Linie 118 i 119 spróbuj zmienić na:[syntax=c]//<br />    voltage-&gt;v1&#91;2&#93;='\0';<br />    voltage-&gt;v2&#91;2&#93;='\0';[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 25 mar 2018, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fenix2]]></name></author>
<updated>2018-04-01T12:37:45+01:00</updated>
<published>2018-03-25T17:41:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206038#p206038</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206038#p206038"/>
<title type="html"><![CDATA[Wyświetlanie ADC na LCD44780]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20485&amp;p=206038#p206038"><![CDATA[
Witam,<br /><br />szanowne grono. <br />Mam problem z wyświetleniem wartości prądu na wyświetlaczu zgodnym z HD44780.<br />Biblioteki użyłem HD44780_4bit_rw od 'radzia'. <br />Program do testów napisałem na podstawie poradnika MIrka z YT &quot;Przetworniki ADC 04b&quot;.<br />Ponieważ zaczynam w ogóle przygodę z AVR proszę o wyrozumiałość.<br />Pierwsza część liczby czyli przed kropką wyświetla się poprawnie: LCD_WriteText(accu1_vol.v1); <br />Gdy próbuje wyświetlić drugą część cały wyświetlacz się wykrzacza. <br />Dziękuje i pozdrawiam.<br /><br /><br />[syntax=c]/*<br /> <br />while(1) {<br />V=V+1;<br /><br />wynik = pomiar (PC5);<br /><br />get_vol (wynik, &amp;accu1_vol);<br /><br /><br />   LCD_Clear();<br />        itoa (wynik, wys, 10);<br />        itoa (V, wysA, 10);<br /><br />               LCD_GoTo(0,0);<br />               LCD_WriteText(&quot;Napiecie:&quot;);<br />               LCD_GoTo(11,0);<br />               LCD_WriteText(accu1_vol.v1);<br />              // LCD_GoTo(12,0);<br />               LCD_WriteText(&quot;.&quot;);<br />               //LCD_GoTo(13,0);<br />               LCD_WriteText(accu1_vol.v2);<br />               LCD_GoTo(0,1);<br />               LCD_WriteText(&quot;Prad:&quot;);<br />               LCD_WriteText(wys);<br />               //LCD_GoTo(11,1);<br />               //LCD_WriteText(test);<br /><br /><br />PORTB ^= (1&lt;&lt;PB0);<br />_delay_ms( 1000 );<br />}<br /><br /><br /><br />}<br /><br /><br /><br />//Pomiar ADC<br /><br />uint16_t pomiar (uint8_t kanal){<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br />ADCSRA |= (1&lt;&lt;ADSC);//Start konwersji<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));<br />return ADCW;<br /><br />}<br /><br />// Funkcjia podaj napięcie, przelaiczanie<br />void get_vol (uint16_t adc, TVOL * voltage) {<br /><br />uint16_t wynik = (adc* (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa(divmod.quot, voltage-&gt;v1, 10);<br />itoa(divmod.rem, voltage-&gt;v2, 10);<br />if(divmod.rem &lt; 10 ){<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;='0';<br />voltage-&gt;v2&#91;2&#93;='0';<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19176">fenix2</a> — 25 mar 2018, o 17:41</p><hr />
]]></content>
</entry>
</feed>