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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-17T17:43:46+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=12032&amp;mode</id>
<entry>
<author><name><![CDATA[DanielM]]></name></author>
<updated>2015-06-17T17:43:46+01:00</updated>
<published>2015-06-17T17:43:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=132005#p132005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=132005#p132005"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=132005#p132005"><![CDATA[
EDIT: problem wyjaśniony<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9010">DanielM</a> — 17 cze 2015, o 17:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-06-17T09:48:27+01:00</updated>
<published>2015-06-17T09:48:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131986#p131986</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131986#p131986"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131986#p131986"><![CDATA[
<div class="quotetitle">DanielM napisał(a):</div><div class="quotecontent"><br />Ok to ruszam do czytania GB <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> dobrze przewidziałem, żeby ją od razu z BB zamówić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Łeee no to panie ... normalnie teraz to linijką po łapkach! To ty masz pod ręką GB ... i nie zajrzałeś jeszcze ? <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=54">mirekk36</a> — 17 cze 2015, o 09:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DanielM]]></name></author>
<updated>2015-06-17T09:47:09+01:00</updated>
<published>2015-06-17T09:47:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131984#p131984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131984#p131984"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131984#p131984"><![CDATA[
Ok to ruszam do czytania GB <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> dobrze przewidziałem, żeby ją od razu z BB zamówić <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=9010">DanielM</a> — 17 cze 2015, o 09:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-06-17T09:43:58+01:00</updated>
<published>2015-06-17T09:43:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131983#p131983</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131983#p131983"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131983#p131983"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Z kolei if(buf[1]=='B') działa, jeżeli wysyłam B w 3 znaku. Nic z tego nie rozumiem  Mógłby ktoś mi to jakoś rozjaśnić?<br /></div><br />No nie rozumiesz tego, że pętla while działa setki tysięcy razy na sekundę ... więc polecenie uart_gets() w tej pętli nie ma kompletnie sensu, spróbuj sobie przeanalizować jak to będzie działać na wysyłanie co jakiś czas danych z kompa ... jak dobrze przeanalizujesz to stwierdzisz - że to co wyżej opisałeś to właśnie tak ma działać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli cuda wianki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ZANIM odbierzesz string NAJPIERW trzeba się upewnić, że taki string dotarł w pełni do bufora cyklicznego ... no ale .... jeszcze raz się powtórzę - specjalnie tego nie opisywałem w Bluebooku (tu chciałem żeby czytelnik najpierw dobrze zapoznał się z samym buforowaniem cyklicznym i wysyłaniem) Resztę opisałem w Greenbooku. Ale spokojnie próbuj - zrobienie nawet prostszej metody odbioru stringów niż na z GB też jest możliwe a na tym forum temat był już ze 100 razy poruszany i sporo osób sobie z tym poradziło - prezentując tu zresztą swoje kody.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 cze 2015, o 09:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DanielM]]></name></author>
<updated>2015-06-17T09:37:43+01:00</updated>
<published>2015-06-17T09:37:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131982#p131982</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131982#p131982"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131982#p131982"><![CDATA[
Dobrze wiem o tym, że to herezje, ale już na wszystkie możliwe sposoby próbowałem stąd takie coś powstało.<br />Był mały edit jak Pan odpowiedał na post. <br />Chciałbym wysyłać z aplikacji napisanej w C# do uC jakieś instrukcje i tam wysyłam to jako string czyli &quot;&quot; z '0' na końcu tak jak to jest w stringach i porównywać to w ifie.<br />Mógłby Pan jeszcze raz spojrzeć na kod i odpisać czemu takie cuda z próbą wyświetlania buf[0] i buf[1] powstają?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9010">DanielM</a> — 17 cze 2015, o 09:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-06-17T09:28:11+01:00</updated>
<published>2015-06-17T09:28:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131980#p131980</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131980#p131980"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131980#p131980"><![CDATA[
niestety (nie obraź się) ale te twoje próby to na razie herezje w języku C<br /><br />1.                if(buf==&quot;AA&quot;)<br />2.                if(buf=='AA')<br />3.                if(buf[0]=='A' &amp;&amp; buf[1]=='A')<br /><br />ad.1 to nie jest Bascom i nie ma takiego sprawdzania stringa typu str1==str1<br />ad.2 to samo co wyżej PLUS .... panie kochany musisz zrozumieć co oznacza w C apostrof a co cudzysłów i masz to DOKŁADNIE w Bluebooku opisane zajrzyj proszę ok?<br />ad.3 no to może nie jest już herezja w C bo tak można byłoby sprawdzać ale wyobrażasz sobie za każdym różnym stringiem tak to rozpisywać ?<br /><br />zainteresuj się takimi funkcjami wbudowanymi jak strstr() czy np memcpy() .... one służą do porównywania stringów czy tablic czy zawartości pamięci ...<br /><br />A jeśli interesuje cię wygodny odbiór i parsowanie stringów, obsługa tego w zdarzeniach - to polecam jednak Greenbooka i jeden z ostatnich w nim rozdziałów gdzie od A do Z jest to opisane, a ćwiczenia praktyczne do tego masz np w poradnikach wideo n/t ATNEL-WIFI232-T<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 cze 2015, o 09:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DanielM]]></name></author>
<updated>2015-06-17T09:32:41+01:00</updated>
<published>2015-06-17T09:16:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131978#p131978</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131978#p131978"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131978#p131978"><![CDATA[
1. Kod poprawiony<br />2. Trochę poczytałem, ale widzę, że w &quot;projekcie wielozadaniowym&quot; dot. właśnie rozdziału systemów czasu rzeczywistego, odbiór przez UART, czyli użycie funkcji uart_getc() jest też zrobione jako warunek na if'ie: <br />[syntax=c]input = uart_getc();<br /><br />if(input=='1') LED2_ON;<br />else<br />if(input=='2') LED2_OFF;<br />else<br />if(input=='3') lcd_blink ^= 1;[/syntax]<br />To co &quot;próbowałem zrobić&quot; wyżej na if'ach działało, ale jak wstawiam taki sam warunek w pętlę to wykonuje się ona tylko raz. Stąd moje pytanie, jak zrobić żeby wykonywała się cały czas i w zależności od innego odebranego znaku nastąpiło przerwanie wykonywania pętli?<br /><br />3. Mam kolejny problem z odbieraniem stringów. Z poradnika Antystatycznego mam taką funkcję do odbioru stringów:<br />[syntax=c]void uart_gets(char *buffer)<br />{<br />do *buffer = uart_getc();<br />while(*buffer++);<br />}[/syntax]<br /><br />W main'ie wywołuje ją w taki sposób:<br />[syntax=c]uart_gets(buf);[/syntax]<br />gdzie buf to:<br />[syntax=c]char buf&#91;UART_RX_BUF_SIZE&#93;;[/syntax]<br /><br />I wszystko śmiga, tylko jeżeli teraz chciałbym w if'ie w zależności od odebranego stringa coś robić, to jak należy taki warunek skonstruować?<br />Próbowałem chyba na wszystkie możliwe sposoby:<br />[syntax=c]while(1) {<br />uart_gets(buf);<br />                if(buf==&quot;AA&quot;)<br />                if(buf=='AA')<br />                if(buf&#91;0&#93;=='A' &amp;&amp; buf&#91;1&#93;=='A')<br />// działa tylko:<br />               if(buf&#91;0&#93;=='A')[/syntax]<br />jak już program wejdzie w ten warunek if(buf[0]=='A') to jeżeli dam w tym warunku uart_puts(buf[0]) to nic nie wyświetla na terminalu.<br />Z kolei if(buf[1]=='B') działa, jeżeli wysyłam B w 3 znaku. Nic z tego nie rozumiem <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Mógłby ktoś mi to jakoś rozjaśnić?<br /><br />[syntax=c]#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;<br />char buf&#91;UART_RX_BUF_SIZE&#93;;<br />char cos;<br /><br />int main(void) {<br /><br />USART_Init( __UBRR );// inicjalizacja UART<br /><br />sei();// globalne odblokowanie przerwań<br /><br /><br />// pętla nieskończona<br />while(1) {<br />uart_gets(buf);<br /><br />if(buf&#91;0&#93;=='A') {// wykonuje się tylko raz pętla przy wysłaniu 'A'<br />uart_puts(&quot;Test UART A &quot;);// wyślij tekst<br />for(int i=0;i&lt;=UART_RX_BUF_SIZE;i++) {<br />//uart_putc('\r');// wyślij znak CR (enter)<br />//uart_putc('\n');// wyślij znak LF (nowa linia)<br />uart_puts(&quot;Buf&#91;&quot;);// wyślij tekst<br />uart_putint(i,10);<br />uart_puts(&quot;&#93;:&quot;);<br />cos = buf&#91;i&#93;;<br />uart_puts(cos);<br />uart_puts(&quot;.&quot;);// wyślij tekst<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');<br />_delay_ms(500);// odczekaj 0,5 sekundy<br />}<br /><br /><br />}<br /><br />if(buf&#91;1&#93;=='B') {// działa tak jak trzeba<br /><br />uart_puts(&quot;Test UART B &quot;);// wyślij tekst<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');// wyślij znak LF (nowa linia)<br />uart_puts(&quot;Buf&#91;1&#93;:&quot;);// wyślij tekst<br />cos = buf&#91;1&#93;;<br />uart_puts(buf);<br />uart_puts(&quot;.&quot;);// wyślij tekst<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');<br />_delay_ms(500);// odczekaj 0,5 sekundy<br />}<br />/*for( int i=0;i&lt;15;i++) {*/<br />uart_puts(buf);<br />//_delay_ms(500);<br />//}<br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9010">DanielM</a> — 17 cze 2015, o 09:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-06-16T16:14:14+01:00</updated>
<published>2015-06-16T16:14:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131925#p131925</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131925#p131925"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131925#p131925"><![CDATA[
<div class="quotetitle">DanielM napisał(a):</div><div class="quotecontent"><br />Czy mógłby ktoś pomóc/nakierować co tu jest nie tak?<br /></div><br />Popraw kod jak pisze wyżej Jaglarz<br /><br />a w odpowiedzi na pytanie - ja też zadam pytanie ... czy możesz doczytać książkę do końca ? bo się widzę zatrzymałeś i masz problem a w dalszych rozdziałach masz właśnie podpowiedzi w tym zakresie i przykłady na DVD .... czemu się więc zatrzymujesz ?<br /><br />Przeczytaj w książce rozdział &quot;Wstęp do systemów czasu rzeczywistego&quot; i popatrz tam na przykłady tego co chcesz zrobić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 cze 2015, o 16:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jerrylu]]></name></author>
<updated>2015-06-16T16:17:13+01:00</updated>
<published>2015-06-16T16:12:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131924#p131924</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131924#p131924"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131924#p131924"><![CDATA[
Wywal warunek:<br />[syntax=c]if(zmienna!='A') break;[/syntax]<br /><br />Zamiast niego przenieś z początku pętli:<br /><br />[syntax=c]zmienna = uart_getc();[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />i poczytaj o instrukcji break <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Poza tym nie rozumiem co ma robić ta pętla dla A?<br />Mogły by być dwa analogiczne warunki jak dla B...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8719">jerrylu</a> — 16 cze 2015, o 16:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2015-06-16T15:55:13+01:00</updated>
<published>2015-06-16T15:55:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131917#p131917</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131917#p131917"/>
<title type="html"><![CDATA[Re: UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131917#p131917"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 16 cze 2015, o 15:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DanielM]]></name></author>
<updated>2015-06-16T17:36:18+01:00</updated>
<published>2015-06-16T15:43:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131915#p131915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131915#p131915"/>
<title type="html"><![CDATA[UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12032&amp;p=131915#p131915"><![CDATA[
Witam,<br />W moim programie chciałbym wysyłać przez terminal z komputera na początek jakiś znak i w zależności od wysłanego znaku<br />chciałbym, aby po odebraniu go wykonywał się inny ciąg instrukcji- z atmegi wysyłany byłby jakiś tekst na terminal.<br />Wzorując się BB i biblioteką UART wszystko działa tak jak trzeba, jeśli w pętli while(1) warunki są na if'ach. Chciałbym jednak zrobić te<br />warunki jako pętle i tutaj występuje problem, ponieważ zamiast pętla wykonywać się cały czas, wykonuje się tylko raz.<br />Dołączam kod:<br />[syntax=c]#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;<br />char zmienna;<br /><br /><br />int main(void) {<br /><br />USART_Init( __UBRR );// inicjalizacja UART<br /><br />sei();// globalne odblokowanie przerwań<br /><br /><br />// pętla nieskończona<br />while(1) {<br />zmienna = uart_getc();<br /><br />while(zmienna=='A') {// wykonuje się tylko raz pętla przy wysłaniu 'A'<br />zmienna = uart_getc();<br />uart_puts(&quot;Test UART A &quot;);// wyślij tekst<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');// wyślij znak LF (nowa linia)<br />_delay_ms(500);// odczekaj 0,5 sekundy<br />if(zmienna!='A') break;<br />}<br /><br />if(zmienna=='B') {// działa tak jak trzeba<br /><br />uart_puts(&quot;Test UART B &quot;);// wyślij tekst<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');// wyślij znak LF (nowa linia)<br />_delay_ms(500);// odczekaj 0,5 sekundy<br />}<br />}<br /><br />}[/syntax]<br /><br />Czy mógłby ktoś pomóc/nakierować co tu jest nie tak?<br />Pozdrawiam,<br />Daniel<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9010">DanielM</a> — 16 cze 2015, o 15:43</p><hr />
]]></content>
</entry>
</feed>