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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-20T00:03:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=2598&amp;mode</id>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2013-03-20T00:03:23+01:00</updated>
<published>2013-03-20T00:03:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31068#p31068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31068#p31068"/>
<title type="html"><![CDATA[Re: Platforma do szkoły]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31068#p31068"><![CDATA[
Grunt że działa i spełnia twoje oczekiwania <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=784">PawelGaj</a> — 20 mar 2013, o 00:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawcio0928]]></name></author>
<updated>2013-03-19T23:23:01+01:00</updated>
<published>2013-03-19T23:23:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31065#p31065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31065#p31065"/>
<title type="html"><![CDATA[Re: Platforma do szkoły]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31065#p31065"><![CDATA[
Już sobie napisałem coś takiego<br />w pętli głównej<br />[syntax=c]obsluz_wiadomosc_z_UART(uart_getc());[/syntax]<br />i funkcja do obsługi<br />[syntax=c]void obsluz_wiadomosc_z_UART(char wiadomosc)<br />{<br />switch(wiadomosc)<br />{<br />case 'w':<br />MOTOR1_FORWARD;<br />MOTOR2_BACK;<br />break;<br /><br />case 'a':<br />MOTOR1_FORWARD;<br />MOTOR2_FORWARD;<br />break;<br />case 's':<br />MOTOR2_STOP;<br />MOTOR1_STOP;<br />break;<br />case 'z':<br />MOTOR1_BACK;<br />MOTOR2_FORWARD;<br />break;<br />case 'd':<br />MOTOR1_BACK;<br />MOTOR2_BACK;<br />break;<br />}<br />}[/syntax]<br /><br />Może nie jest to jakoś bardzo rozbudowane ale grunt że działa<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=341">pawcio0928</a> — 19 mar 2013, o 23:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PawelGaj]]></name></author>
<updated>2013-03-19T22:35:57+01:00</updated>
<published>2013-03-19T22:35:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31060#p31060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31060#p31060"/>
<title type="html"><![CDATA[Re: Platforma do szkoły]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31060#p31060"><![CDATA[
W Mirkowych bibliotekach jak już pewnie zauważyłeś, masz funkcję :<br />[syntax=c]uart_getc();[/syntax]<br />Ona odczytuje jeden znak z bufora cyklicznego USART. Więc definiujesz sobie tablicę char`ów np. długą na 100 komórek. Tworzysz sobie również zmienną char znak i u08 DlugoscStringa. W pętli głównej programu ciągle zapisujesz do zmiennej znak to co jest w buforze. Potem robisz sobie if`a który sprawdza czy masz coś w tej zmiennej. Jeśli znak != 0, zapisujesz zmienną znak do komórki tablicy określonej w zmiennej DlugoscStringa, zerujesz zmienną znak i inkrementujesz zmienną DlugoscStringa. Myślę że w miarę logicznie to opisałem. Zamieszczam przykładowy kod.<br />[syntax=c]<br />while(1)<br />{<br />Znak = uart_getc();<br /><br />if(Znak != 0)// Sprawdzam czy zmienna znak cos zawiera<br />{<br />if(Znak == '\n')// Jesli znak == znak nowej lini nie zapisuj go tylko wyzeruj zmienną DlugoscStringa<br />{<br />DlugoscStringa = 0;<br />}<br />else// Jesli nie<br />{<br />String[DlugoscStringa] = Znak;// Zapisz znak do odpowiedniej komorki tablicy<br />DlugoscStringa++;// Zinkrementuj zmienną Dlugosc stringa<br />}<br />}<br />}<br />[/syntax]<br /><br />Nie wiem czy to będzie działać, pisałem to z głowy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=784">PawelGaj</a> — 19 mar 2013, o 22:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawcio0928]]></name></author>
<updated>2013-03-19T20:42:29+01:00</updated>
<published>2013-03-19T20:42:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31054#p31054</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31054#p31054"/>
<title type="html"><![CDATA[Platforma do szkoły]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2598&amp;p=31054#p31054"><![CDATA[
Cześć,<br />mam taką prośbę. A wiec na jutro muszę skończyć robota do szkoły i prosiłbym was o pomoc. A więc mam takie oto kody:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 03-01-2013<br /> *      Author: pawcio0928<br /> *      CPU: ATmega16<br /> *      F_CPU: 16Mhz<br /> *<br /> */<br />//dołącznie plików nagłówkowych<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;config.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;IR_DECODE/ir_decode.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br /><br /><br /><br /><br />char string[] = &quot;test modulu btm\r\n&quot;;<br /><br /><br /><br /><br /><br />//**********************pętla główna*****************************<br />int main(void)<br />{<br />//*************inicjacje*************<br />//****ledy<br />//1<br />DDRA |= LED1_PIN;//kierunek pinu wyjsciowy<br />PORTA |= LED1_PIN;//wyłączenie diody LED<br />//2<br />DDRA |= LED2_PIN;//kierunek pinu wyjsciowy<br />PORTA |= LED2_PIN;//wyłączenie diody LED<br />//3<br />DDRC |= LED3_PIN;//kierunek pinu wyjsciowy<br />PORTC |= LED3_PIN;//wyłączenie diody LED<br />//4<br />DDRD |= LED4_PIN;//kierunek pinu wyjsciowy<br />PORTD |= LED4_PIN;//wyłączenie diody LED<br />//5<br />DDRD |= LED5_PIN;//kierunek pinu wyjsciowy<br />PORTD |= LED5_PIN;//wyłączenie diody LED<br />//buzzer<br />DDRD |= BUZ_PIN;//kierunek pinu wyjsciowy<br />PORTD |= BUZ_PIN;//wyłączenie buzzera<br />//*****silniki<br />//motor 1<br />DDRB |= MOTOR1_PIN1;//kierunek pinu wyjsciowy<br />DDRC |= MOTOR1_PIN2;//kierunek pinu wyjsciowy<br />DDRD |= PWM1_PIN;//kierunek pinu wyjsciowy<br />PORTB &amp;= ~ MOTOR1_PIN1;//ustawienie 0<br />PORTC &amp;= ~ MOTOR1_PIN2;//ustawienie 0<br />PORTD |= PWM1_PIN;//ustawienie 1<br />//motor 2<br />DDRC |= MOTOR2_PIN1;//kierunek pinu wyjsciowy<br />DDRB |= MOTOR2_PIN2;//kierunek pinu wyjsciowy<br />DDRD |= PWM2_PIN;//kierunek pinu wyjsciowy<br />PORTC &amp;= ~ MOTOR2_PIN1;//ustawienie 0<br />PORTB &amp;= ~ MOTOR2_PIN2;//ustawienie 0<br />PORTD |= PWM2_PIN;//ustawienie 1<br />//****czujniki<br />DDRA &amp;= ~(SENSOR1_PIN | SENSOR2_PIN);//kierunek pinów wejsciowy<br />PORTA |= SENSOR1_PIN | SENSOR2_PIN; //podciągnięcie pinów do VCC<br />lcd_init();//inicjacja LCD<br />ir_init();//inicjacja IR<br /><br />USART_Init( __UBRR );<br />sei();//globalne przerwania<br />uart_puts(&quot;start...\r\n&quot;);<br /><br /><br />lcd_locate(0,0);<br /><br />_delay_ms(1000);<br />lcd_str(&quot;Elektronika Dla&quot;);<br />lcd_locate(1,3);<br />_delay_ms(1000);<br />lcd_str(&quot;Wszystkich&quot;);<br />_delay_ms(1000);<br />BUZ_TOG;<br />_delay_ms(500);<br />BUZ_TOG;<br />_delay_ms(100);<br />BUZ_TOG;<br />_delay_ms(200);<br />BUZ_TOG;<br />_delay_ms(300);<br />BUZ_TOG;<br />_delay_ms(100);<br />BUZ_TOG;<br />_delay_ms(100);<br />BUZ_TOG;<br />_delay_ms(100);<br />BUZ_TOG;<br />_delay_ms(100);<br />lcd_cls();<br /><br /><br /><br /><br /><br />//********pętla nieskończona*********<br />while(1)<br />{<br /><br /><br />}<br />}<br />//*************definicje funkcje**********************<br />//funkcja nie posiada argumentu zwraca 0 lub 1<br />uint8_t SENSOR1_SIGNAL(void)//funkcja do sprawdzania stanu na czujniku 1<br />{<br />if(SENSOR1_DOWN)//cos przed czujnikiem 1?<br />{<br />_delay_ms(20);//czas drgań styków<br />if(SENSOR1_DOWN) return 1;//jesli zasłonięty? zakończ funkcję - rezultat = 1<br />}<br />return 0;//jesli nie zasłonięty, zakończ funkcję, rezultat = 0<br />}<br />//funkcja nie posiada argumentu zwraca 0 lub 1<br />uint8_t SENSOR2_SIGNAL(void)//funkcja do sprawdzania stanu na czujniku 2<br />{//cos przed czujnikiem 2?<br />{<br />if(SENSOR2_DOWN)<br />_delay_ms(20);//czas drgań styków<br />if(SENSOR2_DOWN) return 1;//jesli zasłonięty? zakończ funkcję - rezultat = 1<br />}<br />return 0;//jesli nie zasłonięty, zakończ funkcję, rezultat = 0<br />}<br />[/syntax]<br /><br />[syntax=c]/*<br /> * config.h<br /> *<br /> *  Created on: 17-03-2013<br /> *      Author: pawcio0928<br /> *      CPU: ATmega16<br /> *      F_CPU: 16Mhz<br /> */<br /><br />#ifndef CONFIG_H_<br />#define CONFIG_H_<br /><br /><br />//********************************definicje**************************************<br /><br />//buzzer<br />#define BUZ_PIN(1&lt;&lt;PD7)//pin z buzzerem<br />#define BUZ_ON PORTD |= BUZ_PIN//ustawianie bitu<br />#define BUZ_OFF PORTD &amp;= ~ BUZ_PIN//zerowanie bitu<br />#define BUZ_TOG PORTD ^= BUZ_PIN//zmiana stanu bitu<br /><br />//****ledy<br />//1<br />#define LED1_PIN (1&lt;&lt;PA7)//pin z ledem 1<br />#define LED1_ON PORTA &amp;= ~ LED1_PIN//zerowanie bitu<br />#define LED1_OFF PORTA |=  LED1_PIN//ustawianie bitu<br />#define LED1_TOG PORTA ^= LED1_PIN//zmiana stanu bitu<br />//2<br />#define LED2_PIN (1&lt;&lt;PA6)//pin z ledem 2<br />#define LED2_ON PORTA &amp;= ~ LED2_PIN//zerowanie bitu<br />#define LED2_OFF PORTA |=  LED2_PIN//ustawianie bitu<br />#define LED2_TOG PORTA ^= LED2_PIN//zmiana stanu bitu<br />//3<br />#define LED3_PIN (1&lt;&lt;PC0)//pin z ledem 3<br />#define LED3_ON PORTC &amp;= ~ LED3_PIN//zerowanie bitu<br />#define LED3_OFF PORTC |=  LED3_PIN//ustawianie bitu<br />#define LED3_TOG PORTC ^= LED3_PIN//zmiana stanu bitu<br />//4<br />#define LED4_PIN (1&lt;&lt;PD3)//pin z ledem 4<br />#define LED4_ON PORTD &amp;= ~ LED4_PIN//zerowanie bitu<br />#define LED4_OFF PORTD |=  LED4_PIN//ustawianie bitu<br />#define LED4_TOG PORTD ^= LED4_PIN//zmiana stanu bitu<br />//5<br />#define LED5_PIN (1&lt;&lt;PD2)//pin z ledem 5<br />#define LED5_ON PORTD &amp;= ~ LED5_PIN//zerowanie bitu<br />#define LED5_OFF PORTD |=  LED5_PIN//ustawianie bitu<br />#define LED5_TOG PORTD ^= LED5_PIN//zmiana stanu bitu<br /><br />//*****silniki<br />//motor 1<br />#define MOTOR1_PIN1 (1&lt;&lt;PB4)//pin dla 1 kanału sterującego silnikiem 1<br />#define MOTOR1_PIN2 (1&lt;&lt;PC6)//pin dla 2 kanału sterującego silnikiem 1<br />#define PWM1_PIN (1&lt;&lt;PD5)//pin do sterowania PWM silnika 1<br />//polecenia sterujące silnikiem 1<br />#define MOTOR1_FORWARD PORTB |= MOTOR1_PIN1; PORTC &amp;= ~ MOTOR1_PIN2 //włączenie silnika 1 do przodu<br />#define MOTOR1_BACK PORTB &amp;= ~ MOTOR1_PIN1; PORTC |= MOTOR1_PIN2//włączenie silnika 1 do tyłu<br />#define MOTOR1_STOP PORTB &amp;= ~ MOTOR1_PIN1; PORTC &amp;= ~ MOTOR1_PIN2//wyłączenie silnika 1<br />#define PWM1_GO PORTD |= PWM1_PIN //włączenie PWM silnika 1<br />#define PWM1_STOP PORTD &amp;= ~ PWM1_PIN//wyłączenie PWM silnika 1<br />//motor 2<br />#define MOTOR2_PIN1 (1&lt;&lt;PC7)//pin dla 1 kanału sterującego silnikiem 2<br />#define MOTOR2_PIN2 (1&lt;&lt;PB3)//pin dla 2 kanału sterującego silnikiem 2<br />#define PWM2_PIN (1&lt;&lt;PD4)//pin do sterowania PWM silnika 2<br />//polecenia sterujące silnikiem 2<br />#define MOTOR2_FORWARD PORTC &amp;= ~ MOTOR2_PIN1; PORTB |= MOTOR2_PIN2 //włączenie silnika 2 do przodu<br />#define MOTOR2_BACK PORTC |= MOTOR2_PIN1; PORTB &amp;= ~ MOTOR2_PIN2//włączenie silnika 2 do tyłu<br />#define MOTOR2_STOP PORTC &amp;= ~ MOTOR2_PIN1; PORTB &amp;= ~ MOTOR2_PIN2//wyłączenie silnika 2<br />#define PWM2_GO PORTD |= PWM2_PIN //włączenie PWM silnika 2<br />#define PWM2_STOP PORTD &amp;= ~ PWM2_PIN//wyłączenie PWM silnika 2<br />//czujniki otoczenia<br />#define SENSOR1_PIN (1&lt;&lt;PA1)//pin z czujnikiem 1<br />#define SENSOR2_PIN (1&lt;&lt;PA2)//pin z czujnikiem 2<br />#define SENSOR1_DOWN !(PINA &amp; SENSOR1_PIN)//makrosprawdzające czy jest stan niski na czujniku 1<br />#define SENSOR2_DOWN !(PINA &amp; SENSOR2_PIN)//makrosprawdzające czy jest stan niski na czujniku 2<br /><br />//ir<br /><br />//wyswietlacz<br /><br />//czujniki lini<br /><br />//chwytak<br /><br />//*************************deklaracje funkcji******************************<br />//do czujników sharp<br />uint8_t SENSOR1_SIGNAL(void);//deklaracja funkcji bez argumentów do sprawdzania stanu czujnika 1<br />uint8_t SENSOR2_SIGNAL(void);//deklaracja funkcji bez argumentów do sprawdzania stanu czujnika 2<br /><br /><br /><br />#endif /* CONFIG_H_ */<br />[/syntax]<br /><br /><br />Plus biblioteki załączone z książek. Napisałem już program do wysyłania informacji z procesora do terminala a teraz chciałbym odwrotnie, tzn że jak wyślę jakiś string to uC odbierze go i załączy silniki. Czy pomożecie? Proszę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=341">pawcio0928</a> — 19 mar 2013, o 20:42</p><hr />
]]></content>
</entry>
</feed>