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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5781&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-04T10:00:00+01:00</updated>
<published>2014-02-04T10:00:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68351#p68351</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68351#p68351"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68351#p68351"><![CDATA[
<div class="quotetitle">Malutki_27 napisał(a):</div><div class="quotecontent"><br />Co do zmiennych owszem można użyć zmiennych ze znakiem , ale tak prawdę mówiąc po co, ten sam efekt można osiągnąć poprzez przesuniecie &quot;środka&quot; zmiennej . Bo to ze zainicjowałem je 0-mi nie ma właściwie znaczenia , mogłem ustawić je na np. 127 i miałbym umownie znak  . No chyba że sam znak można do czegoś fajnego wykorzystać , o czym nie mam bladego pojęcia.<br /></div><br />Zgadza się, można przesunąć środek, ale chyba sam przyznasz, że inicjacja przez wpisanie &quot;0&quot; jest bardziej intuicyjna i nawet przy uruchamianiu programu podczas jego pisania łatwiej określić co się dzieje z parametrami. Np. w moim sterowniku slidera przez zwykłe wpisanie zera ustawiam punkt końcowy skąd łatwo już wyliczyć bez dodatkowych przeliczeń typu &quot;x=end_track-127&quot; przykładową drogę, którą ma wyświetlić LCD. Generalnie z doświadczenia mogę powiedzieć, że działanie na zmiennych ze znakiem w takim przypadku naprawdę upraszcza kod i czyni go bardziej intuicyjnym, a zero to zero i przyznasz, że nawet w warunkach IF łatwiej się go bada <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">Malutki_27 napisał(a):</div><div class="quotecontent"><br />Co do długości zmiennej to nie ma co dyskutować , jak to powiadają wielkość zmiennej powinna być taka jaka będzie dla nas przydatna<br /></div><br />Tu nawet nie dyskutuję - 100% racji, chociaż przyznasz, że dla pracy półkrokowej dla popularnych silników to nawet jednego obrotu nie zaliczysz... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Odnośnie tego fragmentu kodu:<br /><br />[syntax=c]if(!kierunek &amp;&amp; !timer){ // kierunek 0<br /><br />                if(step&gt;7) step =0;<br /><br />                PORTD |= TAB&#91;step++&#93;;<br /><br />                timer = 3;<br /><br />        }<br /><br />        if(kierunek &amp;&amp; !timer){ // kierunek 1<br /><br />                if(step&gt;7) step =7;<br /><br />                PORTD |= TAB&#91;step--&#93;;<br /><br />                timer = 3;[/syntax]<br /><br />...to chyba jednak w drugiej części przy warunku wkradł się mały error <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Kiedy &quot;kierunek=1&quot; to &quot;step&quot; nigdy nie osiągnie &quot;0&quot;<br />nawet po tej zmianie:<br /><br />[syntax=c]if(kierunek &amp;&amp; !timer){ // kierunek 1<br /><br />                if(step&lt;0) step =7;<br /><br />                PORTD |= TAB&#91;step--&#93;;<br /><br />                timer = 3;[/syntax]<br /><br />Należałoby nieco przebudować kolejność, albo dodatkową zmienną &quot;step&quot; zrobić ze znakiem.<br /><br /><div class="quotetitle">Malutki_27 napisał(a):</div><div class="quotecontent"><br />I widzisz jak podałeś linka do strony to teraz wiem że jeszcze bardziej chce obejrzeć twój kod do sterowania silnikami<br /></div><br />Hehe, szału w kodzie nie ma - to najzwyklejsza tablica i przypisywanie jej wartości do pinów portu <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  Coś podobnego jak Twoja koncepcja (w tej materii się wiele nowego nie wymyśli <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ) tyle, że wszystko ubrane już w pętli głównej w algorytm zarządzający np. rozpędzaniem, itd.:<br /><br />[syntax=basic4gl]Krok:<br />If Kier = 0 Then<br />   Rotate Faza , Right<br />   Incr Pozycja<br />End If<br />If Kier = 1 Then<br />   Rotate Faza , Left<br />   Decr Pozycja<br />End If<br />Select Case Faza<br />Case 1 : Kb = &amp;B00001001<br />Case 2 : Kb = &amp;B00000001<br />Case 4 : Kb = &amp;B00000101<br />Case 8 : Kb = &amp;B00000100<br />Case 16 : Kb = &amp;B00000110<br />Case 32 : Kb = &amp;B00000010<br />Case 64 : Kb = &amp;B00001010<br />Case 128 : Kb = &amp;B00001000<br />End Select<br />Xl = Pinc And &amp;B11110000      'silnik na PORTC od C.0 do C.3<br />Portc = Xl Or Kb<br />Return[/syntax]<br /><br />To kompletny fragment robiący jeden krok w dowolną stronę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 4 lut 2014, o 10:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-02-03T23:46:54+01:00</updated>
<published>2014-02-03T23:46:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68313#p68313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68313#p68313"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68313#p68313"><![CDATA[
Aaaaa - to taki myk super znowu coś wiem więcej <br />dzięki <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=1044">Zaba</a> — 3 lut 2014, o 23:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2014-02-03T23:55:17+01:00</updated>
<published>2014-02-03T23:14:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68303#p68303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68303#p68303"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68303#p68303"><![CDATA[
@Zaba nie powinno być ponieważ ta zmienna nigdy nie przyjmie wartości poniżej 0, a wynika to z deklaracji zmiennej. Zwróć uwagę ze w zależności od wywołania funkcji zmienna jest inkrementowana od 0 do 7 lub na odwrót. W przypadku dekrementacji zmienna nie osiągnie wartości ujemnych tylko 255 ( przekreci się <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ) , a jak się przekręci to będzie większa od 7 stąd taki warunek.<br /><br />@ SylwekK I widzisz jak podałeś linka do strony to teraz wiem że jeszcze bardziej chce obejrzeć twój kod do sterowania silnikami <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Swoja drogą fajne zabawki, jest co podziwiać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Co do zmiennych owszem można użyć zmiennych ze znakiem , ale tak prawdę mówiąc po co, ten sam efekt można osiągnąć poprzez przesuniecie &quot;środka&quot; zmiennej . Bo to ze zainicjowałem je 0-mi nie ma właściwie znaczenia , mogłem ustawić je na np. 127 i miałbym umownie znak <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . No chyba że sam znak można do czegoś fajnego wykorzystać , o czym nie mam bladego pojęcia. A jeżeli tak jest , to gdybyś był tak miły <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> i wyjaśnił to byłbym bardzo wdzięczny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Co do długości zmiennej to nie ma co dyskutować , jak to powiadają wielkość zmiennej powinna być taka jaka będzie dla nas przydatna <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .  <br /><br />A skoro juz tak roztrzaskujemy tą moją koncepcje , to ja bym się jeszcze zwrócił uwagę na sposób załączania pinow dla silniczka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br /><br />Sent from my Lumia 800 using Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 3 lut 2014, o 23:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maras52]]></name></author>
<updated>2014-02-03T22:53:36+01:00</updated>
<published>2014-02-03T22:53:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68298#p68298</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68298#p68298"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68298#p68298"><![CDATA[
Dziękuje za  zainteresowanie i sugestie.<br /><br />&quot;Coś z tego będzie g... już jest&quot; czyli niby chodzi prawo lewo wg zmiany zmiennej pozycja z tym że czasem dostaje do łba i świruje.<br /><br />Pliki na moim DB &gt;&gt; Licznik_v2 (laurka własnej produkcji) do dogrania libsy Mirkowe od lcd.<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1046">maras52</a> — 3 lut 2014, o 22:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-02-03T22:06:17+01:00</updated>
<published>2014-02-03T22:06:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68282#p68282</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68282#p68282"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68282#p68282"><![CDATA[
kolego @Malutki_27 nie chciałbym abyś mnie źle zrozumiał <br />bo nie chcę Ci niczego zarzucać ale mam pytanie do twojego<br />kodu z postu powyżej <br />czy w drugi if-ie nie powinno być<br />[syntax=c]if(kierunek &amp;&amp; !timer){ // kierunek 1<br />                if(step&lt;0) step =7;<br />                PORTD |= TAB&#91;step--&#93;;<br />                timer = 3;<br />        }[/syntax]<br /> <br />Jeśli coś źle rozumiem to sory za zamieszanie <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=1044">Zaba</a> — 3 lut 2014, o 22:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-03T20:22:18+01:00</updated>
<published>2014-02-03T20:22:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68241#p68241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68241#p68241"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68241#p68241"><![CDATA[
@Malutki_27 - wszystko doczytałem i potwierdziłem, że koncepcja jest ok <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tylko chodziło mi o te nieszczęsne zmienne - naprawdę wskazane jest aby były to jakieś ze znakiem i takie nawyki powinny wchodzić w krew od samego początku i już na pewno nie miałem na celu ganienie Cię za błędny kod <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Przy okazji dodałem trzy grosze na temat prawidłowego rozruchu takiego silnika <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Swoje rozwiązania sterowania silnikiem krokowym oczywiście mam tyle, że jeszcze w bascomie: <a href="http://sylwekkuna.com/slider.html"  class="postlink">http://sylwekkuna.com/slider.html</a>. Obecnie przygotowuję się powoli do stworzenia w &quot;C&quot; nowej wersji sterownika, ale opartego już na silnikach DC.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 3 lut 2014, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2014-02-03T20:04:11+01:00</updated>
<published>2014-02-03T20:04:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68239#p68239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68239#p68239"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68239#p68239"><![CDATA[
Przyjacielu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> z miłą chęcią popatrzę na twoją propozycję kodu, może i ja się czegoś nauczę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> .<br />I jak możesz doczytaj co napisałem na początku, że jest to pewna koncepcja postępowania która miała na celu pokazać koledze @maras52 podobny ale zarazem inny sposób podejścia do tematu. Prosił także aby pokazać jak się pozbyć _delay_ms , co też uczyniłem.<br /><br />Co do tego że silniki krokowe nie lubią ostrych startów - to zgadzam się w 100 % , ale autor wątku nie prosił o pomoc w rozwiązaniu takiego problemu, więc go nie otrzymał. Zresztą jak sam wiesz gotowy kod to można dostać w Rybnym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. A tutaj pokazujemy tylko drogę którą pytający musi przejść <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />I poważnie piszę jak masz jakiś fajny kodzik który w &quot;sprytny&quot; sposób obsługuje silniki krokowe i możesz go zamieścić, to umieść go. <br />Ja osobiście z ogromną przyjemnością przeanalizuje go sobie i być może nauczę się czegoś nowego <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 3 lut 2014, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-03T17:18:37+01:00</updated>
<published>2014-02-03T17:18:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68212#p68212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68212#p68212"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68212#p68212"><![CDATA[
Powyższy kod mógłby nawet działać, ale deklaracja zmiennych &quot;pozycja&quot; i &quot;krok&quot; jako uint8_t zamiast zmiennej ze znakiem (i to raczej powinno być coś większego niż 8 bitów) to jednak błąd. Przecież silnik może akurat wystartować w drugą stronę kiedy zmienna krok jest wyzerowana i kiedy zacznie ją odliczać od zera to program oszaleje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Sama koncepcja jest ok tylko jeszcze &quot;timer&quot; bym okrasił jakąś zmienną żeby łatwej zmieniać prędkość. Silniki krokowe nie lubią ostrych startów, bo wtedy najczęściej gubią kroki (chyba, że na wolnych obrotach cały czas jedziemy...) i w docelowym programie proponuję zrobić płynne rozpędzanie i spowalnianie silnika (przeważnie wystarczy ułamek sekundy) - ale to później, najpierw rusz silnikiem <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> — 3 lut 2014, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2014-02-03T14:51:58+01:00</updated>
<published>2014-02-03T14:51:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68187#p68187</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68187#p68187"/>
<title type="html"><![CDATA[Re: Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=68187#p68187"><![CDATA[
Potraktuj to jako pewna koncepcję, a nie gotowy kod <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 21 sty 2014<br /> *      Author: MMalecki<br /> */<br /><br />#include &lt;avr/io.h&gt;<br /><br /> volatile uint8_t timer; // zmienna dekrementowana w przerwaniu która odmierza czas<br /><br /> void step(uint8_t kierunek);<br />uint8_t TAB&#91;8&#93;; // tablica krokow zdeklarowania<br /><br />int main( void){<br /><br />uint8_t pozycja = 0; // zadajemy pozycje dla silnika<br />uint8_t krok = 0; // aktualna pozycja silnika<br /><br />if (krok&gt;pozycja)<br />{<br />step(0);<br />krok--;<br />}<br />if (krok&lt;pozycja)<br />{<br />step(1);<br />krok++;<br />}<br /><br />}<br /><br />void step(uint8_t kierunek)<br />{<br />static uint8_t step = 0;<br /><br />if(!kierunek &amp;&amp; !timer){ // kierunek 0<br />if(step&gt;7) step =0;<br />PORTD |= TAB&#91;step++&#93;;<br />timer = 3;<br />}<br />if(kierunek &amp;&amp; !timer){ // kierunek 1<br />if(step&gt;7) step =7;<br />PORTD |= TAB&#91;step--&#93;;<br />timer = 3;<br />}<br />}[/syntax]<br /><br />Ot taka moja mała koncepcja <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Co prawda dawno się nie bawiłem C, ale z grubsza po odpowiednim dopasowaniu powinna działać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Edit: Trochę poprawiłem kod bo mi się nie podobał <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Oczywiście należy ustawić porty , przerwania i takie tam żeby działało <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=225">Malutki_27</a> — 3 lut 2014, o 14:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-02-01T18:19:52+01:00</updated>
<published>2014-02-01T18:19:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67842#p67842</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67842#p67842"/>
<title type="html"><![CDATA[Re: Zmienna jako ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67842#p67842"><![CDATA[
Po mojemu to mieszasz jak betoniarka... czy nie wystarczy Ci dwie zmienne ze znakiem czyli aktualna pozycja silnika i docelowa pozycja silnika??? Przecież z tego już można pociągnąć w każdą stronę i robić co się tylko chce. Nawaliłeś tyle tych zmiennych, że się w nich poplątasz wcześniej czy później. A najlepiej to napisz co to za urządzenie ma być wtedy łatwiej się myśli.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 1 lut 2014, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maras52]]></name></author>
<updated>2014-02-01T23:06:43+01:00</updated>
<published>2014-02-01T17:31:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67817#p67817</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67817#p67817"/>
<title type="html"><![CDATA[Sterowanie krokowcem, zmienna ilośc+kierunek kroków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5781&amp;p=67817#p67817"><![CDATA[
Który rzuci na to świeżym okiem bo mnie już się z deczka musk lasuje.<br /><br />Ma to wyglądać tak zmienna <span style="color: #4000FF">pozycja</span> jest zmienna (rośnie, maleje itp)<br /><br />Kombinuje nad tym od dłuższego czasu i wnioskuje takie coś :<br /><span style="color: #4000FF">pozycja</span> -docelowa pozycja silnika<br /><span style="color: #4000FF">krok_w</span> - kroki wykonane<br /><span style="color: #4000FF">krok_d</span> - do wykonania<br /><span style="color: #4000FF">k</span> - pomocnicza <br /><br />Jeśli <span style="color: #4000FF">pozycja</span> jest mniejsza od <span style="color: #4000FF">krok_w</span> obliczmy <span style="color: #4000FF">krok_d</span> (krok_w-pozycja) i przekazujemy do funkcji <span style="color: #008040">Stepp_l</span><br />i odwrotnie czyli <span style="color: #4000FF">pozycja</span> większa od <span style="color: #4000FF">krok_w</span> to znów obliczmy <span style="color: #4000FF">krok_d</span> (pozycja-krok_w) i wsadzamy do S<span style="color: #008040">tepp_r</span><br /><br />W funkcjach <span style="color: #008040">Stepp_x</span> dodajemy lub ujmujemy zmienna <span style="color: #4000FF">krok_w</span>.<br /><br /><br /><br />[syntax=c]volatile int16_t r=0;<br />volatile int16_t rpm;<br />volatile uint8_t czas=0, pozycja,flaga_pomiar=0;<br />uint8_t krok_d, krok_w,k;<br />int main(void)<br />{<br />DDRB  |= 0xfb;<br />PORTB &amp;= ~0xfb;<br />DDRD  |= 0xf3;<br />PORTD &amp;= ~0xf3;<br /><br />lcd_init();<br />config();<br />sei();<br />while(1)<br />{<br />if(czas==40)<br />{<br />lcd_locate(0,0);<br />lcd_str(&quot;D&quot;);<br />lcd_locate(0,2);<br />lcd_int(krok_d);<br />lcd_locate(0,8);<br />lcd_str(&quot;W&quot;);<br />lcd_locate(0,10);<br />lcd_int(krok_w); <br />lcd_str(&quot;                 &quot;);<br /><br />lcd_locate(1,0);<br />lcd_str(&quot;P&quot;);<br />lcd_locate(1,2);<br />lcd_int(pozycja);<br />lcd_locate(1,8);<br />lcd_str(&quot;R&quot;); <br />lcd_locate(1,10);<br />lcd_int(rpm);<br />lcd_str(&quot;                 &quot;);<br />}<br /><br />if(flaga_pomiar==1)<br />{<br /><br />//prawo////////////////////////////////////////<br />if(krok_w == 0) //jesli korki &quot;wykonane&quot; rowne 0<br />{<br />krok_d=pozycja;<br />flaga_pomiar=0;<br />for(k = 0; k &lt;= krok_d; k++)<br />{<br />Stepp_r(1);<br />krok_w++;<br />}<br />}<br />//lewo////////////////////////////////////////*<br />if(krok_w &gt; pozycja) //jesli kroki &quot;wykonane&quot; wieksze od &quot;do wykonania&quot;<br />{   <br />flaga_pomiar=0;<br />krok_d=krok_w-pozycja;<br />for(k = 0; k &lt;= krok_d; k++)<br />{<br />Stepp_l(1);<br />krok_w--;<br />}<br />}<br />//prawo////////////////////////////////////////<br />if(krok_w &lt; pozycja) //jesli kroki &quot;wykonane&quot; mniejsze od &quot;do wykonania&quot;<br />{   <br />flaga_pomiar=0;<br />krok_d=pozycja-krok_w;<br />for(k = 0; k &lt;= krok_d; k++)<br />{<br />Stepp_r(1);<br />krok_w++;<br />}<br />}<br />//////////////////////////////////////////<br />if(krok_w == pozycja) //jesli kroki &quot;wykonane&quot; rowne &quot;pozycja&quot;<br />{<br />flaga_pomiar=0;<br />Stepp_stop();<br />}<br />}<br />else Stepp_stop();//if flaga_pomiar<br />//////////////////////////////////////////<br />} //while<br />} //main[/syntax]<br /><br /><br />Dobrze to rozumuje ?<br /><br /><br />Dodatkowo kombinuje jak z funkcji odpowiedzialnych za kroki usunąć delaye na rzecz timera<br /><br />[syntax=c]void Stepp_l(uint8_t kroka)<br />{<br />        for(s=0;s&lt;kroka;s++)<br />        {<br />                KROK8;<br />                _delay_ms(3);<br />                KROK7;<br />                _delay_ms(3);<br />                KROK6;<br />                _delay_ms(3);<br />                KROK5;<br />                _delay_ms(3);<br />                KROK4;<br />                _delay_ms(3);<br />                KROK3;<br />                _delay_ms(3);<br />                KROK2;<br />                _delay_ms(3);<br />                KROK1;<br />                _delay_ms(3);<br />        };<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1046">maras52</a> — 1 lut 2014, o 17:31</p><hr />
]]></content>
</entry>
</feed>