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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-07-25T14:30:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=972&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-25T14:30:44+01:00</updated>
<published>2012-07-25T14:30:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10815#p10815</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10815#p10815"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10815#p10815"><![CDATA[
Problemem tego gubienia impulsów jest częstotliwość impulsów na twoim impulsatorze <br />przesunięcie musisz wygenerować na fazie B przez dodanie do stanu 1/4 impulsów na obrót<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 25 lip 2012, o 14:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-25T11:04:25+01:00</updated>
<published>2012-07-25T11:04:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10812#p10812</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10812#p10812"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10812#p10812"><![CDATA[
SunRiver możesz mi dokładniej podpowiedzieć jak tymi fazami manipulować? Jak to dokładnie przesunąć?<br /><br />Aha i nie mogę pojąć jak to jest że na 100% PWM zlicza normalnie a na mniejszym np: 20% gubi kroki ( myli się co do kierunku zliczania)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 25 lip 2012, o 11:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T11:54:45+01:00</updated>
<published>2012-07-24T11:54:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10757#p10757</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10757#p10757"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10757#p10757"><![CDATA[
Skończyły mi się pomysły i nie wiem jak jak już do tego podejść. Na 100% PWM liczy dobrze a jak zjadę na 25% to głupoty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 11:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T09:45:42+01:00</updated>
<published>2012-07-24T09:45:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10743#p10743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10743#p10743"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10743#p10743"><![CDATA[
no właśnie ... <br />tu musisz pokombinować ... tak by dopasować się do swojego impulsatora niestety nie mam dostępu do tego typu , a te niby podobne a jednak <br />mają za niskie obroty i z nimi działa...<br /><br /><br />Pokombinuj z diff w konkretnych krokach  .... powinno załatwić sprawę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 09:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T09:32:31+01:00</updated>
<published>2012-07-24T09:32:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10742#p10742</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10742#p10742"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10742#p10742"><![CDATA[
Działa.<br />[syntax=c] diff = new - last;[/syntax]<br /><br />Przy obliczaniu pozycji zamieniłem żeby od nowej odejmowało poprzednią.<br /><br />Moja euforia nie trwała zbyt długo. Przy małym wypełnieniu 20% dalej świruje.:/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 09:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T08:27:41+01:00</updated>
<published>2012-07-24T08:27:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10738#p10738</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10738#p10738"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10738#p10738"><![CDATA[
nie ... tu jest ok <br />tylko nie ta faza po prostu , widzisz trzeba kanał B przesunąć względem A o 45st <br />potem będzie można kombinować z OCR2 żeby przy wysokich obrotach nie gubił impulsów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 08:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T08:21:10+01:00</updated>
<published>2012-07-24T08:21:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10737#p10737</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10737#p10737"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10737#p10737"><![CDATA[
Silnik dali mi maxon motor 435394  jeden prawie tys. zł i takie cuś wyszło:)<br />Ja to steruje z drivera L293DNE jaki jest na płytce Mirka (oczywiście PWM jest na dwa kanały od razu puszczony).<br />Zliczanie w górę jeszcze jeszcze ale w dół jak by gubił kroki i chciał w przeciwną stronę liczyć. Może nie ta częstotliwość próbkowania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 08:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T08:16:28+01:00</updated>
<published>2012-07-24T08:16:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10736#p10736</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10736#p10736"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10736#p10736"><![CDATA[
no to teraz trzeba dopasować ...  przesunięcie i tu mały kłopot będzie<br />bo chyba jeden pwm nie podoła  temu zadaniu<br />paskudny masz ten encoder<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 08:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T08:12:11+01:00</updated>
<published>2012-07-24T08:12:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10734#p10734</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10734#p10734"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10734#p10734"><![CDATA[
Jest zgadza się:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 08:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T08:09:34+01:00</updated>
<published>2012-07-24T08:09:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10733#p10733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10733#p10733"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10733#p10733"><![CDATA[
dobra ... teraz zajmiemy się fazami <br /><br />masz przesunięcie czyli fazaA  = 90st , a B 45st <br />czyli połowa A  --- widzisz to w nocie ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 08:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T08:03:43+01:00</updated>
<published>2012-07-24T08:03:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10732#p10732</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10732#p10732"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10732#p10732"><![CDATA[
:/ Dalej głupieje - nie bardzo liczy. Może coś z przerwaniami nie teges?<br />[syntax=c]void encode_init( void )<br />{<br />  int8_t new;<br /><br />  new = 0;<br />  if( PHASE_A )<br />    new = 3;<br />  if( PHASE_B )<br />    new ^= 1;<br />  last = new;<br />  enc_delta = 0;<br />  TCCR2 |= (1&lt;&lt;WGM21);             // CTC<br />  TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);    //32<br />  OCR2 = 108;       <br />  TIMSK |= (1&lt;&lt;OCIE2);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 08:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T07:42:31+01:00</updated>
<published>2012-07-24T07:42:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10731#p10731</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10731#p10731"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10731#p10731"><![CDATA[
no to dodaj na kanały pullupy 10K do 5V i sprawdź<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 07:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T07:41:38+01:00</updated>
<published>2012-07-24T07:41:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10730#p10730</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10730#p10730"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10730#p10730"><![CDATA[
Podłączyłem oczywiście bezpośrednio kanały A i B pod PA1 i PA2:/ Zasilanie enkodera oczywiście 5V i zasilanie silnika max24V.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/390_6d89b266720e8680bea20e051f44d7e5.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/390_6d89b266720e8680bea20e051f44d7e5.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 07:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-24T07:33:03+01:00</updated>
<published>2012-07-24T07:33:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10729#p10729</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10729#p10729"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10729#p10729"><![CDATA[
No dobra arko pokaż jak podłączyłeś encoder na schemacie, bo mój kod działa poprawnie sprawdziłem na 2ch silnikach  z encoderami f-my Pololu <br />1 mechaniczny i 2 optyczny , ten optyczny ma podobną charakterystykę do twojego i tu taka kwestia ... <br /><br />Twój encoder jest typu OC (open Colector) czyli musisz przez 10K podciągnąć do VCC wyjścia i dopiero je skanować <br />na teście kod bez poprawek wydalał na silniku Pololu po podciągnięciu , wcześniej zachowywał się dosyć dziwnie.<br />Noty też wynika że masz encoder magnetyczny stąd właśnie to niestabilne zliczanie bez PUL-uP<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />z tym testowałem teraz <br /><!-- m --><a class="postlink" href="http://www.skpang.co.uk/catalog/501-metal-gearmotor-37dx52l-mm-with-64-cpr-encoder-p-972.html" >http://www.skpang.co.uk/catalog/501-met ... p-972.html</a><!-- m --> <br /> też na magnetyku i jest OK po dodaniu PullUp -a<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lip 2012, o 07:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-24T06:34:05+01:00</updated>
<published>2012-07-24T06:34:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10725#p10725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10725#p10725"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10725#p10725"><![CDATA[
Potrzebuje SunRiver jednak pomocy z tym enkoderem i troszkę objaśnienia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 24 lip 2012, o 06:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-23T11:38:22+01:00</updated>
<published>2012-07-23T11:38:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10616#p10616</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10616#p10616"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10616#p10616"><![CDATA[
niema sprawy tylko mi dostarczą łotry podobny encoder <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />tak w tej chwili mogę ci powiedzieć że trzeba się pobawić przerwaniem od timera bo 1Khz w przypadku twojego encodera będzie powodował <br />takie właśnie zachowanie , jak zerkniesz do rozpiski kolegi sirk to zobaczysz o co chodzi ,  trzeba przesunąć fazy i dostosować <br />częstotliwość skanowania bo tu właśnie jest zależność<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 lip 2012, o 11:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-23T11:34:35+01:00</updated>
<published>2012-07-23T11:34:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10614#p10614</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10614#p10614"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10614#p10614"><![CDATA[
Super:)<br />Dzięki wielkie:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 23 lip 2012, o 11:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-23T11:29:46+01:00</updated>
<published>2012-07-23T11:29:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10608#p10608</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10608#p10608"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10608#p10608"><![CDATA[
no dobra widzę trzeba będzie zmienić w 2 ch linijkach kawałek kodu , bo troszkę z tym impulsatorem sie będzie kaszanić <br />wieczorkiem zapodam ci poprawkę , i sprawdzisz ok ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 lip 2012, o 11:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-23T11:22:31+01:00</updated>
<published>2012-07-23T11:22:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10601#p10601</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10601#p10601"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10601#p10601"><![CDATA[
Może teraz będzie lepiej.<br /><a href="http://forum.atnel.pl/_obrazki/o/390_e05400f81f80840ce151af62a13a3ea4.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/390_e05400f81f80840ce151af62a13a3ea4.jpg" alt="Obrazek" /></a><br /><a href="http://forum.atnel.pl/_obrazki/o/390_d5071b3769ec17c1fd6ef68b32422828.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/390_d5071b3769ec17c1fd6ef68b32422828.jpg" alt="Obrazek" /></a><br /><a href="http://forum.atnel.pl/_obrazki/o/390_813864d8244f72dfa9b3901a13179a81.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/390_813864d8244f72dfa9b3901a13179a81.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 23 lip 2012, o 11:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-23T11:13:27+01:00</updated>
<published>2012-07-23T11:13:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10592#p10592</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10592#p10592"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10592#p10592"><![CDATA[
za wiele to nie widać <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=58">SunRiver</a> — 23 lip 2012, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-23T11:11:58+01:00</updated>
<published>2012-07-23T11:11:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10590#p10590</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10590#p10590"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10590#p10590"><![CDATA[
Mam tylko taką notke katalogową do niego nic więcej.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/390_1b657c0ea1664ed943969454f276dd26.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/390_1b657c0ea1664ed943969454f276dd26.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 23 lip 2012, o 11:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-07-23T10:53:23+01:00</updated>
<published>2012-07-23T10:53:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10580#p10580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10580#p10580"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10580#p10580"><![CDATA[
problem dotyczy pewnie twojego enkodera , soft był dostosowałem do impulsatorwów/enkoderów <br />trzeba zmodyfikować obsługę dopasowując do twojego encodera , który notabene jest zapewne optyczny oparty<br />o transoptor szczelinowy ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 lip 2012, o 10:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[developer85]]></name></author>
<updated>2012-07-23T10:46:45+01:00</updated>
<published>2012-07-23T10:46:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10578#p10578</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10578#p10578"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=10578#p10578"><![CDATA[
Witam.<br />Nie chce zakładać nowego wątku o enkoderach więc napiszę tutaj.<br />Korzystając z kodu zamieszczonego na forum przez szanownego kolegę SunRivera chciałbym zliczać impulsy z enkodera.<br />Jest mi to potrzebne do późniejszego przeliczania na metry oraz kierunku obrotów silnika.<br />Enkoder w silniku to enkoder MEnc 13, 16 Counts per turn, 2 Channels.<br />Po resecie procka licznik zlicza sam:/ (silnik w pozycji stop)  w górę i tutaj mam problem bo nie wiem dlaczego.<br />Także nie zlicza to całkiem płynnie są przeskoki a w tył to czasem w ogóle nie liczy. <br />Calutki kod programu:)<br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br /><br />/* przydatne definicje pinów sterujących */<br />#define WE_A PD1 // piny sterujące L293DNE<br />#define WE_B PD0<br />#define KEY1 (1&lt;&lt;PB0) //def klawisz 1<br />#define KEY2 (1&lt;&lt;PB1) //def klawisza 2<br />#define KEY_DOWN1 !(PINB &amp; KEY1) //sprawdzanie stanu niskiego na KEY1<br />#define KEY_DOWN2 !(PINB &amp; KEY2) //sprawdzanie stanu niskiego na KEY2<br />/* definicje poleceń sterujących pracą silnika */<br />#define DC_LEWO PORTD &amp;= ~(1&lt;&lt;WE_A); PORTD |= (1&lt;&lt;WE_B) // obrót prawo<br />#define DC_PRAWO PORTD |= (1&lt;&lt;WE_A); PORTD &amp;= ~(1&lt;&lt;WE_B)// obrót lewo<br />#define DC_STOP PORTD &amp;= ~(1&lt;&lt;WE_A); PORTD &amp;= ~(1&lt;&lt;WE_B)//stop<br /><br />// definicja pinów enkodera<br />#define PHASE_A         (PINA &amp; 1&lt;&lt;PA1) // piny enkodera Channel A<br />#define PHASE_B         (PINA &amp; 1&lt;&lt;PA2)//piny enkodera Channel B<br />#define LED_PIN  (1&lt;&lt;PD7) //diodka<br />#define LED_ON PORTD |= LED_PIN;<br /><br />volatile int8_t enc_delta;                      // -128 ... 127<br />static int8_t last;<br /><br />//PWM<br />volatile uint8_t pwm1;<br /><br />uint16_t pomiar(uint8_t kanal);<br /><br />void encode_init( void )<br />{<br />  int8_t new;<br /><br />  new = 0;<br />  if( PHASE_A )<br />    new = 3;<br />  if( PHASE_B )<br />    new ^= 1;<br />  last = new;<br />  enc_delta = 0;<br />  TCCR2 |= (1&lt;&lt;WGM21);             // CTC<br />  TCCR2 |= (1&lt;&lt;CS22);    //64<br />  OCR2 = 173;//43;        // 1ms<br />  TIMSK |= (1&lt;&lt;OCIE2);<br />}<br /><br />// Przerwanie timera co 1s (1kHz)<br />ISR( TIMER2_COMP_vect)<br />{<br />  int8_t new, diff;<br /><br />  new = 0;<br />  if( PHASE_A )<br />    new = 3;<br />  if( PHASE_B )<br />    new ^= 1;                                   // konwersja do binarki<br />  diff = last - new;<br />  if( diff &amp; 1 ){                                       // bit 0 = value (1)<br />    last = new;                                 // zapamiętanie nowej wartości w  next last<br />    enc_delta += (diff &amp; 2) - 1;                // bit 1 = direction (+/-)<br />  }<br />}<br /><br />int8_t encode_read1( void )                     // odczyt co krok<br />{<br />  int8_t val;<br /><br />  cli();<br />  val = enc_delta;<br />  enc_delta = 0;<br />  sei();<br />  return val;<br />}<br /><br /><br />int8_t encode_read2( void )                     // odczyt co 2 kroki<br />{<br />  int8_t val;<br /><br />  cli();<br />  val = enc_delta;<br />  enc_delta = val &amp; 1;<br />  sei();<br />  return val &gt;&gt; 1;<br />}<br /><br /><br />int8_t encode_read4( void )                     // odczyt co 4 kroki<br />{<br />  int8_t val;<br /><br />  cli();<br />  val = enc_delta;<br />  enc_delta = val &amp; 3;<br />  sei();<br />  return val &gt;&gt; 2;<br />}<br /><br />int main(void) {<br /><br />DDRA |=(1&lt;&lt;PA7);<br />PORTA |= (1&lt;&lt;PA7);<br />lcd_init();<br /><br />int32_t val = 0;<br />DDRD |= LED_PIN;<br /><br />encode_init();<br />sei();<br /><br />/* ustawiamy piny sterujące L293D jako wyjścia */<br />DDRD |= (1&lt;&lt;WE_A)|(1&lt;&lt;WE_B); // ustawienie pinów sterujących L293DNE jako wyjścia<br />DDRB &amp;=~  (KEY1| KEY2);      // wejście KEY1 KEY2<br />PORTB |=( KEY1 | KEY2);// podciągnięcie KEY1 KEY2 do VCC<br /><br />//PWM<br />//***** SPRZĘTOWY PWM - 1 KANAŁ OC0 (PB3) *******<br />// ustawienie końcówki OC0 (PB3) sprzętowy PWM jako WYJŚCIE<br />DDRB |= (1&lt;&lt;PB3);<br />// ustawienia TIMER2 w Fast PWM<br />TCCR0 |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// tryb Fast PWM<br />TCCR0 |= (1&lt;&lt;COM01)|(1&lt;&lt;COM00);// clear at TOP<br />TCCR0 |= (1&lt;&lt;CS00);// preskaler = 1<br />OCR0=pomiar(5);//PWM<br /><br /><br /><br />ADMUX |= (1&lt;&lt;REFS0)|(1&lt;&lt;ADLAR);// wybór napięcia odniesienia w postaci VCC<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0); // włączenie modułu ADC oraz ustawienie preskalera 64<br /><br /><br /><br />while(1)<br />{<br />lcd_cls();<br /><br />lcd_int(pomiar (5));<br />lcd_locate(1,5);<br />lcd_int(val);<br />_delay_ms(100);<br /><br />val += encode_read4();                      // odczyt jednego kroku<br />    //LED_ON = val;<br /><br /><br /><br />if( KEY_DOWN1 ) {<br />_delay_ms(80); //czas drgania styków<br /><br />OCR0=pomiar(5);<br />_delay_ms(1);<br /><br />DC_PRAWO;<br />} else if ( KEY_DOWN2 ) {<br />_delay_ms(80);<br /><br />OCR0=pomiar(5);<br />_delay_ms(1);<br /><br />   DC_LEWO;<br />} else {<br />DC_STOP;<br />}<br /><br /><br />}<br /><br /><br />}<br /><br /><br /><br />uint16_t pomiar (uint8_t kanal)<br />{<br />ADMUX = (ADMUX &amp; 0xF8)| kanal; //       PA5   //ustawienie wybranego kanalu w rejestrze ADMUX<br />ADCSRA |= (1&lt;&lt;ADSC);  //start pomiaru przez ustawienie bitu ADSC w rejestrze ADCSRA<br />while (ADCSRA &amp; (1&lt;&lt;ADSC)); //oczekiwanie na koniec pomiaru (dopóki bit ADSC =1)<br />// po zakończeniu pomiaru, gdy bit ADSC=0, zwrócenie wyniku w postaci<br />// 16-to bitowej wartości z rejestrów ADCH i ADCL<br />return (ADCW&gt;&gt;8);<br />}<br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=390">developer85</a> — 23 lip 2012, o 10:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KoreX]]></name></author>
<updated>2012-04-06T12:16:50+01:00</updated>
<published>2012-04-06T12:16:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4977#p4977</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4977#p4977"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4977#p4977"><![CDATA[
Znalazłem w internecie obsługę enkodera pod m32 i przerobiłem na LCD 2x16 oraz ATmega162.<br />Jeśli ktoś mógłby zerknąć i podpowiedzieć jakieś ulepszenia/optymalizacje to chętnie poczytam.<br /><br />main.c<br />[syntax=c]//*****************************************************************************<br />//<br />//Program testowy obsługi enkodera Atmega162 (8MHz)<br />//<br />//Enkoder A -PC5 B -PC4 PRZYCISK -PC6<br />//<br />//*****************************************************************************<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/delay.h&gt;<br /><br /><br />#include &quot;ENKODER/encoder.h&quot; //Obsługa enkodera<br />#include &quot;LCD/lcd44780.h&quot; // Obsługa wyświetlacza by Mirekk36<br /><br /><br /><br /><br />//Funkcja startujaca Timer2<br />void Timer2_Start(void)<br />{<br />TCCR2|=(1&lt;&lt;CS22)|(1&lt;&lt;CS21); //prescaller 256 ~122 przerwań/s (Przerwanie co 0,008192s)<br />TIMSK|=(1&lt;&lt;TOIE2);//??Przerwania od przepełnienia timera0??<br />}<br />//Przerwanie sprawdzające status enkodera<br />ISR(TIMER2_OVF_vect)<br />{<br />RotaryCheckStatus(); //sprawdzenie statusu przycisku/enkodera<br />}<br />void MainInit(void)<br />{<br /><br />DDRD |= (1&lt;&lt;PD5);<br />PORTD &amp;= ~(1&lt;&lt;PD5); /* podświetlenie wyświetlacza LCD */<br />lcd_init();<br />lcd_cls();<br />lcd_str(&quot;Program testowy:&quot;);<br />//Inicjacja enkodera<br />RotaryInit();;<br />//Start timera2<br />Timer2_Start();<br />//zezwolenie na przerwania<br />sei();<br />}<br />void MainScreenUpdate(void)<br />{<br />//Aktualizacja statusu enkodera na LCD<br />if (RotaryGetStatus() ==3)<br />{<br />lcd_cls();<br />lcd_str(&quot;Enkoder:&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;Butt(&quot;);<br />lcd_locate(1,12);<br />lcd_int(RotaryGetPoz());<br />lcd_locate(1,5);<br />lcd_int(RotaryGetStatus());<br />lcd_str(&quot;)&quot;);<br />RotaryResetStatus();<br />}<br />if (RotaryGetStatus() == 1)<br />{<br />lcd_cls();<br />lcd_str(&quot;Enkoder:&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;Lewo(&quot;);<br />lcd_locate(1,12);<br />lcd_int(RotaryGetPoz());<br />lcd_locate(1,5);<br />lcd_int(RotaryGetStatus());<br />lcd_str(&quot;)&quot;);<br />RotaryResetStatus();<br /><br />}<br />if (RotaryGetStatus() == 2)<br />{<br />lcd_cls();<br />lcd_str(&quot;Enkoder:&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;Prawo(&quot;);<br />lcd_locate(1,12);<br />lcd_int(RotaryGetPoz());<br />lcd_locate(1,6);<br />lcd_int(RotaryGetStatus());<br />lcd_str(&quot;)&quot;);<br />RotaryResetStatus();<br />}<br />}<br />int main(void) {<br /><br />MainInit();<br /><br />while(1)<br />{<br />//Zmiany statusu na lcd<br />MainScreenUpdate();<br />}<br /><br />}<br /><br />[/syntax]<br />encoder.h<br />[syntax=c]//*****************************************************************************<br />//<br />// File Name: 'encoder.h'<br />// Title: Reading rotarry encoder functions<br />// Author: Scienceprog.com - Copyright (C) 2011<br />// Created: 2011-08-01<br />// Revised: 2011-08-04<br />// Version: 1.0<br />// Target MCU: Atmel AVR series (Atmega32)<br />//<br />// This code is distributed under the GNU Public License<br />//which can be found at <!-- m --><a class="postlink" href="http://www.gnu.org/licenses/gpl.txt">http://www.gnu.org/licenses/gpl.txt</a><!-- m --><br />//<br />//*****************************************************************************<br /><br />#ifndef ROTARY_H<br />#define ROTARY_H<br />#include &lt;avr/io.h&gt;<br />//define port where encoder is connected<br />#define ROTPORT PORTC<br />#define ROTDDR DDRC<br />#define ROTPIN PINC<br />//define rotary encoder pins<br />#define ROTPA PC5<br />#define ROTPB PC4<br />#define ROTPBUTTONPC6<br />//define macros to check status<br />#define ROTA !((1&lt;&lt;ROTPA)&amp;ROTPIN)<br />#define ROTB !((1&lt;&lt;ROTPB)&amp;ROTPIN)<br />#define ROTCLICK !((1&lt;&lt;ROTPBUTTON)&amp;ROTPIN)<br />//prototypes<br />void RotaryInit(void);<br />void RotaryCheckStatus(void);<br />uint8_t RotaryGetStatus(void);<br />int8_t RotaryGetPoz(void);<br />void RotaryResetStatus(void);<br />#endif<br />[/syntax]<br /><br />encoder.c<br />[syntax=c]<br />//*****************************************************************************<br />//<br />// File Name: 'encoder.c'<br />// Title: Reading rotarry encoder functions<br />// Author: Scienceprog.com - Copyright (C) 2011<br />// Created: 2011-08-01<br />// Revised: 2011-10-13<br />// Version: 1.1<br />// Target MCU: Atmel AVR series (Atmega32)<br />//<br />// This code is distributed under the GNU Public License<br />//which can be found at <!-- m --><a class="postlink" href="http://www.gnu.org/licenses/gpl.txt">http://www.gnu.org/licenses/gpl.txt</a><!-- m --><br />//<br />//2011.10.13 - rewrite of RotaryCheckStatus function<br />//*****************************************************************************<br />#include &quot;encoder.h&quot;<br /><br />static uint8_t rotarystatus=0;<br />static int8_t poz=0;<br />static uint8_t wait=0;<br /><br />void RotaryInit(void)<br />{<br />//set pins as input<br />ROTDDR &amp;= ~((1&lt;&lt;ROTPA)|(1&lt;&lt;ROTPB)|(1&lt;&lt;ROTPBUTTON));<br />//enable interrnal pullups;<br />ROTPORT |= (1&lt;&lt;ROTPA)|(1&lt;&lt;ROTPB)|(1&lt;&lt;ROTPBUTTON);<br />}<br />void RotaryCheckStatus(void)<br />{<br />//reading rotary and button<br />//check if rotation is left<br /> if(ROTA &amp; (!wait))<br />wait=1;<br />if (ROTB &amp; ROTA &amp; (wait))<br />{<br />rotarystatus=2;<br />wait=2;<br />poz++;<br />}<br />else if(ROTA &amp; (!ROTB) &amp; wait)<br />{<br />rotarystatus=1;<br />wait=2;<br />poz--;<br />}<br />if ((!ROTA)&amp;!(ROTB)&amp;(wait==2))<br />wait=0;<br /><br />//check button status<br />if (ROTCLICK)<br />{<br />for(volatile uint16_t x=0;x&lt;0x0FFF;x++);<br />if (ROTCLICK)<br />rotarystatus=3; poz=0;<br /><br />}<br />}<br /><br />//return button status<br />uint8_t RotaryGetStatus(void)<br />{<br />return rotarystatus;<br />}<br />int8_t RotaryGetPoz(void)<br />{<br />return poz;<br />}<br />//reset status<br />void RotaryResetStatus(void)<br />{<br />rotarystatus=0;<br />}<br /><br />[/syntax]<br /><br />Obsługa enkodera działa rewelacyjnie, jedyne co to nie do końca rozumiem obsługę przerwań/timerow w załączonym kodzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=229">KoreX</a> — 6 kwi 2012, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-04-05T12:49:58+01:00</updated>
<published>2012-04-05T12:49:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4952#p4952</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4952#p4952"/>
<title type="html"><![CDATA[Re: Enkoder (impulsator)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=972&amp;p=4952#p4952"><![CDATA[
nie zauważyłem problemów w moim kodzie został zoptymalizowany i skrócony na maxa  wystarczy sam enkoder bez niczego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  i działa dobrze<br /><br />dla innych szukających link do tematu z kodem:  <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic817.html">topic817.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 kwi 2012, o 12:49</p><hr />
]]></content>
</entry>
</feed>