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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2021-03-21T20:12:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23651&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-21T20:12:51+01:00</updated>
<published>2021-03-21T20:12:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231585#p231585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231585#p231585"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231585#p231585"><![CDATA[
Nie jest do tego przystosowana, bo zazwyczaj z jednego enc się korzysta. Można, np. zrobić jej kopie pod inna nazwą jako zupełnie niezależna i pozmieniać nazwy zmiennych. Raz nawet musiałem tak zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Można też pokombinować z tablicowaniem zmiennych. Co kto lubi <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=1922">SylwekK</a> — 21 mar 2021, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-21T19:40:44+01:00</updated>
<published>2021-03-21T19:40:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231582#p231582</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231582#p231582"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231582#p231582"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Szukał bym jednak błędu w sprzęcie<br /></div><br />Dokładnie:) sprawdzałem 100 razy czy wszystko jest do każdego pingu uC podpięta jest odpowiednia nóżka enkodera, ale ani razu nie sprawdzałem połączenia brzęczykiem. Okazało się, że coś mi się dzieje ze stykówką i akurat piny mikrokontrolera do, których podpięty był enkoder nie były połączone. Bardzo dziękuję za pomoc. Na koniec jeszcze zapytam, czy można tą  biblioteką można obsłużyć kilka enkoderów na raz? I jeszcze raz bardzo dziękuję, bo wszystko świetnie działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />. <br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 21 mar 2021, o 19:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-17T10:30:06+01:00</updated>
<published>2021-03-17T10:30:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231500#p231500</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231500#p231500"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231500#p231500"><![CDATA[
Wygląda, że ustawienia są w porządku. Szukał bym jednak błędu w sprzęcie lub w obsłudze lcd (np. po co ten Lcd_clear za każdym razem w pętli?)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 17 mar 2021, o 10:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-16T21:43:32+01:00</updated>
<published>2021-03-16T21:43:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231493#p231493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231493#p231493"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231493#p231493"><![CDATA[
Częstotliwość ustawiłem na 10kHz, podłączone wszystko jest na pewno dobrze, bo sprawdzałem kilka razy. Poniżej jeszcze umieszczam kod pliku.h:<br /><br />[syntax=c]/*<br /> * encoder_SK.h<br /> *<br /> *  Created on: 21 kwi 2017<br /> *      Author: SylwekK<br /> */<br /><br />#ifndef ENCODER_SK_H_<br />#define ENCODER_SK_H_<br /><br />//*********************************************************************************<br />//--- USTAWIENIA ---<br />//<br />#define ENC_TYPE    0    // typ enkodera: 0-pe³nokrokowy, 1-pó³krokowy, 2-czterokrokowy<br /><br />#define PORT_DIRDDRD//port dla enkodera<br />#define PORT_OUTPORTD//port dla enkodera<br />#define PORT_INPIND//port dla enkodera<br /><br /><br />#define PIN_ENC 0b00001100//piny pod które pod³¹czony jest enkoder<br />//wartoœci dla poszczególnych stanów enkodera<br />//w zale¿noœci od u¿ytych pinów<br />#define STAN1 0b00001000<br />#define STAN2 0b00000100<br />#define STAN3 0b00001100<br /><br />//*********************************************************************************<br />#define ENC_IN (PORT_IN &amp; PIN_ENC)<br /><br />void encoder_port(void);//ustawienie wejœæ enkodera<br />void encoder_reset(void);//wywo³aæ przed ka¿dym nowym u¿yciem enkodera<br />void encoder(void);//cyklicznie wywo³ywaæ w przerwaniach, czym wiêksza czêstotliwoœæ tym lepiej<br />int8_t enc_get(void);//dodawaæ jako sk³adnik modyfikowanej zmiennej, np. odczyt += enc_get();<br />//*********************************************************************************<br /><br />#endif /* ENCODER_SK_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 16 mar 2021, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-16T21:41:22+01:00</updated>
<published>2021-03-16T21:41:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231492#p231492</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231492#p231492"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231492#p231492"><![CDATA[
Jaka częstotliwość przerwań? Coś musiałeś przekombinować, albo źle skonfigurować w pliku h, ewentualnie połączenia pomylone. W wielu programach w różnych konfiguracjach korzystam z tej lib i wszystko hula.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 16 mar 2021, o 21:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-16T21:30:06+01:00</updated>
<published>2021-03-16T21:30:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231491#p231491</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231491#p231491"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231491#p231491"><![CDATA[
Na lcd po prostu pokazuje się napis: &quot;enc: 0&quot;, a przerwania działają bo sprawdzałem na diodzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 16 mar 2021, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-16T21:25:41+01:00</updated>
<published>2021-03-16T21:25:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231490#p231490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231490#p231490"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231490#p231490"><![CDATA[
A co się dzieje gdy wyświetlisz bezpośrednio zmienną &quot;odczyt&quot;? Przerwania działają?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 16 mar 2021, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-16T21:20:43+01:00</updated>
<published>2021-03-16T21:20:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231489#p231489</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231489#p231489"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231489#p231489"><![CDATA[
Hmm, wszystko ustawiłem tak jak trzeba, ale na LCD wynik dalej zamrożony <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> jakiś pomysł?  Testowałem też kod używając jednej diody i z tego wynika, że program tak jakby w ogóle nie zauważał, że kręcę enkoderem (wartość zmiennej  odczyt się nie zmienia)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 16 mar 2021, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-16T20:57:01+01:00</updated>
<published>2021-03-16T20:57:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231484#p231484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231484#p231484"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231484#p231484"><![CDATA[
W tych liniach TYLKO wskazujesz piny i kolejność ma być dla Twojego projektu taka jak poniżej:<br />[syntax=c]#define STAN1 0b00001000<br />#define STAN2 0b00000100<br />#define STAN3 0b00001100[/syntax]<br /><br />Gdybyś korzystał, np. z pinów 0 i 7<br /><br />to zapis wyglądałby tak:<br />[syntax=c]#define STAN1 0b10000000<br />#define STAN2 0b00000001<br />#define STAN3 0b10000001[/syntax]<br /><br />Pisałem Ci gdzie zmienia się typ enkodera (pełny/półkrok). Przeoczyłeś ? <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=1922">SylwekK</a> — 16 mar 2021, o 20:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-16T20:22:50+01:00</updated>
<published>2021-03-16T20:22:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231481#p231481</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231481#p231481"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231481#p231481"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />zerujesz go (albo jakąś inną domyślną wartość wstawiasz) i wykonujesz funkcję. To tak na szybko co mi do głowy przychodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Racja, racja. <br /><br />Tylko jeszcze dopytam, podpiąłem piny enkodera do uC A-&gt;PD2 i B-&gt;PD3 bez żadnych filtrów itd. Używam atmegi328p więc ustawiłem makro PIN_ENC tak jak poniżej:<br /><br />[syntax=c]#define PIN_ENC 0b00001100[/syntax]<br /><br />I teraz jeszcze raz jeżeli chodzi o te makra &quot;STAN&quot;, jak mam enkoder pełnokrokowy to powinny powinny one być ustawione tak jak tutaj? Bo obecnie wynik na LCD nie rusza z miejsca. I dziękuję za pomoc od razu <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />[syntax=c]#define STAN1 0b00001000<br />#define STAN2 0b00001100<br />#define STAN3 0b00000100[/syntax]<br /><br /><br />Jeszcze dodaje cały kod źródłowy tak w razie czego.<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;HD44780.h&quot;<br />#include &quot;encoder_SK.h&quot;<br /><br />int main(void)<br />{<br />uint16_t odczyt = 0;<br />char buffer&#91;33&#93;;<br /><br />LCD_Initalize();<br />encoder_port();<br />encoder_reset();<br /><br />TCCR0A |= (1 &lt;&lt; WGM01);<br />TCCR0B |= (1 &lt;&lt; CS02) | (1 &lt;&lt; CS00);<br />TIMSK0 |= (1 &lt;&lt; OCIE0A);<br />OCR0A = 2;<br /><br />sei();<br /><br />    while (1) <br />    {<br />odczyt += enc_get();<br /><br />itoa(odczyt, buffer, 10);<br /><br />LCD_Clear();<br />LCD_GoTo(0, 0);<br />LCD_WriteText(&quot;enc: &quot;);<br />LCD_WriteText(buffer);<br />_delay_ms(125);<br />    }<br />}<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br />encoder();<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 16 mar 2021, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-13T10:02:36+01:00</updated>
<published>2021-03-13T10:02:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231427#p231427</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231427#p231427"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231427#p231427"><![CDATA[
Ad.1. Typ enkodera ustawia się w tej linii:<br />[syntax=c]#define ENC_TYPE 0         //typ enkodera: 0-pełnokrokowy, 1-półkrokowy, 2-czterokrokowy[/syntax]<br /><br />natomiast tu:<br />[syntax=c]#define STAN1 0b00000001<br />#define STAN2 0b00000010<br />#define STAN3 0b00000011[/syntax]<br />ustalasz pod które bity podpięty jest enkoder i wskazujesz możliwe stany 0/1. Wybrałem taki sposób (dla niektórych może kontrowersyjny), bo wiele mi to ułatwia w dalszej części programu. Można oczywiście dopisać sobie własne opcje definiowania, ale mnie to wystarczy. Istotne jest, że enkoder może być podłączony tylko w obrębie jednego portu czyli NIE może np. jedna końcówka w porcie A druga w porcie B. Obie muszą być podpięte albo pod A albo pod B. W powyższym przykładzie enc podpięty jest pod piny 0 i 1 portu. Pozostałe 2:7 można wykorzystać do innych celów.<br /><br />Ad.2. Możesz przecież wykonanie funkcji uzależnić od stanu jakiegoś utworzonego na szybko licznika i w momencie osiągnięcia przez niego wartości zerujesz go (albo jakąś inną domyślną wartość wstawiasz) i wykonujesz funkcję. To tak na szybko co mi do głowy przychodzi <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=1922">SylwekK</a> — 13 mar 2021, o 10:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-13T00:00:32+01:00</updated>
<published>2021-03-13T00:00:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231425#p231425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231425#p231425"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231425#p231425"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Poszukaj tu gdzieś na forum mojego rozwiązania obsługi enkodera.<br /></div><br /><br />Znalazłem bibliotekę. Widzę, że forumowicze bardzo sobie ją chwalili  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />. Mam tylko kilka pytań co do ustawień w pliku.h<br /><br />1. Jeżeli mam enkoder z pełnymi krokami to jak mam ustawić te makra, bo nie rozumiem o co tu chodzi?<br />[syntax=c]#define STAN1 0b00000001<br />#define STAN2 0b00000010<br />#define STAN3 0b00000011[/syntax]<br /><br />2. W przykładowym kodzie była pokazana coś takiego<br />[syntax=c]odczyt += enc_get();<br /> <br />lcd_locate(0,0); lcd_int(odczyt); lcd_str(&quot;  &quot;);<br />pasek(1, 0, (odczyt&amp;255)/3); //dopasowanie wartości na całą skalę (16x5=80 punktów, 255/80=3.1)[/syntax]<br /><br />Czyli funkcja enkoder.get() zwraca przyrost impulsów. A mogę tutaj jakoś przypisać tej funkcji aby przy kręceniu enkoderem, np. wykonywała jakąś funkcję ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 13 mar 2021, o 00:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fofex]]></name></author>
<updated>2021-03-09T10:14:59+01:00</updated>
<published>2021-03-09T10:14:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231373#p231373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231373#p231373"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231373#p231373"><![CDATA[
<div class="quotetitle">antosV10 napisał(a):</div><div class="quotecontent"><br />Przy powolnym przekręcaniu wszystko działa ok, przy trochę szybszym gubi kroki, a przy bardzo szybkim wartość zmiennej stoi w miejscu<br /></div><br />Jeszcze sprawdź jak &quot;działa&quot; bez kręcenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21072">fofex</a> — 9 mar 2021, o 10:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2021-03-09T00:40:02+01:00</updated>
<published>2021-03-09T00:40:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231357#p231357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231357#p231357"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231357#p231357"><![CDATA[
Poszukaj tu gdzieś na forum mojego rozwiązania obsługi enkodera. Naprawdę ciężko w nim zgubić kroki. Może Ci się akurat spodoba...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 9 mar 2021, o 00:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2021-03-08T16:06:25+01:00</updated>
<published>2021-03-08T16:06:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231345#p231345</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231345#p231345"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231345#p231345"><![CDATA[
<a href="https://www.youtube.com/watch?v=IP5t_XzfRRM"  class="postlink">https://www.youtube.com/watch?v=IP5t_XzfRRM</a><br />Obejrzyj tą serię poradników.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 8 mar 2021, o 16:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sim]]></name></author>
<updated>2021-03-08T13:18:41+01:00</updated>
<published>2021-03-08T13:18:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231342#p231342</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231342#p231342"/>
<title type="html"><![CDATA[Re: Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231342#p231342"><![CDATA[
Skąd założenie, że czas drgań styków to 10ms. Odczytując stan styków co 10ms<br />nie widzisz tego co dzieje się &quot;pomiędzy&quot;. Pozdrawiam Janek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=762">sim</a> — 8 mar 2021, o 13:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[antosV10]]></name></author>
<updated>2021-03-07T23:57:52+01:00</updated>
<published>2021-03-07T23:57:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231335#p231335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231335#p231335"/>
<title type="html"><![CDATA[Obsługa enkodera bez użycia przerwań INT/PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23651&amp;p=231335#p231335"><![CDATA[
Witam, próbuję obsłużyć enkoder obrotowy. Mikokontroler, którego używam to atmega328p. Wyjście enkodera A-&gt;PD2, wyście B-&gt;PD3. Z moich testów wynika, że ma on pełne kroki, a do uC podpięty jest według schematu jaki pokazuje Pan Mirek w swoich poradnikach. Chciałbym obsłużyć ten enkoder bez użycia przerwań i przeczytałem na internecie o metodzie poolingu. Z racji na to, że w moim przypadku czas drgań styków wynosi 10ms to ustawiam timer tak aby przerwanie występowało co 10ms ,a następnie obsługuję enkoder. Przy powolnym przekręcaniu wszystko działa ok, przy trochę szybszym gubi kroki, a przy bardzo szybkim wartość zmiennej stoi w miejscu (czasami nawet liczba wyświetlana na LCD dekrementuje albo inkrementuje się w przeciwną stronę). Czy ten mój pomysł z użyciem timera jest ok, a jeżeli tak to co tutaj mogę poprawić, żeby wszystko dobrze działało? <br /><br />Link do enkodera: <!-- m --><a class="postlink" href="https://botland.com.pl/enkodery/9533-czujnik-obrotu-impulsator-enkoder-obrotowy-dfrobot-ec11.html" >https://botland.com.pl/enkodery/9533-cz ... -ec11.html</a><!-- m --><br /><br />Link do kodu, którym się wzorowałem: <!-- m --><a class="postlink" href="https://github.com/swharden/AVR-projects/blob/master/ATTiny2313%202017-02-02%20rotary%20encoder/main.c" >https://github.com/swharden/AVR-project ... der/main.c</a><!-- m --><br /><br />Kod:<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;HD44780.h&quot;<br /><br />/*<br /> *      Code for encoder.<br /> */<br /><br />volatile uint8_t encoder;<br />char buffer&#91;33&#93;;<br /><br />int main(void) {<br /><br />    TCCR0A |= (1 &lt;&lt; WGM01);<br />    TCCR0B |= (1 &lt;&lt; CS02) | (1 &lt;&lt; CS00);<br />    TIMSK0 |= (1 &lt;&lt; OCIE0A);<br />    OCR0A = 156;<br /><br />    PORTD |= (1 &lt;&lt; PD2) | (1 &lt;&lt; PD3);<br /><br />    LCD_Initalize();<br /><br />    sei();<br /><br />    while(1)<br />    {<br />        itoa(encoder, buffer, 10);<br /><br />        LCD_Clear();<br />        LCD_GoTo(0, 0);<br />        LCD_WriteText(&quot;enc: &quot;);<br />        LCD_WriteText(buffer);<br />        _delay_ms(125);<br />    }<br /><br />}<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br />    if(~PIND &amp; (1 &lt;&lt; PD2))<br />    {<br />        if(PIND &amp;(1 &lt;&lt; PD3)) encoder++;<br />        else encoder--;<br /><br />        while(~PIND &amp; (1 &lt;&lt; PD2));<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21647">antosV10</a> — 7 mar 2021, o 23:57</p><hr />
]]></content>
</entry>
</feed>