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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-14T08:44:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14183&amp;mode</id>
<entry>
<author><name><![CDATA[gonzicz]]></name></author>
<updated>2016-01-14T08:44:36+01:00</updated>
<published>2016-01-14T08:44:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150551#p150551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150551#p150551"/>
<title type="html"><![CDATA[Re: Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150551#p150551"><![CDATA[
Zapraszam do obejrzenia filmów p. Mirka WIFI232 (RS232), tam mam masz opis jak rejestrować swoja funkcję i zapalać diodę LED<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11908">gonzicz</a> — 14 sty 2016, o 08:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-14T00:35:12+01:00</updated>
<published>2016-01-14T00:35:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150545#p150545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150545#p150545"/>
<title type="html"><![CDATA[Re: Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150545#p150545"><![CDATA[
uart_getc() pobiera znak z bufora i już tego znaku tam nie ma. Więc kolejne wywołanie uart_getc() nie pobierze tego pierwszego znaku, tylko już kolejny. Dlatego aby móc użyć tej samej wartości, to musisz pobrać z bufora znak do zmiennej i operować w warunkach na tej zmiennej.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 sty 2016, o 00:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k.wozniak]]></name></author>
<updated>2016-01-14T00:09:25+01:00</updated>
<published>2016-01-14T00:09:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150543#p150543</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150543#p150543"/>
<title type="html"><![CDATA[Re: Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150543#p150543"><![CDATA[
Rozwiązanie jak najbardziej działa, dziękuje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Czyli w momencie wysłania jednego znaku, żeby nie zalegał on w buforze należy go przypisać do zmiennej, która pobierze cała ramkę - bajt z bufora?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11907">k.wozniak</a> — 14 sty 2016, o 00:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-13T23:52:57+01:00</updated>
<published>2016-01-13T23:52:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150541#p150541</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150541#p150541"/>
<title type="html"><![CDATA[Re: Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150541#p150541"><![CDATA[
Funkcja uart_getc() pobiera Ci daną odebraną z rs232. Sprawdzasz czy jest to pierwszy znak. A za chwilę robisz znowu to samo, czyli pobierasz kolejnych daną (już nową wartość) i sprawdzasz czy jest to następna litera. Więc jeden odebrany bajt sprawdzany jest tylko z jednym znakiem.<br />Musisz pobrać odebrany bajt do zmiennej i ją porównywać z kolejnymi znakami:<br />[syntax=c]znak = uart_getc();<br />if(znak == 'B')<br />{<br />    LEDTOG;                                //wyslanie literki A powoduje zapalenie diody w pinie PB1<br />}<br />if (znak == 'A')<br />{<br />     LED2TOG;<br />}[/syntax]<br />Oczywiście musisz jeszcze zadeklarować zmienną znak. Warunki możesz także zrobić na switch / case.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 13 sty 2016, o 23:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2016-01-13T23:35:04+01:00</updated>
<published>2016-01-13T23:35:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150538#p150538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150538#p150538"/>
<title type="html"><![CDATA[Re: Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150538#p150538"><![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> — 13 sty 2016, o 23:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k.wozniak]]></name></author>
<updated>2016-01-13T23:46:10+01:00</updated>
<published>2016-01-13T23:11:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150536#p150536</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150536#p150536"/>
<title type="html"><![CDATA[Zapalanie diody przez UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14183&amp;p=150536#p150536"><![CDATA[
Witam wszystkich. Na wstępie chciałbym dodać, że jestem początkującym programistą i korzystam z BB.<br />Mój problem dotyczy zmiany stanu diody przez UART'a. Problem polega na tym, że dioda nie zawsze zmienia swój stan mimo wysłania określonego znaku ASCII z terminala. Dioda na Przejściówce RS&lt;--&gt; USB mignie ale dioda nie zawsze zmieni swój stan. Bibliotekę UART'a mam z BB, prędkość przesyłu 9800bps, kwarc zewnętrzny 11,0592 MHz, FuseBity ustawione poprawni przez mkAVRCalculator, taktowanie procesora w Eclips Mars także ustawione na ww. Zauważyłem, że problem pojawia się w momencie, gdy w pętli głównej programu daj więcej niż jedną instrukcję 'if' z odbiorem znaku przez UART. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />#include &quot;UART/UART.h&quot; // wywolanie biblioteki UART'a<br /><br /><br />#define LED_PB1 (1&lt;&lt;PB1) // makro pinu PB1<br />#define LEDTOG PORTB ^= LED_PB1// zmiana stanu diody PB1<br />//#define LED_ON  PORTB |= LED_PB1 // wlaczenie diody<br />//#define LED_OFF PORTB &amp;= ~(LED_PB1) // wylaczenie diody<br />#define LED_PB2 (1&lt;&lt;PB2)                 // makro pinu PB2<br />#define LED2TOG PORTB ^= LED_PB2  // zmiana stanu diody PB2<br /><br />int main (void)<br />{<br />USART_Init (UBRR0);   // inicjalizacja USART'a<br /><br />sei();// globalne odblokowanie przerwań<br />DDRB |= LED_PB1 |  LED_PB2;  // ustawienie PB1 i PB2 jako wyjscia<br />PORTB |= LED_PB1 | LED_PB2; // zerowanie<br /><br />uart_puts(&quot;TEST UART\r\n&quot;);<br /><br /><br />// GLOWNA PETLA PROGRAMU<br />while(1)<br />{<br /> if(uart_getc() == 'B')<br /> LEDTOG; //wyslanie literki A powoduje zapalenie diody w pinie PB1<br />// if (uart_getc() == 'A')<br />// LED2TOG;<br /><br />}<br />}[/syntax]<br /><br />Przeprowadziłem również test echa, czyli wysyłałem z terminala znak ASCII odpowiedzialny za zapalenie diody i patrzyłem, czy procesor zwróci mi do terminala określoną literkę. Zauważyłem, że procesor zwracał literkę tylko jeżeli zapalił też diodę. Wygląda to jak by procesor nie zawsze odbierał znak. Co może być przyczyną tego błędu i jak można ewentualnie sobie z tym poradzić?<br />[syntax=c]// pętla nieskończona<br />while(1)<br />{<br /><br /> if(uart_getc() == 'B')<br /> {<br /> LEDTOG;//wyslanie literki A powoduje zapalenie diody w pinie PB1<br />  uart_putc('B');<br /> }<br />// if (uart_getc() == 'A')<br />// LED2TOG;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11907">k.wozniak</a> — 13 sty 2016, o 23:11</p><hr />
]]></content>
</entry>
</feed>