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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T22:02:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13473&amp;mode</id>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-11-06T22:02:27+01:00</updated>
<published>2015-11-06T22:02:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144668#p144668</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144668#p144668"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144668#p144668"><![CDATA[
ehh faktycznie. Szkoda słów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 6 lis 2015, o 22:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-11-06T18:25:09+01:00</updated>
<published>2015-11-06T18:25:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144626#p144626</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144626#p144626"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144626#p144626"><![CDATA[
Witam<br />A nie powinno być:<br />[syntax=c]UCSRC = (1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);[/syntax]<br />?<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 6 lis 2015, o 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-11-06T17:54:47+01:00</updated>
<published>2015-11-06T17:54:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144623#p144623</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144623#p144623"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144623#p144623"><![CDATA[
<div class="quotetitle">4MaticPL napisał(a):</div><div class="quotecontent"><br />Z tego co mi się wydaje to ten ciąg znaków powinien się poprawnie wyświetlić. Najwyżej było by chwilowe oczekiwanie w pętli na zwolnienie się bufora<br /></div><br /><br /> Oczywiście sprawdziłeś, czy wyświetli się krótszy tekst? Ja nie mam jak tego teraz sprawdzić, ale może za długim tekstem nadpisujesz '\0' na końcu stringa.<br />A może coś masz dopisane po &quot;else&quot; tam gdzie jest obsługa błędu przepełnienia bufora.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 6 lis 2015, o 17:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-11-06T16:07:24+01:00</updated>
<published>2015-11-06T16:07:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144604#p144604</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144604#p144604"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144604#p144604"><![CDATA[
Może coś spierniczyłem przy inicializacji. Proszę o sprawdzenie czy dobre rejestry powpisywałem.<br /><br />[syntax=c]void USART_Init( uint16_t baud ) <br />{<br />/* Ustawienie prędkości */<br />    UBRRH = (uint8_t)(baud&gt;&gt;8);<br />    UBRRL = (uint8_t)baud;<br />/* Załączenie nadajnika I odbiornika */<br />    UCSRB = (1 &lt;&lt; RXEN)|(1 &lt;&lt; TXEN);<br />/* Ustawienie format ramki: 8bit�w danych, 1 bit stopu */<br />    UCSRC = (1 &lt;&lt; UCSZ0) | (1 &lt;&lt; UCSZ1);<br />    UCSRB |= (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN)|(1&lt;&lt;RXCIE);<br />}[/syntax]<br /><br />Wektory:<br />[syntax=c]// definiujemy procedurę obsługi przerwania nadawczego, pobierające dane z bufora cyklicznego<br />ISR( USART_UDRE_vect)  {...}<br />// definiujemy procedurę obsługi przerwania odbiorczego, zapisującą dane do bufora cyklicznego<br />ISR( USART_RXC_vect ) {...}[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Rafał555 napisał(a):</div><div class="quotecontent"><br />A krótsze teksty idą? Jak masz bufor nadawczy 32 bajty to ten konkretny tekst z twojego main.c jest za długi.<br /></div><br />Z tego co mi się wydaje to ten ciąg znaków powinien się poprawnie wyświetlić. Najwyżej było by chwilowe oczekiwanie w pętli na zwolnienie się bufora<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 6 lis 2015, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-11-06T15:37:26+01:00</updated>
<published>2015-11-06T15:37:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144593#p144593</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144593#p144593"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144593#p144593"><![CDATA[
A krótsze teksty idą? Jak masz bufor nadawczy 32 bajty to ten konkretny tekst z twojego main.c jest za długi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 6 lis 2015, o 15:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-11-05T23:08:15+01:00</updated>
<published>2015-11-05T23:08:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144560#p144560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144560#p144560"/>
<title type="html"><![CDATA[Re: Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144560#p144560"><![CDATA[
Witam.<br /><br />Wszystko wskazuje na to, że najprawdopodobniej coś zepsułeś w funkcji ISR(USART_URDE_vect), bo ona oblicza na nowo indeks &quot;ogona węża&quot;  i dlatego możesz wysłać tylko 1 znak przez UART. Funkcji uart_puts(char *s) nie zepsułeś, zresztą za bardzo nie ma co w niej popsuć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />. <br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 5 lis 2015, o 23:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-11-05T22:25:54+01:00</updated>
<published>2015-11-05T22:25:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144554#p144554</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144554#p144554"/>
<title type="html"><![CDATA[Uart i blokująca się pętla]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13473&amp;p=144554#p144554"><![CDATA[
Witam<br />Majstrowałem sobie dzisiaj przy bibliotece z GB od obsługi uarta z callbackami. Wszystko ładnie chodziło ale coś musiałem poknocić i biblioteka zaczęła się wieszać na funkcji UART_PUTS. Starałem się znaleźć przyczynę problemu ale doszedłem jedynie do tego, że wiesza się ona w funkcji UART_PUTC a dokładnie w pętli która sprawdza czy bufor nie jest przepełniony. Najdziwniejsze jest to, że fukncja UART_PUTC działa normalnie ale jak dodam gdziekolwiek w kodzie UART_PUTS to cały program napisany się zawiesza.<br /><br />uart.c<br />[syntax=c]// **************************************************<br />//FUNKCJA WYSYŁAJĄCA JEDEN BAJT<br />// **************************************************<br />void uart_putc( char data )<br />{<br />uint8_t tmp_head = 0;<br /><br />    tmp_head  = (UART_TxHead + 1) &amp; UART_TX_BUF_MASK;<br /><br />          // pętla oczekuje jeżeli brak miejsca w buforze cyklicznym na kolejne znaki<br />    while ( tmp_head == UART_TxTail ){ PORTC ^= (1&lt;&lt;PC3); _delay_ms(20); }         // dioda cały czas miga jeśli użyje funkcji uart_puts<br /><br />    UART_TxBuf&#91;tmp_head&#93; = data;<br />    UART_TxHead = tmp_head;<br /><br />    // inicjalizujemy przerwanie występujšce, gdy bufor jest pusty, dzięki<br />    // czemu w dalszej częci wysyłaniem danych zajmie się już procedura<br />    // obsługi przerwania<br />    UCSRB |= (1&lt;&lt;UDRIE);<br />}<br /><br /><br />// **************************************************<br />//FUNKCJA WYSYŁAJĄCA ŁAŃCUCH ZNAKÓW<br />// **************************************************<br />void uart_puts(char *s)<br />{<br />  register char c;<br />  while ((c = *s++)) uart_putc(c);// dopóki nie napotkasz 0 wysyłaj znak<br />}[/syntax]<br /><br />[syntax=c]#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;DISPLAY/display.h&quot;<br />#include &quot;UART/uart.h&quot;<br /><br />#include &quot;DS1307/ds1307.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br /><br />#include &quot;komendy_at.h&quot;<br /><br />uint8_t ir_enable = 1;// aktywacja/deaktywacja IR--&gt;TERMINAL<br />char bufor&#91;100&#93;;// bufor na potrzeby odebranych danych z UART<br /><br />main.c<br />int main(void) {<br /><br />DDRC |= (1&lt;&lt;PC3);<br /><br /><br />//init uart<br />uart_init( __UBRR );<br />uart_putc('c');<br />uart_puts(&quot;******* ATNEL - AT tester - restart ***********\r\n&quot;); // jeśli to zakoduje zadziała uart_putc('c'); powyżej inaczej terminal jest pusty<br /><br /><br />//init ds1307<br />ds1307_init();<br /><br />display_init();<br /><br />//uint8_t year = 0;<br />//uint8_t month = 0;<br />//uint8_t day = 0;<br />//uint8_t hour = 0;<br />//uint8_t minute = 0;<br />//uint8_t second = 0;<br /><br /><br />//ds1307_setdate(15, 11, 4, 16, 29, 00);<br /><br />REGISTER_CALLBACK_UART_STR(parse_uart_data);<br /><br />sei();<br /><br />while(1)<br />{<br />UART_STR_EVENT(bufor);// zdarzenie odbiorcze UART<br /><br />//ds1307_getdate(&amp;year, &amp;month, &amp;day, &amp;hour, &amp;minute, &amp;second);<br />//display_int( (hour * 100) + minute);<br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 5 lis 2015, o 22:25</p><hr />
]]></content>
</entry>
</feed>