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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-27T16:56:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17142&amp;mode</id>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-12-27T16:40:20+01:00</updated>
<published>2016-12-27T16:40:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178321#p178321</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178321#p178321"/>
<title type="html"><![CDATA[Re: Uart odbieranie stringów - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178321#p178321"><![CDATA[
<div class="quotetitle">Tojmak napisał(a):</div><div class="quotecontent"><br />[syntax=c]//<br />    if(!log_get_value(&amp;test))<br />    {}<br />    send_value_dec((int)test);[/syntax]<br /></div><br />Przy takim zapisie funkcja <em><strong>send_value_dec()</strong></em> będzie wykonana niezależnie od tego, czy warunek <em><strong>if(!log_get_value(&amp;test))</strong></em> będzie spełniony, czy też nie.<br />Zapewne nie to było Twoim zamiarem <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=14165">andrews</a> — 27 gru 2016, o 16:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-12-27T16:32:06+01:00</updated>
<published>2016-12-27T16:32:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178320#p178320</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178320#p178320"/>
<title type="html"><![CDATA[Re: Uart odbieranie stringów - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178320#p178320"><![CDATA[
W pliku main.c od linii 61 do 63:<br />[syntax=c]if(!log_get_value(&amp;test))      <br />{}<br />send_value_dec((int)test);[/syntax]<br />Tak ma być?  <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=7157">anshar</a> — 27 gru 2016, o 16:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tojmak]]></name></author>
<updated>2016-12-27T15:49:32+01:00</updated>
<published>2016-12-27T15:49:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178316#p178316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178316#p178316"/>
<title type="html"><![CDATA[Re: Uart odbieranie stringów - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178316#p178316"><![CDATA[
Kod poprawiony, mam nadzieję, że teraz jest dobrze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7491">Tojmak</a> — 27 gru 2016, o 15:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2016-12-26T16:39:51+01:00</updated>
<published>2016-12-26T16:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178261#p178261</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178261#p178261"/>
<title type="html"><![CDATA[Re: Uart odbieranie stringów - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178261#p178261"><![CDATA[
Wstaw prawidłowo kod.<br /><br />Wysłane z mojego Kruger&amp;Matz DRIVE 4 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 26 gru 2016, o 16:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tojmak]]></name></author>
<updated>2016-12-27T16:56:43+01:00</updated>
<published>2016-12-26T14:35:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178247#p178247</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178247#p178247"/>
<title type="html"><![CDATA[Uart odbieranie stringów - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17142&amp;p=178247#p178247"><![CDATA[
Witam,<br /><br />mam problem z transmisją za pomocą modułu UART. To co chcę osiągnąć to z poziomu Matlaba móc sterować wartością PWM podawaną na silnik. Algorytm działania jest następujący -&gt; Z Matlaba wysyłam wartość (typu string) np. &quot;1700&quot;. Mikrokontroler odbiera tą wartość, a po odebraniu jest odsyłana z powrotem do Matlaba. Problem jest taki, że poza odebraną wartością 1700 co jakiś czas odbieram np. '17', albo tym podobne. Czy mógł by ktoś pomóc? Pewnie to jakiś prosty błąd, nie potrafię sobie jednak z tym poradzić na chwilę obecną. Poniżej zamieszczam kod.<br /><br />Funkcja main<br /><br />[syntax=c]/* %%%%%%%%%%%%%%%%% */<br />////// ŻYROSKOP ///////<br />/* %%%%%%%%%%%%%%%%% */<br /><br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;avr/wdt.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/power.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;string.h&quot;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;lcd.h&quot;<br />#include &quot;zyroskop.h&quot;<br />#include &quot;zaokraglenie.h&quot;<br />#include &quot;timery.h&quot;<br />#include &quot;uart.h&quot;<br />#include &quot;porty.h&quot;<br />#include &quot;pwm_switch_control.h&quot;<br /><br />/* %%%%%%%%%%%%% */<br />////// MAIN ///////<br />/* %%%%%%%%%%%%% */<br /><br />int main()<br />{<br />uint32_t test = 1800;<br /><br />porty();// deklaracja portów<br /><br />LCD_Initalize();// inicjalizacja LCD<br />LCD_Clear();// czyszczenie LCD<br /><br />Inicjacja();// inicjalizacja I2C<br />initgyro();// inicjalizacja zyroskopu<br /><br />korekcja_gyro();// kalibracja żyroskopu<br /><br />timery(); // ustawienie timerów do przerwań<br /><br />initialize_UART();// konfiguracja transmisji UART<br /><br />_delay_ms(10);<br /><br />sei();// włączenie globalnej obsługi przerwań<br /><br /><br />    while(1)<br />     {<br />    LCD_GoTo(1,0);<br />    lcd_int(test);<br /><br />    pwm_control(); // sterowanie szerokościa pwm przyciskami<br /><br />    PWM_1 = 900 + (63736.0-(float)pozycja_PWM_1)/2.0; // zmienna na wyświetlacz pokazująca szerokośc PWM (w us)<br /><br />    ogranicznik_PWM();// ogarnicznik szerokości PWM<br /><br />    if(!log_get_value(&amp;test))<br />    {}<br />send_value_dec((int)test);<br /><br />       LCD_GoTo(0,1);<br />       LCD_WriteText(&quot;S&quot;);<br /><br />    }<br />}[/syntax]<br /><br />Funkcja log_get_value()<br /><br />[syntax=c]uint8_t log_get_value(uint32_t* value)<br />{<br />if (log_flag)// tą wartośc do main'a dac by moc sterowac do jakiej zmiennej wartosc ma byc przypisana - np. gdy log_flag = 1 to pwm, gdy 2 to wzmocnienie<br />{<br />char str&#91;256&#93; = {0,};<br />uint8_t i = 0;<br />uint8_t data = 0;<br />while ( (data = uart_getc()) != 0x0A)<br />{<br />str&#91;i&#93; = data;<br />i++;<br />}<br />*value = atoi(str);<br />log_flag--;<br />return 1;<br />}<br />return 0;<br />}[/syntax]<br /><br />Funkcja send_value_dec()<br /><br />[syntax=c]void send_value_dec(int value)<br />{<br />char string&#91;17&#93;;<br />itoa(value, string, 10);<br />send_string(string);<br />}[/syntax]<br /><br />Funkcja uart_getc() + przerwanie - zapożyczone z książki pana Mirka<br /><br />[syntax=c]char uart_getc(void)<br />{<br />    if ( UART_RxHead == UART_RxTail ) return 0;<br /><br />    UART_RxTail = (UART_RxTail + 1) &amp; UART_RX_BUF_MASK;<br /><br />    return UART_RxBuf&#91;UART_RxTail&#93;;<br />}<br /><br />ISR(USART_RX_vect)<br />{<br />    uint8_t tmp_head;<br />    char data;<br /><br />    data = UDR0;<br />    flaga = 1;<br /><br />    if(data == 0x0A)<br />    {<br />    log_flag = 1;<br />    }<br /><br />    tmp_head = ( UART_RxHead + 1) &amp; UART_RX_BUF_MASK;<br /><br />    if ( tmp_head == UART_RxTail )<br />    {<br /><br />    } else<br />    {<br />UART_RxHead = tmp_head; <br />UART_RxBuf&#91;tmp_head&#93; = data; <br />    }<br />}[/syntax]<br /><br />Proszę o pomoc i pozdrawiam serdecznie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7491">Tojmak</a> — 26 gru 2016, o 14:35</p><hr />
]]></content>
</entry>
</feed>