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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-11T17:24:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7241&amp;mode</id>
<entry>
<author><name><![CDATA[interson]]></name></author>
<updated>2014-06-11T17:24:32+01:00</updated>
<published>2014-06-11T17:24:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=84135#p84135</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=84135#p84135"/>
<title type="html"><![CDATA[Re: Odbierania znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=84135#p84135"><![CDATA[
<strong>Problem rozwiązałem, temat uważam za zakończony.</strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4438">interson</a> — 11 cze 2014, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[interson]]></name></author>
<updated>2014-05-30T16:45:18+01:00</updated>
<published>2014-05-30T16:45:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82836#p82836</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82836#p82836"/>
<title type="html"><![CDATA[Re: Odbierania znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82836#p82836"><![CDATA[
Nie pomogło. Próbowałem podobnie, a także z buforem 100 bajtów i ciągle to samo. W przypadku wpisania właściwej ilości znaków (listing 1), wydruk jest ok. Jeżeli zmniejszę wielkość bufora Tx w pliku mkuart.h, to liczba bajtów dopisywanych i ujmowanych się zmniejsza. Sugerując się listingiem 3 próbowałem bez echa, tylko po odczytaniu całego stringu wydrukować 2 razy, ale jest jeszcze większa maniana. Nie wiem co jest grane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4438">interson</a> — 30 maja 2014, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordo]]></name></author>
<updated>2014-05-30T14:12:57+01:00</updated>
<published>2014-05-30T14:12:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82814#p82814</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82814#p82814"/>
<title type="html"><![CDATA[Re: Odbierania znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82814#p82814"><![CDATA[
<div class="quotetitle">interson napisał(a):</div><div class="quotecontent"><br />(...)   w 1 części wydruku program dopisuje na początku część znaków będących początkiem wydruku, a w 2 części wydruku (kopii)  tyle samo znaków na początku zabiera.  Liczba dodanych znaków zależy od długości bufora TX, im większy bufor tym więcej znaków.<br /></div><br /><br />500 bajtowy bufor to sporo. Na pewno nie masz problemów z przepełnianiem stosu ?<br />Jeśli każdy tekst kończy się zerem to można nieco uprościć pętlę, np. tak:<br /><br />[syntax=c]Znak=uart_getc();<br />                if ( Znak ) {<br />                        uart_putc(Znak);<br />                        Linia&#91;Kolejny&#93;=Znak;<br />                        Kolejny++;<br />                }<br />                else {<br />                           Linia&#91;Kolejny&#93; = 0;<br />                           uart_puts (Linia);<br />                           Kolejny = 0;<br />                }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2592">gordo</a> — 30 maja 2014, o 14:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[interson]]></name></author>
<updated>2014-05-29T22:19:29+01:00</updated>
<published>2014-05-29T22:19:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82791#p82791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82791#p82791"/>
<title type="html"><![CDATA[Odbierania znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7241&amp;p=82791#p82791"><![CDATA[
Szanowni Koledzy, jestem początkującym i próbuję napisać wydawałoby się prosty program, który ma za zadanie odebrać dane z jakiegoś urządzenia, łańcuch max 500 znaków (przeznaczony na drukarkę) i wysłać to samo, ale 2 razy na drukarkę. Używam ATmegi 8, port Rx odbiera dane bezpośrednio z innego procka, a port Tx wysyła to 2 razy na drukarkę, tak to sobie wymyśliłem. Korzystam z biblioteki <strong>MKUART</strong> z niebieskiej książki.<br />Proste, a jednak okazuje się, że jak znam ilość odebranych znaków <strong>„listing 1”</strong> to wszystko działa poprawnie, ale gdy ich nie znam <strong>„listing 2”</strong>to w 1 części wydruku program dopisuje na początku część znaków będących początkiem wydruku, a w 2 części wydruku (kopii)  tyle samo znaków na początku zabiera.  Liczba dodanych znaków zależy od długości bufora TX, im większy bufor tym więcej znaków. W przypadku, kiedy w linii <em><strong> „uart_putc(Znak);”</strong></em>  postawię komentarz <strong> „listing 3”,</strong> to instrukcja  if działa właściwie.  Próbuję na różne sposoby i sam już nie wiem jak mam sprawdzić kiedy następuje koniec odebranych danych, żeby można było wysłać 2 część. Proszę o pomoc.<br /><br /><br />[syntax=c]**********************   listing 1   **********************<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br /><br /><br />int main(void) {<br /><br />USART_Init( __UBRR );<br />char Znak;<br />int Kolejny=0;<br />char Linia&#91;500&#93;;<br /><br />sei();<br /><br />uart_puts (&quot;\x1b&quot;&quot;&#91;2J&quot;);<br />uart_puts (&quot;\x1b&quot;&quot;&#91;;H&quot;);<br />uart_puts (&quot;  ********       START       ********&quot;);<br />uart_puts(&quot;\n\n\r&quot;);<br /><br /><br />while(1) {<br /><br />Znak=uart_getc();<br />if ( Znak ) {<br />uart_putc(Znak);<br />Linia&#91;Kolejny&#93;=Znak;<br />Kolejny++;<br />}<br />if ( Kolejny ==377 ) {<br />for (int Zm = 0; Zm &lt; Kolejny; ++Zm) {<br />uart_putc (Linia&#91;Zm&#93;);<br />}<br />Kolejny = 0;<br />}<br />}<br />}[/syntax]<br />[syntax=c]**********************   listing 2   **********************<br /><br /><br />while(1) {<br /><br />Znak=uart_getc();<br />if ( Znak ) {<br />uart_putc(Znak);<br />Linia&#91;Kolejny&#93;=Znak;<br />Kolejny++;<br />}<br />if ( !Znak &amp;&amp; Kolejny ) {<br />for (int Zm = 0; Zm &lt; Kolejny; ++Zm) {<br />uart_putc (Linia&#91;Zm&#93;);<br />}<br />Kolejny = 0;<br />}<br />}[/syntax]<br />[syntax=c]**********************   listing 3   **********************<br />while(1) {<br /><br />Znak=uart_getc();<br />if ( Znak ) {<br />//uart_putc(Znak);<br />Linia&#91;Kolejny&#93;=Znak;<br />Kolejny++;<br />}<br />if ( !Znak &amp;&amp; Kolejny ) {<br />for (int Zm = 0; Zm &lt; Kolejny; ++Zm) {<br />uart_putc (Linia&#91;Zm&#93;);<br />}<br />Kolejny = 0;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4438">interson</a> — 29 maja 2014, o 22:19</p><hr />
]]></content>
</entry>
</feed>