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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-07T09:23:20+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=12776&amp;mode</id>
<entry>
<author><name><![CDATA[mahmandi]]></name></author>
<updated>2015-10-07T09:23:20+01:00</updated>
<published>2015-10-07T09:23:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=141691#p141691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=141691#p141691"/>
<title type="html"><![CDATA[Re: RS232 się zapętlił]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=141691#p141691"><![CDATA[
W końcu znalazłem błąd jaki popełniłem, jest w pierwszym kodzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1218">mahmandi</a> — 7 paź 2015, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2015-08-28T10:54:20+01:00</updated>
<published>2015-08-28T10:54:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138530#p138530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138530#p138530"/>
<title type="html"><![CDATA[Re: RS232 się zapętlił]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138530#p138530"><![CDATA[
Źle wstawione listingi. Proszę poprawić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 28 sie 2015, o 10:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mahmandi]]></name></author>
<updated>2015-08-28T11:52:28+01:00</updated>
<published>2015-08-28T09:58:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138523#p138523</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138523#p138523"/>
<title type="html"><![CDATA[RS232 się zapętlił]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12776&amp;p=138523#p138523"><![CDATA[
Zgodnie z prośbą wymieniłem 'code' na 'syntax' <br /><br />Witam <br />dziś utkwiłem na RS 232<br />Wg dostępnych mi materiałów należy <br />zainicjować RS232 -<br />[syntax=c]UCSRB = (1&lt;&lt;RXCIE) | /* Rx on -&gt; po odbiorze znaku generuj przerwanie*/<br />(1&lt; &lt;TXCIE) | /* TX on -&gt; po zakończeniu wysyłania generuj przerwanie*/<br />(1&lt; &lt;RXEN)  | /*włączenie modułu odbiorczego*/<br />(1&lt; &lt;TXEN)  | /*włączenie modułu nadawczego*/<br />(0&lt; &lt;UDRIE) ; /* gotowość bufora do zapisu - aktywuje się dopiero przy wpisywaniu danych do wysłania do UDR*/[/syntax]<br /><br /><br />przygotować przerwania do odczytu <br />[syntax=c]ISR(USART_RXC_vect) //rs232 - odbiór<br />{<br />cli();<br />register byte a;<br />register byte b;<br />a=UCSRA &amp;&amp; ((1&lt;&lt;FE) | (1&lt;&lt;DOR) | (1&lt;&lt;PE)); /*odczyt błędów */<br />b=UDR;<br />//if (a &amp; (1&lt;&lt;FE)) return;//błędna ramka<br />//if (a &amp; (1&lt;&lt;DOR)) return;//przepełnienie danych<br />//if (a &amp; (1&lt;&lt;PE)) return;//błąd parzystości<br />//if (a) {sei();return;}<br />RS232_Buf_in&#91;RS232_Buf_in_len&#93;=b;<br />if (RS232_Buf_in_len&lt;RS232_len_max) RS232_Buf_in_len++;<br />sei();[/syntax]<br /><br />oraz do zapisu <br /><br />[syntax=c]ISR(USART_UDRE_vect) //rs232 - po stwierdzeniu, ze (dwubajtowy) bufor nadawczy ma miejsce<br />// executed when the hardware tx buffer is empty (ready to send some data)<br />{ cli();<br />if (RS232_Buf_out_licz&lt;RS232_Buf_out_len)<br />{<br />UDR = RS232_Buf_out&#91;RS232_Buf_out_licz&#93;;<br />RS232_Buf_out_licz++;<br />}<br />else {<br />UCSRB &amp;= ~(1&lt;&lt;UDRIE);  // Stop UDR empty irq: Tx End<br />}<br />sei();<br />}[/syntax]<br /><br />i teraz pytanie gdzie jest błąd bo teoretycznie po zainicjowaniu bufora i włączeniu falgi przerwania (UDRIE)<br />[syntax=c]RS232_Buf_in&#91;0&#93;='a';<br />RS232_Buf_in&#91;1&#93;='b';<br />RS232_Buf_in&#91;2&#93;='c';<br />RS232_Buf_in&#91;3&#93;='d';<br />RS232_Buf_in&#91;4&#93;='e';<br />RS232_Buf_in&#91;5&#93;='f';<br />RS232_Buf_in&#91;6&#93;='g';<br />RS232_Buf_in&#91;7&#93;=0x00;<br />RS232_Buf_in&#91;8&#93;=0x00;<br />RS232_Buf_in_licz=0;<br />RS232_Buf_in_len=7;<br />UCSRB |= (1&lt;&lt;UDRIE); //bufor załadowany wiec uruchom przerwanie[/syntax]<br />procek powinien  wysłać zawartość bufora i skończyć nadawanie z chwią &quot;UCSRB &amp;= ~(1&lt;&lt;UDRIE);  // Stop UDR empty irq: Tx End&quot; (tak ?)<br />ale zamiast skończyć rozpoczyna proces wysyłania od początku - dlaczego ? <br /><br />tak mam rozpisane definicje zmiennych <br />[syntax=c]#define baud 9600<br />#define RS232_len_max  50<br />//volatile char RS232_Buf_data&#91;RS232_len_max+1&#93;;<br />volatile uint8_t RS232_Buf_in_licz; /*pętla podręczna*/<br />volatile uint8_t RS232_Buf_in_len;  /*ile danych w buforze*/<br />volatile uint8_t RS232_Buf_out_licz; /*pętla podręczna*/<br />volatile uint8_t RS232_Buf_out_len;  /*ile danych w buforze*/<br />volatile char RS232_Buf_out&#91;RS232_len_max+1&#93;;<br />volatile char RS232_Buf_in&#91;RS232_len_max+1&#93;;[/syntax]<br /><br /><br />a tak wygląda główny wątek :<br /><br />[syntax=c]int main(void) {<br />register byte  aaa;<br />register byte i;<br />lcd_locate(0,0);lcd_cls();lcd_str(&quot;init rs&quot;);init_rs();<br />sei();<br />while(1)<br />{<br />//lcd_cls();<br />lcd_locate(0,0);for(i=0;i&lt;RS232_Buf_out_len;i++){aaa=RS232_Buf_out&#91;i&#93;;lcd_char(aaa);}lcd_str(&quot;   &quot;);<br />lcd_locate(1,0);for(i=0;i&lt;RS232_Buf_in_len;i++){aaa=RS232_Buf_in&#91;i&#93;;lcd_char(aaa);}lcd_str(&quot;   &quot;);<br />_delay_ms(500);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1218">mahmandi</a> — 28 sie 2015, o 09:58</p><hr />
]]></content>
</entry>
</feed>