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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-06T19:45:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10082&amp;mode</id>
<entry>
<author><name><![CDATA[yazpid]]></name></author>
<updated>2015-01-06T19:45:42+01:00</updated>
<published>2015-01-06T19:45:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112806#p112806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112806#p112806"/>
<title type="html"><![CDATA[Re: Line Follower pytanie o odczyt z ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112806#p112806"><![CDATA[
Oczywiście pomogło, dziękuje za pomoc, ponieważ praca ruszyła z miejsca  w końcu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6401">yazpid</a> — 6 sty 2015, o 19:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-01-06T19:21:09+01:00</updated>
<published>2015-01-06T19:21:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112799#p112799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112799#p112799"/>
<title type="html"><![CDATA[Re: Line Follower pytanie o odczyt z ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112799#p112799"><![CDATA[
<div class="quotetitle">yazpid napisał(a):</div><div class="quotecontent"><br />[syntax=c]ADMUX|=nr;[/syntax]<br /></div><br />Po odczytaniu kilku pierwszych kanałów będą same 1 na bitach wyboru kanału.<br />Coś takiego by się zdało:<br />[syntax=c]ADMUX &amp;= 0B11110000; //wyzerowanie<br />ADMUX |= nr; //ustawienie[/syntax]<br />Zajrzyj tutaj, bo kod bez kolorów jest słabo czytelny i edytuj post.<br /><a href="http://forum.atnel.pl/topic7402.html"  class="postlink">Wstawianie listingów programów w postach.</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 6 sty 2015, o 19:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[yazpid]]></name></author>
<updated>2015-01-06T19:44:47+01:00</updated>
<published>2015-01-06T19:06:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112795#p112795</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112795#p112795"/>
<title type="html"><![CDATA[Line Follower pytanie o odczyt z ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10082&amp;p=112795#p112795"><![CDATA[
Witam,<br /><br />Programuje LF-a (schemat w załączniku). Problem pojawił się przy zmianie szybkości obracania się kół,  dokładnie kiedy program się ustawi na jakimś czujniku już cały czas na nim jeździ nie zważając na no, czy nadal jest zakryty czy zakryty jest już inny.<br /><br />Wstawiłem też w pętli while na poczatku OCR1A i B = 0, żeby się resetowała wartość, ale to też nie zdawało egzaminu<br />Oto kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />uint16_t c0;<br />uint16_t c1;<br />uint16_t c2;<br />uint16_t c3;<br />uint8_t jeden= 4; //zew lewy<br />uint8_t dwa = 0; //we lewy<br />uint8_t trzy = 6; //wew prawy<br />uint8_t cztery = 5 ; // zew prawy<br /><br />uint16_t ADC_pomiar (uint8_t nr);<br /><br />int kierunek;<br />int main(void)<br />{<br />   <br />       //USTAWIENIE FAST PWM<br />       TCCR1A |=(1&lt;&lt;WGM10);<br />       TCCR1B |=(1&lt;&lt;WGM12);<br />       TCCR1A |= (1 &lt;&lt; COM1B1)|(1 &lt;&lt; COM1A1);<br />       TCCR1B |= (1 &lt;&lt; CS12);<br />          //porty sterujace mostkami<br />          DDRD |= (1&lt;&lt;PD4)|(1&lt;&lt;PD5)|(1&lt;&lt;PD6)|(1&lt;&lt;PD7);<br />          DDRB |= (1&lt;&lt;PB1)|(1&lt;&lt;PB2);<br />       <br />       //ODCZYT Z CZUJNIKA<br /><br />           ADCSRA |=(1&lt;&lt;ADEN); //wlaczenie przetwornika<br />           ADCSRA |=(1&lt;&lt;ADPS2); //preskaler 16<br />           ADMUX |=(1&lt;&lt;REFS1) | (1&lt;&lt;REFS0); //wewnetrzne zrodlo 2,56V<br />       <br />   while(1)<br />   {<br />       <br />   <br />  // skrecaj w prawo<br /> <br />if (kierunek ==1)<br />{<br />   PORTD |=(1&lt;&lt;PD4);<br />   PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />   OCR1B = 100;<br />   <br />       PORTD |=(1&lt;&lt;PD6);<br />       PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />       OCR1A = 20;    <br />}<br /><br />else if (kierunek == 2)<br /><br />  {<br />          PORTD |=(1&lt;&lt;PD4);<br />          PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />          OCR1B = 100;<br />         <br />          PORTD |=(1&lt;&lt;PD6);<br />          PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />          OCR1A = 40;<br />      }<br />     <br />else if (kierunek == 3)<br /><br /><br />{    PORTD |=(1&lt;&lt;PD4);<br />   PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />   OCR1B = 40;<br />   <br />   PORTD |=(1&lt;&lt;PD6);<br />   PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />   OCR1A = 100;<br />}<br />else if (kierunek == 4)<br /><br />{<br />       PORTD |=(1&lt;&lt;PD4);<br />       PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />       OCR1B = 20;<br />       <br />       PORTD |=(1&lt;&lt;PD6);<br />       PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />       OCR1A = 100;<br />}<br /><br />else if (kierunek == 5)<br />{<br />   PORTD |=(1&lt;&lt;PD4);<br />   PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />   OCR1B = 100;<br />   <br />   PORTD |=(1&lt;&lt;PD6);<br />   PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />   OCR1A = 100;    <br />}<br />}      <br />     <br />     <br />     <br />  }<br /> <br /><br /> <br /> <br /> <br /><br />     <br /> <br /> <br />       //TODO:: Please write your application code<br />   <br /><br /><br /><br /><br />uint16_t ADC_pomiar (uint8_t nr)<br />{<br />   ADMUX|=nr;<br />   ADCSRA |=(1&lt;&lt;ADSC);//start pomiar<br />   while(ADCSRA &amp; (1&lt;&lt;ADSC));<br />   return ADCW;<br />}<br /><br />void funkcja ()<br />{<br />       c0=ADC_pomiar(jeden); //zew lewy<br />       c1=ADC_pomiar(dwa); // wew lewy<br />       c2=ADC_pomiar(trzy); // wew prawy<br />       c3=ADC_pomiar(cztery); //zew prawy<br />       <br />       if (c0&lt;150)<br />       kierunek= 1;<br />       <br />       else if (c1&lt;150)<br />       kierunek= 2;<br />       <br />       else if (c2&lt;150)<br />       kierunek = 3;<br />       <br />       else if (c3&lt;150)<br />       kierunek = 4;<br />       <br />       else<br />       kierunek = 5;<br />}[/syntax]<br /><br /><br /><br />A oto kod kolegi który robi to ze mną, jednak błąd jest taki sam:<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#define prog 180<br />//Deklaracja zmiennych<br />uint16_t c0=0;<br />uint16_t c1=0;<br />uint16_t c2=0;<br />uint16_t c3=0;<br />uint16_t c4=0;<br />uint16_t c5=0;<br />uint16_t c6=0;<br />uint16_t c7=0;<br />//DEKLARACJA TIMERA 1 W TRYB PWM 8 bit<br />voidPWM(){<br />//USTAWIENIE FAST PWM<br />TCCR1A |=(1&lt;&lt;WGM10);<br />TCCR1B |=(1&lt;&lt;WGM12);<br />TCCR1A |= (1 &lt;&lt; COM1B1)|(1 &lt;&lt; COM1A1);<br />TCCR1B |= (1 &lt;&lt; CS12);<br />}<br />//DEKLARACJA ADC<br />voidADC_deklaracja(){<br />ADCSRA |=(1&lt;&lt;ADEN); //wlaczenie przetwornika<br />ADCSRA |=(1&lt;&lt;ADPS2); //preskaler 16<br />ADMUX |=(1&lt;&lt;REFS1) | (1&lt;&lt;REFS0); //wewnetrzne zrodlo 2,56V<br />}<br />//ODCZYT Z CZUJNIKA<br />uint16_tADC_pomiar (uint8_t nr){<br />ADMUX|=nr;<br />ADCSRA |=(1&lt;&lt;ADSC);//start pomiar<br />while(ADCSRA &amp; (1&lt;&lt;ADSC));<br />return ADCW;<br />}<br />//LEWY SILNIK<br />intlewy(int kierunek, int moc)<br />{<br />if (kierunek == 0)<br />{<br />PORTD |= (1&lt;&lt;PD4);<br />PORTD |= (1&lt;&lt;PD5); //zwarcie<br />OCR1B = moc;<br />}<br />if (kierunek == 1)<br />{<br />PORTD |=(1&lt;&lt;PD4);<br />PORTD &amp;=~(1&lt;&lt;PD5); //przód<br />OCR1B = moc;<br />}<br />if (kierunek == -1){<br />PORTD |=(1&lt;&lt;PD5);<br />PORTD &amp;=~(1&lt;&lt;PD4); //tył<br />OCR1B = moc;<br />}<br />return 0;<br />}<br />//PRAWY SILNIK<br />intprawy(int kierunek, int moc)<br />{<br />if (kierunek == 0)<br />{<br />PORTD |= (1&lt;&lt;PD6);<br />PORTD |= (1&lt;&lt;PD7); //zwarcie<br />OCR1A = moc;<br />}<br />if (kierunek == 1)<br />{<br />PORTD |=(1&lt;&lt;PD6);<br />PORTD &amp;=~(1&lt;&lt;PD7); //przód<br />OCR1A = moc;<br />}<br />if (kierunek == -1){<br />PORTD |=(1&lt;&lt;PD7);<br />PORTD &amp;=~(1&lt;&lt;PD6); //tył<br />OCR1A = moc;<br />}<br />return 0;<br />}<br />intmain(void){<br />//porty sterujace mostkami<br />DDRD |= (1&lt;&lt;PD4)|(1&lt;&lt;PD5)|(1&lt;&lt;PD6)|(1&lt;&lt;PD7);<br />DDRB |= (1&lt;&lt;PB1)|(1&lt;&lt;PB2);<br />PWM();<br />ADC_deklaracja();<br />while(1)<br />{<br />//ODCZYT WARTOSCI Z CZUJNIKOW<br />c0=ADC_pomiar(PC0);<br />c1=ADC_pomiar(PC1);<br />c2=ADC_pomiar(PC2);<br />c3=ADC_pomiar(PC3);<br />c4=ADC_pomiar(PC4);<br />c5=ADC_pomiar(PC5);<br />c6=ADC_pomiar(PC6);<br />c7=ADC_pomiar(7);<br />//C_C_C_C_C_C_C_C - do gory nogami<br />if(c0&gt;prog &amp;&amp; c1&gt;prog &amp;&amp; c2&gt;prog &amp;&amp; c3&gt;prog &amp;&amp; c4&gt;prog &amp;&amp; c5&gt;prog &amp;&amp; c6&gt;prog &amp;&amp; c7&gt;prog ){<br />lewy(0,10);<br />prawy(0,10);<br />}<br />//b_b_b_b_b_b_b_b - zgubil trase<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(0,10);<br />prawy(0,10);<br />}<br />//b_b_b_C_b_b_b_b - srodek lewy prosto<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&gt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(1,80);<br />prawy(1,80);<br />}<br />//b_b_b_b_C_b_b_b - srodek prawy prosto<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&gt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(1,80);<br />prawy(1,80);<br />}<br />//b_b_C_b_b_b_b_b - lewo<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&gt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(1,40);<br />prawy(1,80);<br />}<br />//b_b_b_b_b_C_b_b - prawo<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&gt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(1,80);<br />prawy(1,40);<br />}<br />//b_C_b_b_b_b_b_b - lewo 2 czujnik<br />if(c0&lt;prog &amp;&amp; c1&gt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(0,10);<br />prawy(1,40);<br />}<br />//b_b_b_b_b_b_C_b - prawo 2 czujnik<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&gt;prog &amp;&amp; c7&lt;prog ){<br />lewy(1,40);<br />prawy(0,10);<br />}<br />//C_b_b_b_b_b_b_b - lewo krancowy czujnik<br />if(c0&gt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&lt;prog ){<br />lewy(-1,40);<br />prawy(1,40);<br />}<br />//b_b_b_b_b_b_b_C - prawo krancowy czujnik<br />if(c0&lt;prog &amp;&amp; c1&lt;prog &amp;&amp; c2&lt;prog &amp;&amp; c3&lt;prog &amp;&amp; c4&lt;prog &amp;&amp; c5&lt;prog &amp;&amp; c6&lt;prog &amp;&amp; c7&gt;prog ){<br />lewy(1,40);<br />prawy(-1,40);<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6401">yazpid</a> — 6 sty 2015, o 19:06</p><hr />
]]></content>
</entry>
</feed>