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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-24T00:14:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9812&amp;mode</id>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2014-12-24T00:14:16+01:00</updated>
<published>2014-12-24T00:14:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110218#p110218</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110218#p110218"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110218#p110218"><![CDATA[
Dzięki wielkie za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Lecą pochwały na wasze konta, a w między czasie rozbuduje sobie kod, jeszcze raz wszystkim dziękuje.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 24 gru 2014, o 00:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2014-12-23T17:28:33+01:00</updated>
<published>2014-12-23T17:28:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110137#p110137</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110137#p110137"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110137#p110137"><![CDATA[
Witam<br />Chyba nie zauważyłem w kodzie ustawienia portów-kierunków DDRB i DDRD pod klawisze ?<br />Powinny tam być .......<br />Pozdrawiam<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 9 minutach ]</span></strong><br /><br />ok , standardowo są ustawione na wejście<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 23 gru 2014, o 17:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gelten]]></name></author>
<updated>2014-12-23T17:21:42+01:00</updated>
<published>2014-12-23T17:21:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110135#p110135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110135#p110135"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110135#p110135"><![CDATA[
Funkcja key_press reaguje na naciśnięcie. Najprościej będzie dodać zmienna odpowiedzialna za tryb pracy i na podstawie jej wartości w funkcji main cały czas wywolywac dana funkcje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5228">Gelten</a> — 23 gru 2014, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Shavo]]></name></author>
<updated>2014-12-23T15:11:03+01:00</updated>
<published>2014-12-23T15:11:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110128#p110128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110128#p110128"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110128#p110128"><![CDATA[
cześć, zamień Twoją funkcję na tą<br /><br />[syntax=c]void key_press(uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) {<br /><br /> register uint8_t key_press = (*KPIN &amp; key_mask);<br /><br /> if( !key_press ) {<br />   key1_lock = 0;<br />   key2_lock = 0;<br />   key3_lock = 0;<br />   *klock = 1;<br /> }<br /><br /> if(*klock) kfun();<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4330">Shavo</a> — 23 gru 2014, o 15:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2014-12-23T09:42:50+01:00</updated>
<published>2014-12-23T09:42:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110077#p110077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110077#p110077"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110077#p110077"><![CDATA[
poprawione, kurcze nie wiedziałem o tym ;p<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 23 gru 2014, o 09:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz...]]></name></author>
<updated>2014-12-23T09:32:01+01:00</updated>
<published>2014-12-23T09:32:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110075#p110075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110075#p110075"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110075#p110075"><![CDATA[
Wstaw kod w odpowiedni sposób, bo wpadnie moderator i Ci &quot;głowę urwie&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br />Jak już poprawisz to łatwiej będzie analizować program.<br /><br />-- <br />Grzegorz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1748">Grzegorz...</a> — 23 gru 2014, o 09:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-12-23T01:08:34+01:00</updated>
<published>2014-12-23T01:08:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110063#p110063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110063#p110063"/>
<title type="html"><![CDATA[Re: Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110063#p110063"><![CDATA[
kod umieszczamy na forum w znacznikach syntax=c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 23 gru 2014, o 01:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2014-12-23T09:41:08+01:00</updated>
<published>2014-12-23T00:16:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110059#p110059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110059#p110059"/>
<title type="html"><![CDATA[Pomoc w sterowaniu silnikiem krokowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9812&amp;p=110059#p110059"><![CDATA[
Witajcie<br /><br />Jest to mój pierwszy post więc prosze o wyrozumiałość.<br />Chciałem napisać prosty program obsługujący silnik krokowy unipolarny z użyciem układu scalonego UNL2003, program z książki działa piknie, lecz zachciałem czegoś więcej i postanowiłem sterować silnikiem za pomocą przycisków.<br /><br />Używam <strong><span style="text-decoration: underline">atmega8L</span></strong><br />Krótki opis jak miał działaś <br />- po wciśnięciu KEY1 silnik miał pracować ciągle w prawo<br />- KEY2 analogicznie ciągła praca w lewo<br />- KEY3 stop<br /><br />Lecz coś nie wyszło, owszem program jako tako działa gdy wciskam KEY1 to zostaje wykonany jedynie 1 KROK z <span style="text-decoration: underline">'funkcji wykonującej cykliczne kroki'</span>, jak wcisnę go po raz 2 to KROK2 i tak dalej...<br /><br />Prosiłbym o wskazanie błędów i na kierunkowanie bądź poprawę kodu programu tak abym mógł obsługiwać silnik przyciskami<br /><br />[syntax=c]//CZESTOTLIWOSC 8 MHz (ZEWNETRZNY KWARC)<br /><br /><br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br /><br /><br />//WYJSCIA STERUJACE SILNIKIEM<br />#define T1 (1&lt;&lt;PC5)<br />#define T2 (1&lt;&lt;PC4)<br />#define T3 (1&lt;&lt;PC3)<br />#define T4 (1&lt;&lt;PC2)<br /><br /><br />//KROKI SILNIKA<br />#define KROK1 PORTC |= T1; PORTC &amp;= ~( T2 | T3 | T4 )<br />#define KROK2 PORTC |= T2; PORTC &amp;= ~( T1 | T3 | T4 )<br />#define KROK3 PORTC |= T3; PORTC &amp;= ~( T1 | T2 | T4 )<br />#define KROK4 PORTC |= T4; PORTC &amp;= ~( T1 | T2 | T3 )<br /><br /><br /><br />//DEKLARACJA FUNKCJI<br /><br />void kroki_lewo(void);<br />void kroki_prawo(void);<br />void kroki_stop(void);<br /><br />//inicjacja przycisków<br /><br />#define KEY1 (1&lt;&lt;PD6)<br />#define KEY2 (1&lt;&lt;PD7)<br />#define KEY3 (1&lt;&lt;PB0)<br />//********************<br />void key_press( uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) ;<br />//********************<br /><br />uint8_t key1_lock, key2_lock, key3_lock;<br /><br /><br />int main (void){<br /><br />PORTD |= ( KEY1|KEY2 );// podciągamy linie klawiszy do VCC<br />PORTB |= KEY3;// podciągamy linie klawisza do VCC<br /><br />DDRC |= ( T1 | T2 | T3 | T4) ; //jako wyjscie<br />PORTC &amp;= !(T1|T2|T3|T4);//zanegowanie wyjsc (wyłączenie tranzystorów)<br /><br /><br />while(1)//*************PETLA GLOWNA***************<br />{<br /><br />key_press( &amp;key1_lock, &amp;PIND, KEY1, kroki_lewo ); //czeka na instrukcje 1<br />key_press( &amp;key2_lock, &amp;PIND, KEY2, kroki_prawo ); //czeka na instrukcje 2<br />key_press( &amp;key3_lock, &amp;PINB, KEY3, kroki_stop ); //czeka na instrukcje 3<br /><br /><br /><br /><br />}<br />}<br /><br /><br /><br /><br /><br />//FUNKCJA WYKONUJĄCA CYKLICZNE KROKI<br /><br />//LEWO<br />void kroki_lewo(void){<br />static uint8_t kr;<br />if( kr == 0 ) { KROK1; }<br />if( kr == 1 ) { KROK2; }<br />if( kr == 2 ) { KROK3; }<br />if( kr == 3 ) { KROK4; }<br />if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//PRAWO<br />void kroki_prawo(void){<br />static uint8_t kr;<br />if( kr == 0 ) { KROK4; }<br />if( kr == 1 ) { KROK3; }<br />if( kr == 2 ) { KROK2; }<br />if( kr == 3 ) { KROK1; }<br />if( ++kr &gt; 3 ) kr=0;<br /><br />}<br /><br />//STOP<br />void kroki_stop(void){<br />PORTC &amp;= !(T1|T2|T3|T4);<br /><br />}<br /><br />//reakcja na wciniecie przycisku<br /><br />void key_press(uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) {<br /><br /> register uint8_t key_press = (*KPIN &amp; key_mask);<br /><br /> if( !*klock &amp;&amp; !key_press ) {<br />  *klock=1;<br /><br />  // reakcja na PRESS (wcinięcie przycisku)<br />  if(kfun) kfun();<br /><br /> } else if( *klock &amp;&amp; key_press ) (*klock)++;<br />}[/syntax]<br /><br /><br />Dodam że jestem zielony i pracuję w oparciu o książkę od tygodnia.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 23 gru 2014, o 00:16</p><hr />
]]></content>
</entry>
</feed>