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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-02T22:24:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9990&amp;mode</id>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2015-01-02T22:24:47+01:00</updated>
<published>2015-01-02T22:24:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111874#p111874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111874#p111874"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111874#p111874"><![CDATA[
Racja przeoczyłem<br /><br />Program dzięki wszystkim którzy usiłowali mi pomóc zaczął działać, po paru kosmetycznych poprawkach wygląda następująco<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 02-12-2014<br /> *      Author: Mateusz<br /> *      **************************STEROWANIE SILNIKIEM KROKOWYM UNIPOLARNYM 5V Z URZYCIEM UKLADU UNL2003*********************<br /> */<br />//CZESTOTLIWOSC 8 MHz (ZEWNETRZNY KWARC)<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;      //inicjacja uart<br /><br />//WYJSCIA STERUJACE SILNIKIEM<br />#define T1 (1&lt;&lt;PB0)<br />#define T2 (1&lt;&lt;PB1)<br />#define T3 (1&lt;&lt;PB2)<br />#define T4 (1&lt;&lt;PB3)<br /><br /><br />//KROKI SILNIKA<br />#define KROK1 PORTB |= T1; PORTB &amp;= ~( T2 | T3 | T4 )<br />#define KROK2 PORTB |= T2; PORTB &amp;= ~( T1 | T3 | T4 )<br />#define KROK3 PORTB |= T3; PORTB &amp;= ~( T1 | T2 | T4 )<br />#define KROK4 PORTB |= T4; PORTB &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 />//DEFINICJA ZMIENNEJ SILNIK<br />int silnik;<br /><br />int main (void){<br /><br /><br />DDRB |= ( T1 | T2 | T3 | T4) ; //jako wyjscie<br />PORTB &amp;= ~(T1|T2|T3|T4);       //zanegowanie wyjsc (wyłączenie tranzystorów)<br />USART_Init( __UBRR );          // inicjalizacja UART<br />sei();                         //przerwania<br /><br />uart_puts(&quot;Oczekuje\n\r&quot;);<br /><br />char znak;<br />//***********************petla glowna**********************<br />        while(1) {<br /><br /><br /><br />        znak = uart_getc(); // zapis odbieranych znaków do zmiannej silnik<br /><br />        if(znak) silnik = znak;<br /><br />        if (silnik == '1')kroki_lewo();<br />        if (silnik == '2')kroki_prawo();<br />        if (silnik == '4')kroki_stop();<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 />        _delay_ms(3);<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 />                _delay_ms(3);<br /><br />}<br /><br />//STOP<br />void kroki_stop(void){<br />        PORTB &amp;= !(T1|T2|T3|T4);<br /><br />}[/syntax]<br /><br />Dziękuję wszystkim za pomoc lecą pochwały<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 2 sty 2015, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-01-02T22:01:27+01:00</updated>
<published>2015-01-02T22:01:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111869#p111869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111869#p111869"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111869#p111869"><![CDATA[
A gdzie masz deklaracje zmiennej znak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 sty 2015, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2015-01-02T21:51:59+01:00</updated>
<published>2015-01-02T21:51:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111864#p111864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111864#p111864"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111864#p111864"><![CDATA[
sposób leonos2000 nie działa a znowu u jacekk232 jest problem podkreśla mi wszystkie zmienne &quot;znak&quot; nie mogę się ich pozbyć :<br /><br /><br />[syntax=c]//******<br /><br />char silnik;                               //deklaracja zmiennej silnik<br /><br /><br /><br />//***********************petla glowna**********************<br />        while(1) {<br /><br /><br />znak = uart_getc(); // zapis odbieranych znaków do zmiannej silnik<br /><br /> if(znak) silnik = znak;<br /><br /> if (silnik == '1')kroki_lewo();<br /> if (silnik == '2')kroki_prawo();<br /> if (silnik == '4')kroki_stop();<br /><br /><br />        }<br />}<br /><br /><br /><br />//FUNKCJA WYKONUJĄCA CYKLICZNE KROKI<br /><br />//LEWO<br />void kroki_lewo(void){[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 2 sty 2015, o 21:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-01-02T20:51:50+01:00</updated>
<published>2015-01-02T20:51:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111854#p111854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111854#p111854"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111854#p111854"><![CDATA[
Wykonuje się jeden krok bo po odebraniu np. znaku '1' program skoczy do funkcji kroki_lewo(). Po puszczeniu klawisza na klawiaturze funkcja uart_getc() zwróci zero, które trafi do zmiennej silnik. I dlatego więcej kroków się nie wykonuje.<br /><br />Spróbuj może w ten sposób<br />[syntax=c]znak = uart_getc(); // zapis odbieranych znaków do zmiannej silnik <br /><br />if(znak) silnik = znak;<br /><br />if (silnik == '1')kroki_lewo();<br />if (silnik == '2')kroki_prawo();<br />if (silnik == '4')kroki_stop();[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 2 sty 2015, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leonos2000]]></name></author>
<updated>2015-01-02T20:47:54+01:00</updated>
<published>2015-01-02T20:47:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111853#p111853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111853#p111853"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111853#p111853"><![CDATA[
Przy tak napisanym programie cyfry byś musiał wysyłać cały czas spróbuj z czymś takim:<br />[syntax=c]//w kodzie zamiast ifów<br />silnik = uart_getc();<br />while(silnik != 0){<br />    switch(silnik){<br />    case '1':<br />    kroki_lewo();<br />    break<br />    case '2':<br />    kroki_prawo();<br />    break<br />    case '4':<br />    kroki_stop();<br />    break<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4851">leonos2000</a> — 2 sty 2015, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2015-01-02T20:16:32+01:00</updated>
<published>2015-01-02T20:16:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111847#p111847</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111847#p111847"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111847#p111847"><![CDATA[
Niestety nadal to samo próbuje cały czas innymi sposobami i za każdym razem po wysłaniu powiedzmy &quot;1&quot; wykonuje się jedynie 1 krok z 4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 2 sty 2015, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mknight9090]]></name></author>
<updated>2015-01-02T18:54:06+01:00</updated>
<published>2015-01-02T18:54:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111825#p111825</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111825#p111825"/>
<title type="html"><![CDATA[Re: Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111825#p111825"><![CDATA[
Hej, nie jestem pewny czy to coś pomoże, ale ja bym spróbował nie nadpisywać zmiennej &quot;silnik&quot; w każdym przebiegu pętli, tylko zamiast tego stworzyłbym jeszcze jedną zmienną, do niej pobierał znak z UARTa i dopiero jeżeli coś przyszło to dać to do zmiennej &quot;silnik&quot;. O coś takiego mi chodzi:<br /><br />[syntax=c]c=uart_getc();<br />if(c)<br />{<br />      silnik=c;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1566">mknight9090</a> — 2 sty 2015, o 18:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MijMleko]]></name></author>
<updated>2015-01-02T17:35:31+01:00</updated>
<published>2015-01-02T17:35:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111819#p111819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111819#p111819"/>
<title type="html"><![CDATA[Problem, Atmega32+HC05+silnik krokowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9990&amp;p=111819#p111819"><![CDATA[
Witam serdecznie<br /><br />Ostatnimi czasy przyszedł do mnie BT HC-05 i postanowiłem sterować silnikiem krokowym właśnie za jego pomocą.<br />Dodam że posiadam książkę Pana Mirka i korzystam z biblioteki MKUART zawartej na dvd, jestem jeszcze raczkujący w programowaniu lecz jak do tej pory dawałem sobie rade.<br /><br />Zadanie wyglądać ma następująco:<br /><br />Wysyłam cyfry z terminala, prędkość 9600<br />Kroki lewo= '1'<br />Kroki prawo= '2'<br />Kroki stop= '4'<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 02-12-2014<br /> *      Author: Mateusz<br /> *      **************************STEROWANIE SILNIKIEM KROKOWYM UNIPOLARNYM 5V Z URZYCIEM UKLADU UNL2003*********************<br /> */<br />//CZESTOTLIWOSC 8 MHz (ZEWNETRZNY KWARC)<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;//inicjacja uart<br /><br />//WYJSCIA STERUJACE SILNIKIEM<br />#define T1 (1&lt;&lt;PB0)<br />#define T2 (1&lt;&lt;PB1)<br />#define T3 (1&lt;&lt;PB2)<br />#define T4 (1&lt;&lt;PB3)<br /><br /><br />//KROKI SILNIKA<br />#define KROK1 PORTB |= T1; PORTB &amp;= ~( T2 | T3 | T4 )<br />#define KROK2 PORTB |= T2; PORTB &amp;= ~( T1 | T3 | T4 )<br />#define KROK3 PORTB |= T3; PORTB &amp;= ~( T1 | T2 | T4 )<br />#define KROK4 PORTB |= T4; PORTB &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 /><br />int main (void){<br /><br /><br />DDRB |= ( T1 | T2 | T3 | T4) ; //jako wyjscie<br />PORTB &amp;= ~(T1|T2|T3|T4);   //zanegowanie wyjsc (wyłączenie tranzystorów)<br /><br />//******<br />USART_Init( __UBRR );          // inicjalizacja UART<br />//******<br />sei();     //przerwania<br />//******<br />uart_puts(&quot;Oczekuje\n\r&quot;);<br /><br />//******<br />char silnik;     //deklaracja zmiennej silnik<br /><br /><br /><br />//***********************petla glowna**********************<br />        while(1) {<br /><br /><br /> silnik = uart_getc(); // zapis odbieranych znaków do zmiannej silnik<br /><br /><br /><br />      if (silnik == '1')kroki_lewo();<br /><br />      if (silnik == '2')kroki_prawo();<br /><br />      if (silnik == '4')kroki_stop();<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 />_delay_ms(3);<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 />_delay_ms(3);<br /><br />}<br /><br />//STOP<br />void kroki_stop(void){<br />PORTB &amp;= !(T1|T2|T3|T4);<br /><br />}[/syntax]<br /><br /><br />Niestety nie działa nie mam pojęcia dlaczego prosiłbym o podpowiedz  bądź poprawę bieżącego kodu.<br />Dodam że diody które sygnalizują poszczególną prace kroków się zaświecają i wykonują tylko raz nie wiem jak zapisać zmienną silnik tak aby praca była ciągła i UDR(mój silnik) nie był zerowany od razu a dopiero po włączeniu kolejnego zadania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6901">MijMleko</a> — 2 sty 2015, o 17:35</p><hr />
]]></content>
</entry>
</feed>