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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-09T18:46:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10128&amp;mode</id>
<entry>
<author><name><![CDATA[kanciaqel]]></name></author>
<updated>2015-01-09T18:46:14+01:00</updated>
<published>2015-01-09T18:46:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113398#p113398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113398#p113398"/>
<title type="html"><![CDATA[Re: ReceiveUART - problem, prośba o pomc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113398#p113398"><![CDATA[
dziękuję, o to mi właśnie chodziło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5134">kanciaqel</a> — 9 sty 2015, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-01-09T18:23:04+01:00</updated>
<published>2015-01-09T18:23:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113392#p113392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113392#p113392"/>
<title type="html"><![CDATA[Re: ReceiveUART - problem, prośba o pomc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113392#p113392"><![CDATA[
Przy odbiorze dwa razy czytasz UDR, raz w funkcji a drugi raz w pętli. Może spróbuj jednak korzystać z funkcji <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> (przy okazji zmiana w warunku pętli):<br /><br />[syntax=c]for ( k=0; k&lt;(sizeof(ramka)/sizeof(ramka&#91;0&#93;)); k++ )  //wysyłany numer linii<br />                {<br />                        ramka&#91;k&#93; = ReceiveUSART();         //uruchomienie funkcji odbierającej i zapisanie znaku w tablicy ramka<br />                }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 9 sty 2015, o 18:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanciaqel]]></name></author>
<updated>2015-01-09T18:00:46+01:00</updated>
<published>2015-01-09T18:00:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113386#p113386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113386#p113386"/>
<title type="html"><![CDATA[ReceiveUART - problem, prośba o pomc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10128&amp;p=113386#p113386"><![CDATA[
Witam <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Mam problem z odbiorem znaku przez RS232. Program polega na wysłaniu z terminala do uC znaku, zapisanie go w tablicy oraz wysłaniu tej tablicy do terminala. Samo wysyłanie z uC do terminala działa, lecz przy odbiorze z terminala do uC za każdym razem do  tablicy ramka[0] wpisywany jest NUL, a ostatni element tablicy jest gubiony lub na jego miejsce wskakuje NUL. Próbowałem tego na przejściówce RS-232 USB oraz komunikacji przez moduł bluetooth z komputerem. Próbowałem także zwiększenia rozmiaru tablicy, ale nie pomogło. Efekt był za każdym razem taki sam - gubienie ostatniego odebranego znaku/zamiana na NUL.<br />Używam zestawu ZL3AVR (dodałem notę katalogową z tym zestawem). Macie może jakiś pomysł na rozwiązanie tego problemu (chodzi mi tylko o część niezakomentowaną)?<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define F_CPU 16000000     // zegar kontrolera<br /><br />void InitUSART_2( unsigned long int baud ) // baud - czyli bitrate portu COM<br />{<br />   //ustalenie stanu UBRR<br />   UBRRH = (unsigned char)(((F_CPU/(16UL*baud))-1)&gt;&gt;8);<br />   UBRRL = (unsigned char)((F_CPU/(16UL*baud))-1);<br />   // aktywny kanał odbioru i nadawania<br />   UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />   // 8bitów, brak parzystości, 2 bity stopu<br />   //UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />   // 8bitów, brak parzystości, 1 bit stopu<br />   UCSRC = (1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);<br />}<br /><br />unsigned char ReceiveUSART( void )  // funkcja odbioru bajtu z RS232 (str.147)<br />{//dopoki bufor nie będzie pusty zwraca wartosc funkcji<br />   while ( !(UCSRA &amp; (1&lt;&lt;RXC)) );<br />   return UDR;<br />}<br /><br />void TransmitUSART(unsigned char data)  // funkcja wysłania bajtu przez RS232<br />{//czeka na wysłanie poprzedniej danej<br />   while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />   UDR = data;<br />}<br /><br /><br />int main(void)<br />{<br />InitUSART_2(19200); // Inicjalizacja RS232 OK<br />/*<br />char macierz&#91;&#93;&#91;4&#93; = {// macierz&#91;W&#93;&#91;K&#93; numery linii autobusowej<br />{'5','2','3','\0'},<br />{'1','5','4','\0'},<br />{'1','2','2','\0'},<br />{'1','4','9','\0'},<br />};<br /><br /><br />uint16_t w=0;//numer linii (wiersz macierzy, w którym się znajduje)<br />uint8_t k=0;<br /><br />while(1)<br />    {<br />    for (k=0; k&lt;=3; k++)//wysyłanie przez rs232 kolejnych znaków cyfry<br />    {<br />    TransmitUSART(macierz&#91;w&#93;&#91;k&#93;);<br />    }<br />    TransmitUSART(0x0D);<br />    _delay_ms(500);<br />*/<br /><br /><br />//odbiór<br />    char ramka&#91;3&#93;={0};//w tej tablicy zapisują się przesłane dane<br />    int8_t k;//licznik - adres komórki w tablicy<br /><br />for ( k=0; k&lt;=2; k++ )//wysyłany numer linii<br />{<br />ReceiveUSART();//uruchomienie funkcji odbierającej<br />ramka&#91;k&#93; = UDR;//zapisanie znaku w tablicy ramka<br />}<br />_delay_ms(500);<br /><br />//wysłanie<br /><br />for ( k=0; k&lt;=3; k++ )//wysyłanie przez RS-232 do terminala kolejnych znaków cyfry zapisanej w ramkace<br />{<br />TransmitUSART(ramka&#91;k&#93;);<br />}<br />_delay_ms(500);<br />   // }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5134">kanciaqel</a> — 9 sty 2015, o 18:00</p><hr />
]]></content>
</entry>
</feed>