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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-29T17:51:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=17483&amp;mode</id>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2017-01-29T17:51:06+01:00</updated>
<published>2017-01-29T17:51:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17483&amp;p=181195#p181195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17483&amp;p=181195#p181195"/>
<title type="html"><![CDATA[problem z odbiorem uart]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17483&amp;p=181195#p181195"><![CDATA[
Cześć.<br /><br />Mam funkcję do odbioru znaku<br />[syntax=c]void GSM_gets(char *bufor){<br />        register char znak;<br />        znak = 0;<br />        while((znak = GSM_uart_getc())){//jeżeli nie odebrano znaku opuśc pętlę<br />          _delay_ms(20);<br />                *(bufor++) = znak;//w przeciwnym wypadku zapisz znak do bufora<br />        }<br />        if (znak){<br />        gsm_new_string = 1;//jeżeli odebrano jakiś znak ustaw flagę - po opuszczeniu pętli<br />        }<br />}[/syntax]<br /><br />opisane w komentarzach.<br /><br />w programie glownym mam z kolei:<br /><br />[syntax=c]gsm_new_string = 0;//zeruje flagę<br />while(1){<br />GSM_gets(gsm_odebrane);//odbieram dane jeżeli wogole nadleca<br />if(gsm_new_string)//jeżeli nadleciały i ustawiło flagę<br />lcd_cls();<br />gsm_new_string = 0;//zeruję flagę<br />uint8_t i;<br />for (i = 0; i &lt; 5; ++i) {<br />lcd_char(*(gsm_odebrane + i));//wyświetlam 5 znakow które odebrałem<br />}<br />_delay_ms(2000);<br />}[/syntax]<br /><br />Ma to działać tak że jak odbiorę znak czyli inną wartość niż zero to funkcja zapisze je do bufora aż do końca czyli ponownie 0 i ustawi flagę gsm_new_string.<br />Po czym w programie głównym jeżeli ww flaga będzie ustawiona ma wyświetlić bufor do którego nadleciały dane - dokładnie 5 znaków.<br /><br />A dzieje się tak, że jak nawet nie nadlecą żadne dane i tak wykonuje się warunek if(gsm_new_string) i na LCD pojawia sie 5 krzaków. <br /><br />Gdzieś w programie ta zmienna się ustawia a nie wiem  gdzie. Wiecie może??<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 8 minutach ]</span></strong><br /><br /><br /><br />Zapomniałem nawiasu za warunkiem if...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 29 sty 2017, o 17:51</p><hr />
]]></content>
</entry>
</feed>