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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-23T18:02:28+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=7542&amp;mode</id>
<entry>
<author><name><![CDATA[komar]]></name></author>
<updated>2014-06-23T18:02:28+01:00</updated>
<published>2014-06-23T18:02:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85507#p85507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85507#p85507"/>
<title type="html"><![CDATA[Re: odczyt adc i sterowanie silnikiem dc pomocy?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85507#p85507"><![CDATA[
zrobiłem tak<br />[syntax=c]if (klawisz_wcisniety()){<br />              DC_LEWO;<br /><br />              }<br />              else (silnik_stop());<br /><br /><br /><br /><br />              }<br />              if (klawisz2_wcisniety()){<br />              DC_PRAWO;<br />              }<br />              else silnik_stop2();<br /><br />                }   uint8_t silnik_stop(void)<br />   {<br />   if(wynika==650 || wynika&gt;660 )<br />   {<br />   DC_STOP;<br />   }<br />   return 1;<br />   }<br />   uint8_t silnik_stop2(void)<br />   {<br />   if(wynika==660 || wynika&lt;430 )<br />   {<br />   DC_STOP;<br />   }<br />   return 1;<br />   }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1950">komar</a> — 23 cze 2014, o 18:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-06-23T17:48:19+01:00</updated>
<published>2014-06-23T17:48:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85504#p85504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85504#p85504"/>
<title type="html"><![CDATA[Re: odczyt adc i sterowanie silnikiem dc pomocy?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85504#p85504"><![CDATA[
<div class="quotetitle">komar napisał(a):</div><div class="quotecontent"><br />w funkcji void zamiast wartość adc mogę wstawić srednia lub wynik?<br /></div><br />Właśnie na tym polega wywołanie tej funkcji <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> A wywołujesz ją w pętli głównej w ten sposób:<br /><br />[syntax=c]zatrzymaj_silnik(wynika);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 23 cze 2014, o 17:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komar]]></name></author>
<updated>2014-06-23T15:28:48+01:00</updated>
<published>2014-06-23T15:28:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85491#p85491</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85491#p85491"/>
<title type="html"><![CDATA[Re: odczyt adc i sterowanie silnikiem dc pomocy?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85491#p85491"><![CDATA[
a tak krok po kroku jeśli można.<br />w funkcji void zamiast wartość adc mogę wstawić srednia lub wynik?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1950">komar</a> — 23 cze 2014, o 15:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-06-23T13:34:52+01:00</updated>
<published>2014-06-23T13:34:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85468#p85468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85468#p85468"/>
<title type="html"><![CDATA[Re: odczyt adc i sterowanie silnikiem dc pomocy?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85468#p85468"><![CDATA[
Zrób sobie prostą funkcje.<br /><br />[syntax=c]void zatrzymaj_silnik(uint8_t wartosc_adc)<br />{<br />     if(wartosc_adc == 40 || wartosc_adc == 80)<br />          {<br />               DC_STOP;<br />          }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 23 cze 2014, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[komar]]></name></author>
<updated>2014-06-23T12:57:45+01:00</updated>
<published>2014-06-23T12:57:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85462#p85462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85462#p85462"/>
<title type="html"><![CDATA[odczyt adc i sterowanie silnikiem dc pomocy?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7542&amp;p=85462#p85462"><![CDATA[
Dzień dobry<br />na starcie  zanim zacznę zadawać pytanie/pytania to jestem początkujący mam obie książki pana Mirka i zestaw ATB rev 1.01 i nadszedł czas na naukę po 2 latach od zakupu zestawu.<br />Do rzeczy<br />mam silnik dc z przekładnią na której zamocowany jest potencjometr<br />usiłuje napisać kod który :<br />1). po naciśnięciu przycisku1  będzie obracał się silnik w lewo do momentu kiedy wartość adc osiągnie np;80 i po tej wartości  silnik ma się zatrzymać<br />2). po naciśnięciu drugiego przycisku silnik będzie obracał się w prawo aż  wartość adc osiągnie  wartość startową np.40 i znowu silnik stop<br /><br />odczyt adc mam na wyświetlaczu 4X 7 segment<br />sterowanie silnikami mam na 2 przyciskach<br />dzięki książce P Mirka.<br />teraz mam problem jak rozwiązać kod aby ten odczyt z adc wyłączał  silniki<br /> <br />proszę o wyrozumiałość  oto kod<br /><br />[syntax=c]#include  &lt;avr/io.h&gt;<br />#include  &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;d_led.h&quot;<br /><br />#define  KEY1 (1&lt;&lt;PB2)<br />#define  KEY_FULL !(PINB &amp; KEY1)<br />#define  KEY2 (1&lt;&lt;PB3)<br />#define  KEY_CUT !(PINB &amp; KEY2)<br /><br />#define  LED1_PIN (1&lt;&lt;PC4)<br />#define  LED1_ON  PORTC &amp;= LED1_PIN<br />#define  LED1_OFF PORTC |= LED1_PIN<br />#define  LED1_TOG PORTC ^= LED1_PIN<br /><br />#define  LED2_PIN (1&lt;&lt;PB4)<br />#define  LED2_ON  PORTB &amp;= LED2_PIN<br />#define  LED2_OFF PORTB |= LED2_PIN<br />#define  LED2_TOG PORTB ^= LED2_PIN<br /><br />#define  WE_A PB1<br />#define  WE_B PB0<br /><br />//POLECENIA STERUJACE<br />#define  DC_LEWO PORTB &amp;=~(1&lt;&lt;WE_A); PORTB |= (1&lt;&lt;WE_B)<br />#define  DC_PRAWO PORTB |= (1&lt;&lt;WE_A); PORTB &amp;=~ (1&lt;&lt;WE_B)<br />#define  DC_STOP PORTB &amp;=~(1&lt;&lt;WE_A); PORTB &amp;=~(1&lt;&lt;WE_B)<br /><br /><br /><br />uint16_t wynika;<br />uint16_t pom;<br />uint16_t cz_d, cz_u, cz_dd, cz_uu;<br /><br /><br /><br />uint16_t pomiar(uint8_t kanal);<br />uint32_t srednia=0;<br />uint8_t dt=6;<br /><br /><br />volatile uint8_t Timer1 , Timer2 ,Timer3;<br />uint8_t klawisz_wcisniety(void);<br />uint8_t klawisz2_wcisniety(void);<br /><br /><br /><br /><br />int main (void){<br />DDRC  |= LED1_PIN;<br />DDRB |= LED2_PIN;<br />PORTB |= LED2_PIN;<br />    DDRB |= (1&lt;&lt;WE_A)|(1&lt;&lt;WE_B);<br />PORTB |=KEY1;<br />    DDRB &amp;=~ KEY1;<br />    PORTB |=KEY2;<br />    DDRB &amp;=~ KEY2;<br /><br /><br /> //TIMER2  Atmega8<br />   TCCR2 |= (1 &lt;&lt; WGM21); //ustawienie timera w tryb CTC<br />   TCCR2 |= (1 &lt;&lt; CS20 )|(1&lt;&lt;CS21)|(1&lt;&lt;CS22); //ustawienie preskalera na 1024<br />   OCR2 = 108; //wypelnienie rejestru porównawczego<br />   TIMSK |= (1 &lt;&lt; OCIE2); //zezwolenie na przerwanie<br /><br />//INICJALIZADCJA ADC<br /> ADCSRA |= (1&lt;&lt;ADEN);//ADC ENABLE<br /> ADCSRA |= (1&lt;&lt;ADPS2);<br /> ADMUX |= (1&lt;&lt;REFS0)|(1&lt;&lt;REFS1);//INTERNAL VOLTAGE REFERENCE 2.56<br /><br /><br />    d_led_init();<br /><br /><br />    sei();<br /><br /><br /><br />while(1){<br /><br /><br /><br />if(!Timer1){<br />Timer1=2;<br />     pom = pomiar(PC5);<br /><br />   srednia=srednia * dt;<br />   srednia=srednia + pom * 2;<br />   srednia=srednia /(dt+1);<br />   wynika= srednia ;  //<br />   ////////////////////////////////////////<br />   //wyswietlanie wyniku adc<br />   cy1=(cz_d =(wynika))/10000 % 100;//<br />   cy2=(cz_dd =(wynika))/1000 % 10; //<br />   cy3=(cz_u = (wynika))/100 % 10;  //<br />   cy4=(cz_uu =(wynika))/10% 10;    //<br /><br />//////////////////////////////////////////////////////////<br />              if (!Timer2){<br />              Timer2=8;<br />              LED1_TOG;<br />              if (klawisz_wcisniety()){<br />              DC_LEWO;<br />              }<br />              if (klawisz2_wcisniety()){<br />              DC_PRAWO;<br />              }<br />///////////////////////////////////////////////////////<br />             <br />              }<br /><br />          }<br /><br />}<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 /><br />   ISR (TIMER2_COMP_vect){<br />       uint8_t t;<br />       t=Timer1;<br />       if (t)Timer1 = --t;<br />       t=Timer2;<br />       if (t) Timer2 = --t;<br />       t=Timer3;<br />       if (t)Timer3 = --t;<br />   }<br /><br /><br /><br />   // definicja funkcji<br />   uint8_t klawisz_wcisniety(void)<br />   {<br />   if( KEY_FULL )// klawisz wciśnięty ?<br />   {<br />   _delay_ms(100);// czas drgań styków<br />   if( KEY_FULL ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />   }<br /><br />   return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />   }<br />   // definicja funkcji<br />   uint8_t klawisz2_wcisniety(void)<br />   {<br />   if( KEY_CUT )// klawisz wciśnięty ?<br />   {<br />   _delay_ms(100);// czas drgań styków<br />   if( KEY_CUT ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />   }<br /><br />   return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />   }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1950">komar</a> — 23 cze 2014, o 12:57</p><hr />
]]></content>
</entry>
</feed>