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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12497&amp;mode</id>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2015-08-01T17:13:32+01:00</updated>
<published>2015-08-01T17:13:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136048#p136048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136048#p136048"/>
<title type="html"><![CDATA[Re: ADC zamienia porty miejscami?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136048#p136048"><![CDATA[
Nie no pochlastać sie można... dwa dni walczenia a tu głupi średnik.<br /><br />Dzięki wielkie wiszę koledze sporą flaszkę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 1 sie 2015, o 17:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-08-01T16:31:37+01:00</updated>
<published>2015-08-01T16:31:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136046#p136046</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136046#p136046"/>
<title type="html"><![CDATA[Re: ADC zamienia porty miejscami?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136046#p136046"><![CDATA[
[syntax=c]//oczekiwanie na koniec pomiaru dopuki bit ADSC = 1<br />        while( (ADCSRA &amp; (1&lt;&lt;ADSC)) )<br />        // gdy bit ADSC = 0 koniec czekania i zwrócenie wartosci rejestrów pomiarowych<br /> <br />        return ADCW;[/syntax]<br /><br /><br />za pętlą while nie masz średnika. Program wygląda tak:<br />[syntax=c]while( (ADCSRA &amp; (1&lt;&lt;ADSC)) ) return ADCW;[/syntax]<br /><br />dodaj średnik za pętlą while. W aktualnej formie jeśli ADSC jest ustawione na 1 czyli jeśli trwa pomiar to funkcja zwraca wartość ADC. Czyli pomiar nie jest tak na prawdę zakończony a funkcja zwraca poprzednią wartość;)<br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 1 sie 2015, o 16:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dexter]]></name></author>
<updated>2015-08-01T14:43:03+01:00</updated>
<published>2015-08-01T14:43:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136038#p136038</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136038#p136038"/>
<title type="html"><![CDATA[ADC zamienia porty miejscami?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12497&amp;p=136038#p136038"><![CDATA[
Witajcie, od paru dni walczę z banalnie prostym kodem i nie mogę dojść do ładu... Chcę zrobić pomiar z dwóch różnych kanałów ADC i wyświetlić je bezpośrednio na LCD OLED. <br />Do obsługi lcd mam bibliotekę u8glib i to chyba działa poprawnie.<br />Natomiast do ADC korzystam z książki niebieskiej i poradników. <br /><br />Problem polega na tym że jak w funkcji main mierzę z jednego kanału to pokazuje poprawnie ale jak dodam drugi kanał to pomiary zamieniane są miejscami.<br /><br />Wartość X = ADC 3 dla pojedynczego pomiaru<br />Wartość Y = ADC 6 dla pojedynczego pomiaru<br /><br />ale jak uruchomię oba to dzieje się coś takiego<br />Wartość X = ADC 6<br />Wartość Y = ADC 3<br />Dziwne to bo w kodzie kanałów nie zamieniałem.<br /><br />[syntax=c]#include &quot;u8g.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />void system_init(void);<br />uint16_t pomiar(uint8_t kanal);<br /><br />u8g_t u8g;<br />float temperatura_obiekt;<br />float temperatura_peltier;<br />char temp1&#91;10&#93;;<br />char temp2&#91;10&#93;;<br /><br /><br /><br />int main(void){<br /><br />system_init();<br /><br />  while(1){<br /><br />  u8g_FirstPage(&amp;u8g);<br />      do{temperatura_obiekt = pomiar(3);<br />      u8g_SetFont(&amp;u8g, u8g_font_osr21);<br />      dtostrf(temperatura_obiekt, 3, 1, temp1);<br />      u8g_DrawStr(&amp;u8g, 10, 50, temp1);<br /><br />      temperatura_peltier = pomiar(6);<br />      u8g_SetFont(&amp;u8g, u8g_font_ncenB10);<br />      dtostrf(temperatura_peltier, 3, 1, temp2);<br />      u8g_DrawStr(&amp;u8g, 0, 13, temp2);<br /><br />      } while ( u8g_NextPage(&amp;u8g) );<br /><br /><br /><br />      u8g_Delay(200);<br /><br />  }<br />}<br /><br />void system_init(void){<br />//*********** ADC *****************************************<br /><br />//włączenie ADC oraz prescaler<br />ADCSRA |= (1&lt;&lt;ADEN) | (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1) | (1&lt;&lt;ADPS0);<br />//napięcie odniesienia na vcc<br />ADMUX = 0;<br />ADMUX |= (1&lt;&lt;REFS0);<br />//*********** SPI *****************************************<br />  /*<br />    D0=SCK: PORTB, Bit 0 --&gt; PN(1,2)<br />    D1=MOSI: PORTB, Bit 1 --&gt; PN(1,1)<br />    RST: PORTB, Bit 2 --&gt; PN(1,5)<br />    DC=A0: PORTB, Bit 3 --&gt; PN(1,3)<br />  */<br />  u8g_InitSPI(&amp;u8g, &amp;u8g_dev_ssd1306_128x64_sw_spi, PN(1, 0), PN(1, 1), U8G_PIN_NONE, PN(1, 3),  PN(1, 2) );<br /><br />}<br />uint16_t pomiar(uint8_t kanal)<br />{<br />//ustawienie kanału<br />ADMUX = (ADMUX &amp; 0xF8) | kanal;<br /><br />//start pomiaru<br />ADCSRA |= (1&lt;&lt;ADSC);<br /><br /><br />//oczekiwanie na koniec pomiaru dopuki bit ADSC = 1<br />while( (ADCSRA &amp; (1&lt;&lt;ADSC)) )<br />// gdy bit ADSC = 0 koniec czekania i zwrócenie wartosci rejestrów pomiarowych<br /><br />return ADCW;<br /><br />}[/syntax]<br /><br />Uruchamiam to na Atmedze32 w zestawie ATB 1.04, kwarc 8MHz.<br /><br />Kod prosty jak konstrukcja cepa a tak mnie zatrzymał...<br />Może ktoś wynajdzie błąd bo ja już kompletnie nie mam pomysłów. Pozdrawiam Tomek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=907">dexter</a> — 1 sie 2015, o 14:43</p><hr />
]]></content>
</entry>
</feed>