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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=817&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-02-07T14:05:25+01:00</updated>
<published>2012-02-07T14:05:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2462#p2462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2462#p2462"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2462#p2462"><![CDATA[
Lubuje się w powoływaniu do życia dziwnych zmiennych i omijania typowych rozwiązań<br /><br />a jak to działa , wyjaśnia to tablica prawdy dla encodera <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />szacunek dla ciebie ze ci się chciało to rozpisywać na tabelkę , przecież zależności widać gołym okiem <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=58">SunRiver</a> — 7 lut 2012, o 14:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirk77]]></name></author>
<updated>2012-02-07T13:56:41+01:00</updated>
<published>2012-02-07T13:56:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2461#p2461</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2461#p2461"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2461#p2461"><![CDATA[
SunRiver nie lubię stosować czegoś czego nie rozumiem stąd działanie przerwania od TIMER0(skanującego piny enkodera) rozpisałem w poniższej tabelce:<br /><br /><img src="http://www.nawco.strefa.pl/inne/enkoder1.jpg" alt="Obrazek" /><br /><br />wszystko działa w praktyce i w teorii tylko jak  doszedłeś do takiego rozwiązania bo kod zasługuje na szacunek !!!<br /><br />[syntax=c]// Przerwanie timera co 1s (1kHz)<br />ISR( TIMER0_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 />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=187">sirk77</a> — 7 lut 2012, o 13:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-02-05T15:40:55+01:00</updated>
<published>2012-02-05T15:40:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2336#p2336</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2336#p2336"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2336#p2336"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />To są plotki i pomówienia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zapomniałeś tylko Mirku napisać że wyjątkowo zemnie wredne [...cenzura!...], które skutecznie i z uporem maniaka sieje zamęt i zamieszanie w kodach <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />eeee tam, siejesz Pan defetyzm <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> żadne plotki i pomówienia. Ja tam jeszcze nie używałem enkodera - ale jak poczytałem już choćby o zaletach twojego sposobu - to w ciemno zamiast od nowa wymyślać koło, na pewno wziąłbym sobie na tapetę twoje rozwiązanie. I o to chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czy wszystko musi być podane jak na super talerzu ? - najważniejsza jest dobra inspiracja i skuteczne działanie .... a tu proszę jeszcze potwierdzone przez pytającego autora wątku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 lut 2012, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-02-05T15:37:34+01:00</updated>
<published>2012-02-05T15:37:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2335#p2335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2335#p2335"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2335#p2335"><![CDATA[
To są plotki i pomówienia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zapomniałeś tylko Mirku napisać że wyjątkowo zemnie wredne bydle, które skutecznie i z uporem maniaka sieje zamęt i zamieszanie w kodach <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=58">SunRiver</a> — 5 lut 2012, o 15:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-02-05T15:30:06+01:00</updated>
<published>2012-02-05T15:30:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2333#p2333</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2333#p2333"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2333#p2333"><![CDATA[
<div class="quotetitle">sirk77 napisał(a):</div><div class="quotecontent"><br />widzę, że jeszcze dużo nauki przede mną  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Ale za to jakiej przyjemnej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> prawda ?<br /><br />Tymczasem warto właśnie oglądać projekty pokazywane i czytać podpowiedzi kolegi SunRiver bo ma fajne pomysy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 lut 2012, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirk77]]></name></author>
<updated>2012-02-05T15:10:20+01:00</updated>
<published>2012-02-05T15:10:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2329#p2329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2329#p2329"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2329#p2329"><![CDATA[
rzeczywiście śmiga bez problemów,<br />widzę, że jeszcze dużo nauki przede mną  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />wielkie dzięki,<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=187">sirk77</a> — 5 lut 2012, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-02-05T12:07:29+01:00</updated>
<published>2012-02-05T12:07:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2313#p2313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2313#p2313"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2313#p2313"><![CDATA[
moje działa na każdym od mechanicznych po optyczne - łącznie z wykrywaniem szybkości pokręcania i kierunku <br />i zawsze prawidłowo zlicza -- taka zaleta <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />a temu dałem taki przykład byś sobie mógł wgrać i sprawdzić jak chodzi <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=58">SunRiver</a> — 5 lut 2012, o 12:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirk77]]></name></author>
<updated>2012-02-05T10:52:25+01:00</updated>
<published>2012-02-05T10:52:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2312#p2312</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2312#p2312"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2312#p2312"><![CDATA[
jacekk232 - dzięki wygląda na to, że działa,<br /><br />SunRiver - ja używam innej metody na enkoder, ale muszę sprawdzić Twoją , bo moja nie zawsze wykrywa dobrze kierunek !!!<br /><br />do sprawdzenia ruchu gałki enkodera używam dwóch przerwań INT1(zbocze narastające) i 2(zbocze opadające),<br />po wykryciu zbocza załączam TIMER0 na ok.3ms po tym czasie sprawdzam czy przy zboczu narastającym na pinie jest 1, a przy zboczy opadającym 0, jeżeli tak jest to sprawdzam stany na pinach enkodera jeżeli są takie same to znaczy ruch w jednym kierunku jeżeli różne to ruch w przeciwnym kierunku, ale jak wspomniałem nie zawsze to idealnie działa,<br />enkoder, którego używam to ALPS:<br /><a href="http://www.soselectronic.pl/a_info/kat2010_eng/a22.pdf"  class="postlink">http://www.soselectronic.pl/a_info/kat2010_eng/a22.pdf</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=187">sirk77</a> — 5 lut 2012, o 10:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2012-02-04T22:29:45+01:00</updated>
<published>2012-02-04T22:29:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2306#p2306</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2306#p2306"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2306#p2306"><![CDATA[
Witam.<br /><br />Ten kod z Bascoma w C mógłby wyglądać np. tak<br />[syntax=c]if (PIND &amp; (1&lt;&lt;PD3))//jeśli PIND3 ustawiony<br />{<br />        if (!(PIND &amp; (1&lt;&lt;PD3)) &amp;&amp; (PIND &amp; (1&lt;&lt;PD6))) plus = 1;//jeśli PIND3=0 i PIND6=1, czyli PIND3 różne od PIND6, to plus=1<br />else if ((PIND &amp; (1&lt;&lt;PD3)) &amp;&amp; !(PIND &amp; (1&lt;&lt;PD6))) plus = 1;//jeśli PIND3=1 i PIND6=0, czyli PIND3 różne od PIND6, to plus=1<br />else minus = 1;//jeśli żadne z w/w, czyli PIND3 równe PIND6, to minus=1<br />}[/syntax]<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 4 lut 2012, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-02-04T20:03:27+01:00</updated>
<published>2012-02-04T20:03:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2305#p2305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2305#p2305"/>
<title type="html"><![CDATA[Re: Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2305#p2305"><![CDATA[
Ja to np robię tak:<br /><br />[syntax=c]<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />// dla  ATmega16<br />//------------------------------------------------------------------------<br /> <br />#defineXTAL8e6// 8MHz  tak dla jaj <br /> <br />// definicja pinów enkodera<br />#define PHASE_A(PINA &amp; 1&lt;&lt;PA1)<br />#define PHASE_B(PINA &amp; 1&lt;&lt;PA3)<br /> <br />#define LEDS_DDRDDRC<br />#defineLEDSPORTC//Ledzik<br /> <br /> <br />volatile int8_t enc_delta;// -128 ... 127<br />static int8_t last;<br /> <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 />  TCCR0 = 1&lt;&lt;WGM01^1&lt;&lt;CS01^1&lt;&lt;CS00;// CTC, XTAL / 64<br />  OCR0 = (uint8_t)(XTAL / 64.0 * 1e-3 - 0.5);    // 1ms<br />  TIMSK |= 1&lt;&lt;OCIE0;<br />}<br /> <br />// Przerwanie timera co 1s (1kHz)<br />ISR( TIMER0_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 />// przykładowo w programie ....<br />int main( void )<br />{<br />  int32_t val = 0;<br /> <br />  LEDS_DDR = 0xFF;<br />  encode_init();<br />  sei();<br /> <br />  for(;;){<br />    val += encode_read1();// odczyt jednego kroku <br />    LEDS = val;<br />  }<br />}<br /><br />[/syntax]<br /><br />Możesz sobie wybrać co ci pasuje <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=58">SunRiver</a> — 4 lut 2012, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirk77]]></name></author>
<updated>2012-02-04T19:33:18+01:00</updated>
<published>2012-02-04T19:33:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2304#p2304</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2304#p2304"/>
<title type="html"><![CDATA[Sprawdzanie stanu pinów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=817&amp;p=2304#p2304"><![CDATA[
jak przenieść ten prosty kod z Bascoma do C(używam tego w obsłudze enkodera)?<br /><br />  [syntax=basic4gl]If Pind.3 = 1 Then<br />    If Pind.3 &lt;&gt; Pind.6 Then<br />        Plus = 1<br />    Else<br />        Minus = 1<br />   End If<br />End If[/syntax]<br /><br />1. sprawdzenie czy Pind.3 jest w stanie wysokim<br />2. sprawdzenie czy Pind.3 i Pind.6 mają różne  stany<br /><br />pytanie dodatkowe do C: <br />[syntax=c]#define KEY_PIN (1&lt;&lt;PC6)<br />#define KEY_DOWN !(PINC &amp; KEY_PIN)[/syntax]<br />czy &quot;PINC &amp; KEY_PIN&quot; oznacza iloczyn na BI-CIE czy BY-CIE?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=187">sirk77</a> — 4 lut 2012, o 19:33</p><hr />
]]></content>
</entry>
</feed>