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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-10-08T22:03:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=40&amp;t=16425&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-10-08T22:03:21+01:00</updated>
<published>2016-10-08T22:03:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170905#p170905</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170905#p170905"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170905#p170905"><![CDATA[
no właśnie zapomniałem dopisać return UDR; na końcu (przepraszam)\\<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Sparrow-hawk napisał(a):</div><div class="quotecontent"><br />Ok. Działa. Tylko tego się tak nie robi!<br /></div><br /><br />wiem mało eleganckie rozwiązanie ,<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 paź 2016, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zb111112]]></name></author>
<updated>2016-10-08T21:47:22+01:00</updated>
<published>2016-10-08T21:47:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170901#p170901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170901#p170901"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170901#p170901"><![CDATA[
Dzięki Sparrow-hawk, myślę że posiedzę jeszcze trochę przy funkcji LCD() i poprawię ją tak żeby mogła wysyłać 1 bajt (nie czekając na znak NULL) <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=15085">zb111112</a> — 8 paź 2016, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-10-08T21:35:48+01:00</updated>
<published>2016-10-08T21:35:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170899#p170899</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170899#p170899"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170899#p170899"><![CDATA[
Ok. Działa. Tylko tego się tak nie robi!<br /><br />Co wspólnego ma funkcja UART_Recive() z LCD? -&gt; Ano nic. <br />Czego spodziewamy się, po funkcji typu UART_Recive() -&gt; Że coś zwróci.<br /><br />Więc lepiej zrób to tak:<br />[syntax=c]char UART_Receive( void )<br />{<br />  while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<br />    ;<br />  return UDR; <br />}<br /><br /><br />int main(void)<br />{<br />   char buffor&#91;2&#93; = {0, '\0'};<br />  <br />   LcdInit();<br />   UartInit();<br />   while(1)<br />   {   <br />      buffor&#91;0&#93; = UART_Receive();<br />      CLR();<br />      LCD(Buffor);<br />      _delay_ms(500);<br />      CLR();<br />      LCD(&quot;tekst&quot;);<br />      _delay_ms(500);<br />   }<br />}[/syntax]<br /><br />A najlepiej by było, gdyby jednak funkcja LCD() potrafiła też przyjąć pojedynczy argument typu char.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 8 paź 2016, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zb111112]]></name></author>
<updated>2016-10-08T21:07:38+01:00</updated>
<published>2016-10-08T21:07:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170897#p170897</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170897#p170897"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170897#p170897"><![CDATA[
<div class="codetitle"><b>Code:</b></div><div class="codecontent">void LCD(char *str)<br />   {<br />      RS_SET;<br />      while(*str) LCD_ALL(*str++);<br />      RS_CLR;<br />   }</div><br />Funkcja do wysyłania znaków do LCD<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">char UartReceive( void )<br />{<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) );<br />return UDR;<br />}</div><br />A to do odbioru danych<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />Zrobiłem tak jak polecił mi SunRiver, tym razem wyskoczył mi warning:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">../UART/uart.c:76:1: warning: control reaches end of non-void function &#91;-Wreturn-type&#93;</div><br />dla funkcji:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">unsigned char UART_Receive( void )<br />{<br /><br />   while ( !(UCSRA &amp; (1&lt;&lt;RXC)) );<br />   char bufor&#91;2&#93;;<br />   bufor&#91;0&#93;=UDR;  // znak z uarta<br />   bufor&#91;1&#93;=0;<br />   LCD(bufor);  //wyświetlamy na LCD odebrany znak :)<br /><br />}</div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 16 minutach ]</span></strong><br /><br />Ok, już działa, pokombinowałem trocę z funkcjami, ostatecznie kod wygląda tak:<br />[syntax=c]void UART_Receive( void )<br />{<br /><br />   while ( !(UCSRA &amp; (1&lt;&lt;RXC)) );<br />   char bufor&#91;2&#93;;<br />   bufor&#91;0&#93;=UDR;  // znak z uarta<br />   bufor&#91;1&#93;=0;<br />   LCD(bufor);  //wyświetlamy na LCD odebrany znak :)<br />   return UDR;   ------&gt;&gt;&gt;   Powinno tu być  ----  Sunriver<br />}<br /><br /><br />int main(void)<br />{<br />LcdInit();<br />UartInit();<br />while(1)<br />{<br />CLR();<br />UART_Receive();<br />_delay_ms(500);<br />CLR();<br />LCD(&quot;tekst&quot;);<br />_delay_ms(500);<br />}<br />}[/syntax]<br /><br />Dzięki z pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> , po prostu nie skapnołem się że w funkcji LCD() musi występować jakiś znak i znak NULL, o tym drugim zapomniałem i wszystko działało nieprawidłowo  <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=15085">zb111112</a> — 8 paź 2016, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-10-08T20:54:22+01:00</updated>
<published>2016-10-08T20:54:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170893#p170893</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170893#p170893"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170893#p170893"><![CDATA[
na razie spekulujemy , bez kodu ... nic nie zrobimy ..<br />ale właśnie tu mi się wydaje że jest błąd .. <br /><br />niemniej poczekajmy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 paź 2016, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-10-08T20:49:42+01:00</updated>
<published>2016-10-08T20:49:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170892#p170892</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170892#p170892"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170892#p170892"><![CDATA[
Rzutowanie tu nie pomoże, a kompilator ostrzega, że funkcja LCD spodziewa się otrzymać wskaźnik (Prawdopodobnie na cstring), a otrzymuje wartość typu całkowitego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 8 paź 2016, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-10-08T20:48:33+01:00</updated>
<published>2016-10-08T20:48:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170891#p170891</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170891#p170891"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170891#p170891"><![CDATA[
Potrzebujesz funkcję wyswietlającą znaki na lcd ,<br />pokaż swoją funkcję odbioru znaku z uart<br />mniej może to tak wyglądać ...<br /><br />[syntax=c]unsigned char UART_Receive( void )  <br />{ <br /><br />   while ( !(UCSRA &amp; (1&lt;&lt;RXC)) ); <br />   char bufor&#91;2&#93;;<br />   bufor&#91;0&#93;=UDR;  // znak z uarta <br />   bufor&#91;1&#93;=0;<br />   LCD(bufor);  //wyświetlamy na LCD odebrany znak :)<br />   return UDR;  ---&gt; tego zabrakło (przepraszam)<br />}[/syntax]<br /><br />łańcuch powinieneś też kończyć /0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 paź 2016, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-10-08T20:45:06+01:00</updated>
<published>2016-10-08T20:45:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170889#p170889</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170889#p170889"/>
<title type="html"><![CDATA[Re: ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170889#p170889"><![CDATA[
Kompilator mówi ci, że funkcja UART_Receive() zwraca niezgodny typ, który przyjmuje funkcja LCD.<br />Prawdopodobnie pomoże ci rzutowanie zmiennych. Pokaż ciało funkcji UART_Receive(); i LCD();<br /><br />Jeśli się mylę, proszę o poprawkę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 8 paź 2016, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zb111112]]></name></author>
<updated>2016-10-08T19:45:40+01:00</updated>
<published>2016-10-08T19:45:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170882#p170882</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170882#p170882"/>
<title type="html"><![CDATA[ATmega8 wysyła lecz nie odbiera danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16425&amp;p=170882#p170882"><![CDATA[
Witam, mam przejściówkę RS232-USB działającą na układzie PL2303HX, podłączyłem ją tak jak należy z komputera do ATmegi8.<br />Zainstalowałem sterownik, ustawiłem prędkość na 9600, i napisałem program który miał wysyłać literę A co 1 sekundę wg programu z BlueBooka. Wszystko działało poprawnie a na terminalu wyświetlała mi się co 1 sekunde litera A.<br />Problem zaczął się kiedy chciałem dane w postaci char z terminala wysyłać do ATmegi8 a następnie wyświetlać je na 2x16 LCD.<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">int main(void)<br />{<br />   LCD_INIT();<br />   UART_Init();<br />   while(1)<br />   {<br />      CLR();<br />      LCD(UART_Receive());<br />      _delay_ms(500);<br />      CLR();<br />      LCD(&quot;tekst&quot;);<br />      _delay_ms(500);<br />   }<br />}</div><br />Program ten powinien wyświetlić jakąś literę wysłaną przezemnie z terminala (czego nie robi), a po 0,5 sekundzie wyświetlić napis &quot;tekst&quot; (to akurat wyświetla, czyli LCD jest dobrze podłączony).<br /><br />Funkcję char UART_Receive( void ) skopiowałem z noty katalogowej ATmegi8, i myślę że jest dobra<br />Przy kompilacji wyświetla mi się Warning:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />../UART/uart.c:75:3: warning: passing argument 1 of 'LCD' makes pointer from integer without a cast [enabled by default]<br /></div><br />dla lini:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">LCD(UART_Receive());</div><br /><br />Pomóżcie, siedze przy tym kilka dni i nie wiem co jest grane<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15085">zb111112</a> — 8 paź 2016, o 19:45</p><hr />
]]></content>
</entry>
</feed>