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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-18T22:44:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=7807&amp;mode</id>
<entry>
<author><name><![CDATA[Alan Bejnarowicz]]></name></author>
<updated>2014-07-18T22:44:30+01:00</updated>
<published>2014-07-18T22:44:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88033#p88033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88033#p88033"/>
<title type="html"><![CDATA[Re: Maigc Ledy i UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88033#p88033"><![CDATA[
Bardzo dziękuję wszystko działa jak trzeba. Jeszcze raz dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2551">Alan Bejnarowicz</a> — 18 lip 2014, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-07-18T21:38:46+01:00</updated>
<published>2014-07-18T21:38:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88028#p88028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88028#p88028"/>
<title type="html"><![CDATA[Re: Maigc Ledy i UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88028#p88028"><![CDATA[
Najlepiej jakby na końcu danych był znak specjalny, bo wtedy wiesz kiedy analizować odebraną ramkę. Jak go nie ma to program może wyglądać tak:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;ws2812.h&quot;<br /><br />char buf&#91;20&#93; = &quot;&quot;;<br /><br />void prase_and_send(char * bufor);<br />void timer_init(void);<br /><br />volatile uint8_t Timer1, Timer2;<br /><br />int main(void)<br />{<br />char znak;<br />uint8_t i = 0;<br /><br />timer_init();<br />USART_Init(__UBRR);<br />ws2812_init();<br />sei();<br /><br />while (1)<br />{<br />znak = uart_getc(); //pobierz znak<br />if(znak) //jak jest znak<br />{<br />buf&#91;i&#93; = znak; //dopisz na koniec bufora<br />buf&#91;i+1&#93; = '\0'; //koniec łańcucha<br />++i;<br />Timer2 = 20; //odrocz analizę<br />}<br />if(0 == Timer2 &amp;&amp; buf&#91;0&#93;)<br />{<br />prase_and_send(buf); //analizuj<br />buf&#91;0&#93; = 0; //kasuj bufor<br />i = 0;<br />}<br />}<br />}<br /><br />void prase_and_send(char * bufor)<br />{<br />uint8_t R, G, B, cnt;<br />R = G = B = cnt = 0;<br /><br />char * wsk;<br /><br />wsk= strtok(bufor, &quot;^&quot;);<br />if(wsk) R = atoi(wsk);<br /><br />wsk = strtok(NULL, &quot;^&quot;);<br />if(wsk) G = atoi(wsk);<br /><br />wsk = strtok(NULL, &quot;^&quot;);<br />if(wsk) B = atoi(wsk);<br /><br />wsk = strtok(NULL, &quot;^&quot;);<br />if(wsk) cnt = atoi(wsk);<br />send_rgb(R, G, B);<br />}<br /><br /><br /><br />void timer_init(void)<br />{<br />OCR0A = F_CPU/1024/100 - 1;//100Hz<br />TCCR0A |= (1&lt;&lt;WGM01); //CTC<br />TCCR0B |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); //1024<br />TIMSK0 |= (1&lt;&lt;OCIE0A);<br /><br />}<br />ISR(TIMER0_COMPA_vect)<br />{<br />uint8_t n;<br />n = Timer1; /* 100Hz timer1 */<br />if (n) Timer1 = --n;<br />n = Timer2; /* 100Hz timer2 */<br />if (n) Timer2 = --n;<br />}[/syntax]<br />Aby odczytać cały łańcuch po każdym znaku analiza jest odraczana na kolejne 200ms. Jeśli znaki przestaną nadchodzić to łańcuch znaków zostanie przetworzony i w kolejnym kroku wyczyszczony.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 18 lip 2014, o 21:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Alan Bejnarowicz]]></name></author>
<updated>2014-07-18T17:59:44+01:00</updated>
<published>2014-07-18T17:59:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88008#p88008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88008#p88008"/>
<title type="html"><![CDATA[Maigc Ledy i UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7807&amp;p=88008#p88008"><![CDATA[
Witam. Buduję lampkę, która zmienia kolor za pomocą smartphona. Jest na nim  napisana aplikacja, która wysyła tak dane:<br />R^G^B^cnt czyli np.  255^130^0^1. Liczby R,G,B pewnie wiecie co oznaczają, a cnt to liczba zapalonych led.<br />No i problem jest taki, że nie mogę odpowiednio odebrać danych przez UART. Musiało by być to tak, że zmienna buf od razu ma cały łańcuch, a nie po kolei. Kod programu:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 18-07-2014<br /> *      Author: Alan<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />char buf;<br /><br />void prase_and_send(char bufor);<br /><br />char * wsk ,*reszta;<br /><br />uint8_t R;<br />uint8_t G;<br />uint8_t B;<br />uint8_t cnt;<br /><br /><br />#include &quot;ws2812.h&quot;<br />#include &quot;MKUART/mkuart.h&quot;<br /><br /><br />int main (void) {<br />    USART_Init(__UBRR);<br />ws2812_init();<br />sei();<br /><br /><br />while(1) {<br /><br />buf += uart_getc();<br /><br />prase_and_send(buf);<br /><br />}<br /><br /><br /><br />//prase_and_send(buf);<br />}<br /><br /><br />void prase_and_send(char bufor) {<br />//char * wsk ,*reszta;<br /><br />wsk = strtok_r(bufor, &quot;^&quot;, &amp;reszta);<br />R=atoi(wsk);<br /><br /><br /><br />wsk = strtok_r(NULL, &quot;^&quot;, &amp;reszta);<br />G=atoi(wsk);<br /><br /><br /><br /><br />wsk = strtok_r(NULL, &quot;^&quot;, &amp;reszta);<br />B=atoi(wsk);<br /><br /><br /><br />wsk = strtok_r(NULL, &quot;^&quot;, &amp;reszta);<br />cnt=atoi(wsk);<br />send_rgb(R,G,B);<br /><br /><br />}[/syntax]<br />         <br />                                                                                                                                          Thanks from the mountain:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2551">Alan Bejnarowicz</a> — 18 lip 2014, o 17:59</p><hr />
]]></content>
</entry>
</feed>