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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-28T18:53:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=56&amp;t=2025&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-06-28T18:53:07+01:00</updated>
<published>2014-06-28T18:53:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=86004#p86004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=86004#p86004"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=86004#p86004"><![CDATA[
Te wzory wprowadź sobie do kodu programu:<br />[syntax=c]#define BAUD 9600 //tu można zmienić baudrate<br />#define UBRR_VALUE     (( F_CPU + BAUD * 8UL ) / (16UL * BAUD) -1) //zmiana na F_CPU[/syntax]<br />tak można to wykorzystać:<br />[syntax=c]USARTInit(UBRR_VALUE);[/syntax]<br />i sprawdź działanie przy prędkości 9600 a potem 1953. Mi bardziej odpowiada terminal Bray'a, bo można zmieniać prędkość bez zamykania programu czy rozłączania portu. Nie szukaj innego kwarcu. Jak ustawisz w terminalu baud na custom w zakresie 1853 -2053 też powinno działać (aby zmienić custom w trakcie działania należy po modyfikacji wartości na chwilę zmienić baudrate z custom na inną). A jak chcesz upewnić się co do taktowania mikrokontrolera to dodaj sobie do kodu zmianę stanu dowolnego wyjścia i podepnij LED.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 28 cze 2014, o 18:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BelegUS]]></name></author>
<updated>2014-06-28T13:12:31+01:00</updated>
<published>2014-06-28T13:12:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=85984#p85984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=85984#p85984"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=85984#p85984"><![CDATA[
Proszę wybaczyć, że odkopuję ten wątek - problematyka jest jednak identyczna.<br /><br />Pozwólcie, że się pokrótce przedstawię - Szymon, student Informatyki na PolSl, w trakcie pisania pracy inżynierskiej. Jej problematyka właśnie przyprowadziła mnie na Forum.<br /><br />Chcę wykonać komputer pokładowy do Subaru - w tym celu muszę skomunikować się z komputerem silnika - ów komputer gada sobie na następujących parametrach: 1953 baud, 8 bitów danych, 1 bit stopu Even parity. I to właśnie ten nietypowy baud robi problem.<br /><br />Do wykonania zadania zanabyłem ATmegę 162 (dwa UART'y - jeden do auta, drugi do nadajnika Bluetooth, którym będę nadawał dane do appki na Androida). Nim trafiłem na post na blogu pana Kardasia poruszający problematykę wyznaczania częstotliwości taktowania / wyliczania UBRR, wyliczyłem z noty katalogowej, a także z pewnej strony internetowej (obecnie, niestety, niedziałającej), iż zerowy błąd uzyskam dla częstotliwości 16MHz i UBRR = 511. <br /><br />Kupiłem więc kwarc 16MHz i (z pewnymi przygodami) spiąłem go z ATmegą. Fusebity ustawiłem wspaniałym mkAvrCalculatorem - wyłączyłem CKDIV8, i wybrałem External crystal resonator jako &gt;8Mhz. Do tej pory wszystko działało poprawnie - uC ładnie się wykrywa i programuje. Mój programator to USBasp, jeśli ma to znaczenie - jeden projekt już z nim wykonałem, więc jest względnie OK.<br /><br />Następnie ściągnąłem poprawioną wersję biblioteki pana Fleury'ego do komunikacji po UART:<br /><!-- m --><a class="postlink" href="http://beaststwo.org/avr-uart/" >http://beaststwo.org/avr-uart/</a><!-- m --><br />Tutaj, po kilku perturbacjach, znów udało mi się uzyskać sukces -poprzez CP210x (konwerter USB-RS232), dla standardowej komunikacji z baud 9600, 8 bitów danych, 1 bit stopu, none parity wysyłałem (z _delay_ms(5000)) z uC i odbierałem na PC w Putty literkę &quot;a&quot;. So far, so good.<br /><br />EDIT: Tutaj dodam, bo to ważne - F_CPU ustawiam globalnie, w Ustawieniach Projektu w ATmel Studio, na 16000000.<br /><br />Tutaj zaczęły się schody.<br />Za wszystkie diabły nie dałem rady zmusić tego zestawu do rozmowy na baud = 1953. Potępując zgodnie z instrukcją biblioteki, otrzymywałem na terminalu zamiast &quot;a&quot; tylko krzaczki (na dodatek, choć mogę się mylić, odbierałem dwa &quot;krzaki&quot; co 5 sekund, nie jeden).<br /><br />Wykonałem więc &quot;back to basics&quot; - wziąłem kod z dokumentacji mojej 162 (a konkretnie z jednej ze stron, ale jest identyczny):<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//This function is used to initialize the USART<br />//at a given UBRR value<br />void USARTInit(uint16_t ubrr_value)<br />{<br /><br />   //Set Baud rate<br /><br />   UBRR0L = ubrr_value;<br />   UBRR0H = (ubrr_value&gt;&gt;8);<br />  <br /><br />   /*Set Frame Format<br /><br /><br />   &gt;&gt; Asynchronous mode<br />   &gt;&gt; No Parity<br />   &gt;&gt; 1 StopBit<br /><br />   &gt;&gt; char size 8<br /><br />   */<br /><br />   UCSR0C=(1&lt;&lt;URSEL0)|(3&lt;&lt;UCSZ00);<br /><br /><br />   //Enable The receiver and transmitter<br /><br />   UCSR0B=(1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);<br /><br /><br />}<br /><br /><br />//This fuction writes the given &quot;data&quot; to<br />//the USART which then transmit it via TX line<br />void USARTWriteChar(char data)<br />{<br />   //Wait untill the transmitter is ready<br /><br />   while(!(UCSR0A &amp; (1&lt;&lt;UDRE0)))<br />   {<br />      //Do nothing<br />   }<br /><br />   //Now write the data to USART buffer<br /><br />   UDR0=data;<br />}<br /><br />void main()<br />{<br /><br /><br />   USARTInit(511);    //UBRR = 511<br /><br />   //Loop forever<br /><br />   while(1)<br />   {<br /><br />USARTWriteChar('a');<br />_delay_ms(5000);<br />   }<br />}[/syntax]<br />Niestety, &quot;na zachodzie bez zmian&quot;, nadal krzaki. Wtedy natrafiłem na post pana Kardasia, dokonałem ręcznej kalkulacji UBRR ze wzoru:<br />UBRR = ( FOSC  + BAUD * 8UL  ) / (16UL * BAUD) -1<br />Dla FOSC = 16000000 i BAUD = 1953. Wynik mnie zaskoczył:<br />UBRR = 511,5327700973<br />Czyli... tak bardzo ni w PiS, ni w PO - ani to 511, ani 512. Oczywiście wartość 512 w kodzie również sprawdziłem - i oczywiście nie działa. Krzaki. Błąd musi być w obu przypadkach zbyt wielki.<br /><br />Drodzy moi - cóż czynić w tej sytuacji? Mnie przychodzi do głowy jedynie (jeśli to faktycznie kwestia zbyt wielkiego błędu transmisji) zmiana kwarcu - ale na jaki?<br />Nie wiem, jak przekształcić ten wzór, aby dobrać najbardziej idealny, istniejący na rynku kwarc, i wartość UBRR, które pozwolą mi na tym dziwnym baudzie 1953 gadać.<br />Czy mogę prosić o wskazówki?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4952">BelegUS</a> — 28 cze 2014, o 13:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-12-05T21:43:16+01:00</updated>
<published>2013-12-05T21:43:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59845#p59845</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59845#p59845"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59845#p59845"><![CDATA[
<div class="quotetitle">Picowaty91 napisał(a):</div><div class="quotecontent"><br />Czyli nie wgrał się program tak?<br /></div><br />Proponuje &quot;cofnąć się w rozwoju&quot; i napisać program migający LED w oparciu o funkcje z nagłówka &lt;util\delay.h&gt; i wtedy powrócić do tematu. Od tego należy zaczynać uruchamianie każdego systemu z procesorem.<br /><div class="quotetitle">Picowaty91 napisał(a):</div><div class="quotecontent"><br />Czy to poprawny schemat?<br /></div><br />Tak.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 5 gru 2013, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-05T16:24:59+01:00</updated>
<published>2013-12-05T16:24:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59784#p59784</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59784#p59784"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59784#p59784"><![CDATA[
Sprawdziłem, podłączone do prawidłowego pinu.<br />zmieniłem Atmegę nadal nic..<br />Czyli nie wgrał się program tak? <br />Programator i atmege podłączyłem wg tego schematu:<a href="http://forum.atnel.pl/_obrazki/o/2119/6308cc4e3e37dd82982bef44e4f66fe1.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/6308cc4e3e37dd82982bef44e4f66fe1.jpg" alt="Obrazek" /></a><br />podpinając odpowiednio do pinów z Atmegi32 . Czy to poprawny schemat?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 5 gru 2013, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-05T00:59:58+01:00</updated>
<published>2013-12-05T00:59:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59732#p59732</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59732#p59732"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59732#p59732"><![CDATA[
standardowo na pinie TX jest stan wysoki gdy działa RS232 więc to normalna sytuacja<br /><br />ale to że dioda nie mruga w trakcie nadawania ? to może oznaczać tylko że albo nie do tego pinu podłączyłeś diodę albo że program się nie wgrał albo w najgorszym wypadku że pin uszkodzony<br /><br />ale ok PRZEDE wszystkim pamiętaj że zawsze jak piszesz na forum a wprowadzasz poprawki w kodzie nawet najdrobniejsze - to wklejaj to co zrobiłeś jeśli chodzi o kod - zamiast opisywać - o ile chcesz żeby łatwiej było pomóc - tym bardziej że robisz mega prostą i podstawową rzecz<br /><br /><br />--------------<br />o matko! <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i jeszcze jedno bo teraz zobaczyłem dopiero zdjęcie stykówki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />panie kolego - tym bardziej zapraszam do obejrzenia tego poradnika :<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/12/avr-jak-zaczac.html" >http://mirekk36.blogspot.com/2012/12/av ... aczac.html</a><!-- m --><br /><br />bo na stykówce jest jakby masakra jakaś - to wprawdzie nie wpływa na to że nie działa ci rs232 ale no kondensator podłączony do AREF na takiej LINIE jak z dżungli ? - sorry ale to już lepiej byłoby w ogóle tam kondka nie podłączać i żeby pin wisiał w powietrzu bo teraz to robisz sobie antenę SETI do nasłuchu sygnałów i zakłóceń z kosmosu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />weź ty może przede wszystkim na własny użytek rozrysuj dokładnie ten schemat połączeń - bo czy czasem tu u ciebie nie kryją się kolejne ZONK'i ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 gru 2013, o 00:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T21:49:43+01:00</updated>
<published>2013-12-04T21:49:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59721#p59721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59721#p59721"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59721#p59721"><![CDATA[
Usunąłem (0&lt;&lt;USBS), usunąłem zmienną i wstawiłem USART_Transmit( 'a' );<br />Podłączyłem diode LED - anoda do pinu Tx Atemgi, katoda to masy - dioda świeci światłem ciągłym <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Terminal nadal nic nie pokazuje <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T21:31:00+01:00</updated>
<published>2013-12-04T21:31:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59715#p59715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59715#p59715"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59715#p59715"><![CDATA[
[syntax=c]UCSRC = (1&lt;&lt;URSEL)|(0&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);[/syntax]<br /><br />to nie ma sensu - ale ok jak będziesz miał bluebooka to zobaczysz że przesunięcia nie są trudne - napisz tak jeśli już piszesz tę linię<br /><br />[syntax=c]UCSRC = (1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />druga sprawa - widać że nie znasz podstawowych typów <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .... więc ok w oczekiwaniu na książkę proszę - to nie ma sensu:<br /><br />[syntax=c]char zmienna = &quot;a&quot;;[/syntax]<br /><br />przecież przy kompilacji tego dostajesz jak nie błąd to na pewno warninga - czyli wynika z tego że chyba o zgrozo piszesz kod w Atmel Studio zgadza się ? jeśli tak to weź to wychrzań na razie i zrób to w Eclipse - a zmienną zrób tak:<br /><br />[syntax=c]char zmienna = 'a';[/syntax]<br /><br />bo to OGROMNA różnica albo w ogól nie rób tej zmiennej tylko napisz:<br /><br />[syntax=c]USART_Transmit( 'a' );[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle">Picowaty91 napisał(a):</div><div class="quotecontent"><br />to powinien chociaż krzaki pokazywać prawda?<br /></div><br /><br />nie prawda - czasem będą a czasem nie<br /><br />poza tym co za problem sprawdzić nawet diodą LED do pinu Tx ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 gru 2013, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T21:35:43+01:00</updated>
<published>2013-12-04T21:18:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59711#p59711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59711#p59711"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59711#p59711"><![CDATA[
Sprawdzam po kolei:<br />1. Kod jak w nocie:<br />[syntax=c]/* <br />TEST UART<br /><br />*/<br /><br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;myuart.h&quot;<br /><br /><br />int main(void){<br />USART_Init( uint16_t _UBRR );<br />char zmienna = &quot;a&quot;;<br /><br />while(1){<br />USART_Transmit(zmienna);<br />delay(1000);<br />}<br />}[/syntax]<br /><br />[syntax=c]/*<br /> * myuatr.h<br /> */<br /><br />#ifndef MYUATR_H_<br />#define MYUATR_H_<br /><br />#define UART_BAUD 2400  <br />#define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1)  <br /><br /><br />void USART_Init( uint16_t _UBRR );<br />void USART_Transmit(unsigned char data);<br /><br />#endif /* MYUATR_H_ */[/syntax]<br /><br />[syntax=c]/*<br /> * myuart.c<br /> */<br />#include &quot;avr/io.h&quot;<br />#include &quot;myuart.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br /><br /><br />void USART_Init( uint16_t _UBRR )<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(_UBRR&gt;&gt;8);<br />UBRRL = (unsigned char)_UBRR;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 1stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(0&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /><br /><br />void USART_Transmit( unsigned char data )<br />{<br />//Wait for empty transmit buffer <br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />;<br />// Put data into buffer, sends the data <br />UDR = data;<br />}[/syntax]<br /><br />2. Korzystam z <!-- m --><a class="postlink" href="http://sklep.modulowo.pl/pl/p/MOD-05.Z-Konwerter-USBRS-232-z-zabezpieczeniem-500mA%2C-FT232RL-zmontowany/121" >http://sklep.modulowo.pl/pl/p/MOD-05.Z- ... towany/121</a><!-- m --> . Działa prawidłowo, sprawdzałem przed sekundą na kodzie o który pytałem z 10 postów wcześniej i atmedze 328 i śmiga, podłączone tak jak do atmegi328 do pinów Rx i Tx na krzyż przez rezystory 1k (w projekcie z atemga328 działa)<br /><br />3. <a href="http://forum.atnel.pl/_obrazki/o/2119/74a3dcd086ee8cf097d3ecf78114b65b.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/74a3dcd086ee8cf097d3ecf78114b65b.jpg" alt="Obrazek" /></a><br />czyli: Hfuse:99 Lfuse:E1  - 1Mhz internal <br /><br />4.<a href="http://forum.atnel.pl/_obrazki/o/2119/4493259710bb012219d32b729163fe47.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/4493259710bb012219d32b729163fe47.jpg" alt="Obrazek" /></a><br />na screenie wkradł się błąd, sprawdząłem różne Baudy, na 2400 nie działa również) pozatym gdyby był tu źle baud to powinien chociaż krzaki pokazywać prawda?<br /><br />5.Przesyłam nawet zdjęcie płytki jeśli to coś pomoże<br /><a href="http://forum.atnel.pl/_obrazki/o/2119/d8f4d1ad70cfefe0456823da3e04627a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/d8f4d1ad70cfefe0456823da3e04627a.jpg" alt="Obrazek" /></a><br /><br />Wydaje mi się, że wszystko sprawdzone, jednak nadal nic nie widać na termianalu. Możliwe żeby to było coś źle z Amtegą?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T20:48:11+01:00</updated>
<published>2013-12-04T20:48:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59698#p59698</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59698#p59698"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59698#p59698"><![CDATA[
ok to może inaczej zanim wypożyczysz<br /><br />.... masz w nocie PDF zarówno inicjalizację - jak i nadawanie pojedynczego znaku<br /><br />z inicjalizacją już sobie poradziłeś chyba <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... więc ok<br /><br />a teraz zrezygnuj z tych wszystkich prinf'ów i przesyłania przez strumień bo widać że tu kompletnie na razie nie masz pojęcia a poza tym to w zasadzie niepotrzebny balast na procku<br /><br />więc napisz sobie DOKŁADNIE tak jak w nocie prostą funkcję do nadawania pojedynczego znaku i w pętli nieskończonej wysyłaj go powiedzmy co sekundę do terminala. Oczywiście przed pętlą główną zainicjalizuj już poprawnie UART<br /><br />pamiętaj o właściwym ustawieniu fusebitów<br /><br />TO JEST NAJPROSTSZY TEST - który ZAWSZE MUSI działać i wspominam o tym w bluebooku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />a wszystko zrobisz na podstawie TYLKO i wyłącznie noty PDF<br /><br />wtedy będziesz miał pewność że strona programowa MUSI działać a jeśli nie będzie komunikacji to znaczy że masz coś nieteges po stronie sprzętowej<br /><br />wtedy<br /><br />1. sprawdzasz fusebity<br />2. sprawdzasz kable/przejściówkę bo może ją masz spapraną<br />3. sprawdzasz ustawienia terminala<br /><br />nie ma że boli musi działać<br /><br />a jak wpadnie ci w łapki Bluebook i poczytasz to wtedy ci się już to w ogóle ładnie w całość ułoży<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 gru 2013, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T19:37:19+01:00</updated>
<published>2013-12-04T19:37:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59679#p59679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59679#p59679"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59679#p59679"><![CDATA[
Niestety nie wiem co to Bluebook. Wielki to grzech dla poczatkującego elektronika?<br /><br />----Edit<br />Sprawdziłem <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic4630.html" >topic4630.html</a><!-- l -->, niestety nie posiadam.<br />Ale już wypożyczyłem, do odebrania w czwartek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 19:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T19:30:11+01:00</updated>
<published>2013-12-04T19:30:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59676#p59676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59676#p59676"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59676#p59676"><![CDATA[
poczekaj - bo może ja czegoś nie wiem - masz ty Bluebooka i najprostsze z niego przykłady czy nie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 gru 2013, o 19:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T19:23:09+01:00</updated>
<published>2013-12-04T19:23:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59674#p59674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59674#p59674"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59674#p59674"><![CDATA[
Nie napisałem.. sprawdziłem dla 1 bitu stopu i dla dwóch, zmieniając to również w terminalu... niestety ten nie odpowiada<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T19:14:50+01:00</updated>
<published>2013-12-04T19:14:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59670#p59670</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59670#p59670"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59670#p59670"><![CDATA[
<div class="quotetitle">Picowaty91 napisał(a):</div><div class="quotecontent"><br />Kiedy stosuje się 1 a kiedy 2 bity stopu?<br /></div><br /><br />kiedy ? .... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> wtedy kiedy tego chcesz nikt ci tu niczego nie narzuca. Ważne żeby pamiętać że jeśli użyjesz 2 bity stopu w procku to ustawić 2 bity w terminalu i analogicznie z jednym bitem. A skoro ustawiasz bit USBS to znaczy że nadal włączasz 2 bity stopu przecież<br /><br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br /><br />więc albo w terminalu ustaw pan 2 bity stopu albo tak jak już wcześniej wpadłeś na ten pomysł w ogóle nie ustawiaj tego bitu i będziesz miał 1 bit stopu<br /><br />albo oglądaj moje poradniki gdzie wspominam o taki ala pseudo tricku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> że w ogóle tą linię zakomentuj a uzyskasz prawidłowo ramkę<br /><br />8,n,1<br /><br /><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=54">mirekk36</a> — 4 gru 2013, o 19:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T18:45:33+01:00</updated>
<published>2013-12-04T18:45:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59666#p59666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59666#p59666"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59666#p59666"><![CDATA[
Zgadzam się Panie Mirku co do gotowców. <br />Będę posłusznie wykonywał polecenia i mam nadzieję się czegoś nauczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />zmieniłem program:<br />[syntax=c]/*<br /> * myuatr.h<br /> */<br /><br />#ifndef MYUATR_H_<br />#define MYUATR_H_<br /><br />#define UART_BAUD 2400  <br />#define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1)  <br /><br /><br />void USART_Init( uint16_t _UBRR );<br />void USART_Transmit(unsigned char data);<br />//static int uart_putchar(char c, FILE *stream)<br />//void put_char(unsigned char byte);<br /><br />#endif /* MYUATR_H_ */[/syntax]<br /><br />[syntax=c]/*<br /> * myuart.c<br /> */<br />#include &quot;avr/io.h&quot;<br />#include &quot;myuart.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br /><br /><br />void USART_Init( uint16_t _UBRR )<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(_UBRR&gt;&gt;8);<br />UBRRL = (unsigned char)_UBRR;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /><br /><br />void USART_Transmit( unsigned char data )<br />{<br />//Wait for empty transmit buffer <br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />;<br />// Put data into buffer, sends the data <br />UDR = data;<br />}<br /><br />/*void uart_init( uint16_t _UBRR )<br />{<br />// Set baud rate <br />UBRRH = _UBRR&gt;&gt;8;<br />UBRRL = _UBRR;<br /><br />// Enable receiver and transmitter <br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br /><br />// Set frame format: 8 bit, no parity, 1 stop bit,   <br />UCSRC = (1&lt;&lt;URSEL)|(0&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br /><br />stdout = &amp;mystdout; //Required for printf init<br /><br />}<br />void put_char(unsigned char byte)<br />{<br />// Wait for empty transmit buffer <br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />//Put data into buffer, sends the data <br />UDR = byte;<br />} <br /><br /><br />static int uart_putchar(char c, FILE *stream)<br />{<br />    if (c == '\n') uart_putchar('\r', stream);<br />  <br />    loop_until_bit_is_set(UCSRA, UDRE);<br />    UDR = c;<br />    <br />    return 0;<br />}<br />*/[/syntax]<br /><br />[syntax=c]/* <br />TEST UART<br /><br />*/<br /><br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;myuart.h&quot;<br /><br /><br />int main(void){<br />USART_Init( uint16_t _UBRR );<br />char zmienna = &quot;a&quot;;<br /><br />while(1){<br />//put_char(zmienna);<br />USART_Transmit(zmienna);<br />printf(&quot;1/n&quot;);<br />delay(1000);<br />}<br />}[/syntax]<br /><br />Jednak wynik na terminalu tak jak poprzednio.<br />Kiedy stosuje się 1 a kiedy 2 bity stopu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T18:21:59+01:00</updated>
<published>2013-12-04T18:21:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59665#p59665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59665#p59665"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59665#p59665"><![CDATA[
Bo w tej jednej linijce popełniłeś nie JEDEN błąd panie .... i sam widzisz jak zaczynasz czytać to zaczynasz dochodzić do sedna ... już wiesz że ustawiałeś 2 bity stopu zamiast jednego ...<br /><br />a co do książki i noty PDF ... to powiedz mi ile razy można człowiekowi początkującemu przypominać - że PODSTAWA PODSTAW to nota PDF .... <br /><br />panie kochany no proszę ... skoro już ją masz w łapkach to powiedz mi po jaki gwint ? albo inaczej co powoduje w twojej głowie- że zamiast zrobić tak jak masz w nocie ! jeśli nie rozumiesz nawet jakiegoś bitu czy ustawienia - to ty sobie wymyślasz - na podstawie czego ? no właśnie czego ? .... że ty zrobisz z jakimś tam bitem którego nie rozumiesz INACZEJ ?<br /><br />no tak to daleko nie zajedziesz <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />-------------------------------------------<br /><br />kolejna podpowiedź - bo już jesteś blisko, skoro wiesz jak zmienić ilość bitów stopu, skoro wiesz jak zmienić ilość bitów w ramce - to weź że pan resztę też zrób zgodnie z notą PDF i nie dodawaj własnych udziwnień <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> i sprawdź czy działa<br /><br />i ZAPAMIĘTAJ NA CAŁE ŻYCIE programisty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i elektronika - jeśli ci coś nie wychodzi wg książki, wg kursu czy wg poradnika z kosmosu - to ZAWSZE SIĘGNIJ DO NOTY PDF I ZRÓB WG NOTY - to MUSI WYJŚĆ .... .<br /><br />i teraz pokaż kod inicjalizacji po poprawkach to polecimy dalej ....<br /><br />sorry że ja nie pokazuję wprost i nie daję gotowca tylko zmuszam do myślenia. Ale niestety podanie gotowca zwykle skutkuje wygenerowaniem setek kolejnych pytań a w efekcie końcowym nawet chęcią abym napisał za kogoś gotowy cały program.<br /><br />Po co ? ... jak się zrozumie o co chodzi to się później nie popełnia błędów<br /><br />i ja na twoim miejscu to gdybym nie rozumiał czegoś z noty to bym o to dopytywał żeby zrozumieć - zamiast pytać gdzie popełniłem błędy w całym programie ? którego widać że tak troszkę przepisujesz skądś albo sklejasz z różnych niezrozumiałych dla siebie kawałków ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 gru 2013, o 18:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T17:41:07+01:00</updated>
<published>2013-12-04T17:41:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59659#p59659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59659#p59659"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59659#p59659"><![CDATA[
Ano właśnie, że starałem się robić zgodnie z notą katalogową.<br /><br />Napisane jest w niej:<br />[syntax=c]void USART_Init( unsigned int baud )<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(baud&gt;&gt;8);<br />UBRRL = (unsigned char)baud;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}[/syntax]<br /><br />Dalej w książce Pana Klimasza o rs232 że UCSZ odpowiada za długość znaku. Jeśli w przykładzie jest jak byk że 8 data i 3&lt;&lt;UCSZ0 wiec przyjąłem tak samo. <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Bit 7 – URSEL: Register Select<br />Ustawienie tego bitu powoduje wybranie rodzaju dostepu do rejestrów UCSRC lub UBRRH.<br />Jesli zapisany jako jeden – czytanie UCSRC. Jesli zapisujemy do UCSRC bit URSEL musi byc<br />ustawiony na jeden.<br /></div> tego szczerze mówiąc nie rozumiem, więc nie ustawiałem.. może tu jest mój błąd?<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />UCSBS: Stop Bit Select<br />Za pomoca tego bitu wybiera sie ilosc bitów stopu: 1 bit (USBS=0), 2 bity (USBS=1).<br />Potrzebne jest to przy nadawaniu. Odbiornik ignoruje te ustawienia.<br /></div> - w programie o który wcześniej pytałem (na atmedze328) miałem 1 bit stopu i chodziło, więc tu ustawiłem podobnie.<br /><br />Przepraszam za swoją ignorancję - nadal nie widzę gdzie popołniłem błąd mimo Twoich rad. Możesz dać mi jeszcze jakąś podpowiedź?<br /><br />----Edit1<br />Sorry już widzę  (jeśli o to chodzi- gadam, że chce 1 bit stopu a ustawiam 2 tak?)<br /><br />----Edit2<br />Kurde, nadal nie działa.. Proszę wytłumacz mi o co chodzi?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 17:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-04T17:25:32+01:00</updated>
<published>2013-12-04T17:25:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59657#p59657</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59657#p59657"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59657#p59657"><![CDATA[
<div class="quotetitle">Picowaty91 napisał(a):</div><div class="quotecontent"><br />        // Set frame format: 8 bit, no parity, 1 stop bit,  <br />        UCSRC = (1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br /></div><br /><br />a kolega jak używa jakiejś biblioteki to chociaż wie o co w niej chodzi ? czy tylko tak na chybił trafił - może zadziała a może nie zadziała ?<br /><br />przy takiej inicjalizacji wcale nie dziwne że nie działa ...<br /><br />1. zajrzyj do noty PDF<br />2. postaraj się zrozumieć przykład z tej noty bo go masz tam<br />3. jak czegoś nie rozumiesz z noty to dopytaj<br /><br />wtedy jak zrozumiesz to już napiszesz prawidłową inicjalizację ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 gru 2013, o 17:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-04T16:32:07+01:00</updated>
<published>2013-12-04T16:32:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59653#p59653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59653#p59653"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59653#p59653"><![CDATA[
Dobrze, to zacznijmy od poczatku:<br /><br />Atmaga32-16PU, oscylator wewnętrzny 1Mhz,<br /><br />[syntax=c]/*<br /> * myuatr.h<br /> */<br /><br />#ifndef MYUATR_H_<br />#define MYUATR_H_<br /><br />#define UART_BAUD 2400  <br />#define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1)  <br /><br /><br />void uart_init( uint16_t _UBRR );<br />static int uart_putchar(char c, FILE *stream)<br />void put_char(unsigned char byte);<br /><br />#endif /* MYUATR_H_ */[/syntax]<br /><br /><br />[syntax=c]/*<br /> * myuart.c<br /> */<br />#include &quot;avr/io.h&quot;<br />#include &quot;myuart.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />void uart_init( uint16_t _UBRR )<br />{<br />// Set baud rate <br />UBRRH = _UBRR&gt;&gt;8;<br />UBRRL = _UBRR;<br /><br />// Enable receiver and transmitter <br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br /><br />// Set frame format: 8 bit, no parity, 1 stop bit,   <br />UCSRC = (1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br /><br />stdout = &amp;mystdout; //Required for printf init<br /><br />}<br /><br />static int uart_putchar(char c, FILE *stream)<br />{<br />    if (c == '\n') uart_putchar('\r', stream);<br />  <br />    loop_until_bit_is_set(UCSRA, UDRE);<br />    UDR = c;<br />    <br />    return 0;<br />}<br /><br /><br />void put_char(unsigned char byte)<br />{<br />/* Wait for empty transmit buffer */<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />/* Put data into buffer, sends the data */<br />UDR = byte;<br />}[/syntax]<br /><br />[syntax=c]/* <br />TEST UART<br />main.c<br />*/<br /><br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;myuart.h&quot;<br /><br /><br />int main(void){<br />uart_init( uint16_t _UBRR );<br />char zmienna = &quot;a&quot;;<br /><br />while(1){<br />put_char(zmienna);<br />printf(&quot;1/n&quot;);<br />delay(1000);<br />}<br /><br />}[/syntax]<br />Terminal nic nie reaguje, tzn nic nie wyświetla. Gdzie mój błąd? Biblioteka jest zła?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 4 gru 2013, o 16:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2013-12-03T10:13:26+01:00</updated>
<published>2013-12-03T10:13:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59453#p59453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59453#p59453"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59453#p59453"><![CDATA[
Może zależności czasowe muszą być spełnione.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 3 gru 2013, o 10:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-03T10:10:22+01:00</updated>
<published>2013-12-03T10:10:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59451#p59451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59451#p59451"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59451#p59451"><![CDATA[
ok, działa już chociaż mam pytanie. Czemu przy 1Mhz i 8Mhz czujnik ciśnienia daje mi inne wyniki?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 3 gru 2013, o 10:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-02T20:38:23+01:00</updated>
<published>2013-12-02T20:38:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59416#p59416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59416#p59416"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59416#p59416"><![CDATA[
No kolega WSZYSTKO od samego początku robi źle <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> i aż się dziwię, że piszesz w wątku gdzie masz pokazane co i jak ... tymczasem wygląda tak jakbyś w ogóle tego nie przeczytał.<br /><br />Ale po kolei - źle ustawione fusebity - no bo piszesz że ustawiasz niby kwarc 8MHz ... no i OK ale jednocześnie masz pozostawiony CKDIV8, który dzieli tę częstotliwość przez 8 - więc jak myślisz - jaką częstotliwością masz taktowany procek ?<br /><br />Druga sprawa skąd się bierze u was panowie to stosowanie <br /><br />#define FOSC ??? <br /><br />masz na dole artykułu wyraźnie pokazane:<br /><br />[syntax=c]#define UART_BAUD 9600  <br />#define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1)[/syntax]<br /><br />dlaczego z tego nie korzystasz ??? F_CPU<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />poza tym taka inicjalizacja pinów:<br /><br />[syntax=c]//1 = output, 0 = input<br />        DDRB = 0b01100000; //PORTB4, B5 output<br />    DDRC = 0b00010000; //PORTC4 (SDA), PORTC5 (SCL), PORTC all others are inputs<br />    DDRD = 0b11111110; //PORTD (RX on PD0), PD2 is status output<br />        PORTC = 0b00110000; //pullups on the I2C bus[/syntax]<br /><br />to po prostu masakra <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> pomijam już brak formatowania kodu ale proponują zacząć używać przesunięć bitowych<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />to takie luźne uwagi - ale wystarczy że przemyślisz pkt.1 o którym wspomniałem i już zacznie ci śmigać RS232 <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=54">mirekk36</a> — 2 gru 2013, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Picowaty91]]></name></author>
<updated>2013-12-02T20:20:20+01:00</updated>
<published>2013-12-02T20:20:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59411#p59411</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59411#p59411"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=59411#p59411"><![CDATA[
Witam,<br /><br />Odświeżę trochę temat:<br /><br />Używam Atmegi328P-PU, podłączyłem kwarc 8Mhz.<br />Fusebity ustawiłem: efuse = 07, hfuse= D9, lfuse = 5D czyli odpowiadający mu <a href="http://forum.atnel.pl/_obrazki/o/2119/c963387e26f8bcdbd2329226ab462497.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/c963387e26f8bcdbd2329226ab462497.jpg" alt="Obrazek" /></a><br /><br />W programie ustawiłem:<br />[syntax=c]#define FOSC 4000000  <br />#define BAUD 2400[/syntax]<br /><br />[syntax=c]void ioinit (void)<br />{<br />    //1 = output, 0 = input<br />DDRB = 0b01100000; //PORTB4, B5 output<br />    DDRC = 0b00010000; //PORTC4 (SDA), PORTC5 (SCL), PORTC all others are inputs<br />    DDRD = 0b11111110; //PORTD (RX on PD0), PD2 is status output<br />PORTC = 0b00110000; //pullups on the I2C bus<br /><br />UART_Init((unsigned int) ((FOSC + (16*BAUD)/2)/(16 * BAUD)-1 ));// ocillator fq/16/baud rate -1<br />}<br /><br />void UART_Init( unsigned int ubrr)<br />{<br />// Set baud rate <br />UBRR0H = ubrr&gt;&gt;8;<br />UBRR0L = ubrr;<br /><br />// Enable receiver and transmitter <br />UCSR0A = (0&lt;&lt;U2X0);<br />UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);<br /><br />// Set frame format: 8 bit, no parity, 1 stop bit,   <br />UCSR0C = (1&lt;&lt;UCSZ00)|(1&lt;&lt;UCSZ01);<br /><br />stdout = &amp;mystdout; //Required for printf init<br />}[/syntax]<br /><br />Wysyłam dane tzn. wartości z czujnika ciśnienia.<br />Wynik:<br /><a href="http://forum.atnel.pl/_obrazki/o/2119/c7a0dc5b9e060914bf66e42ef6053f65.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2119/c7a0dc5b9e060914bf66e42ef6053f65.jpg" alt="Obrazek" /></a><br /><br /><br />Co robię źle?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2119">Picowaty91</a> — 2 gru 2013, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-03T19:01:16+01:00</updated>
<published>2013-04-03T19:01:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32993#p32993</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32993#p32993"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32993#p32993"><![CDATA[
No i właśnie o to chodzi Arcadio - nie ma to jak sprawdzić na własnym organiźmie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> aczkolwiek pewnie się zdziwisz w pierwszych testach - że niby przy U2X=1 także wszystko działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... niestety jeśli zaczniesz wszystkie projekty na tym robić - mające działać na długo i na poważnie, na RS485 itp .... to sam powoli zaczniesz dostrzegać - że tu nie chodzi o to że w testach zaraz po kilku próbach miałoby wyjść że jest BEEE .... no ale ... to właśnie jest kwestia prób i własnych doświadczeń <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=54">mirekk36</a> — 3 kwi 2013, o 19:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arcadio]]></name></author>
<updated>2013-04-03T17:11:20+01:00</updated>
<published>2013-04-03T17:11:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32965#p32965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32965#p32965"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32965#p32965"><![CDATA[
Dzięki Mirek za info.<br />Nie mniej jednak mam jakiś niedosyt ale zaczekam aż coś sobie wymyślę i aby to <span style="text-decoration: underline">naocznie</span> sprawdzić co daje zmiana U2X0 i jakie to generuje błędy ale wcześniej jeszcze dużo nauki przede mną i pewnie wybiegłem troszkę do przodu <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=1136">Arcadio</a> — 3 kwi 2013, o 17:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-03T07:19:11+01:00</updated>
<published>2013-04-03T07:19:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32878#p32878</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32878#p32878"/>
<title type="html"><![CDATA[Re: Jak prawidłowo obliczać UBRR dla transmisji RS232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2025&amp;p=32878#p32878"><![CDATA[
Witamy Arcadio, a jeśli chodzi o bit U2X to nie jest on do zwiększania czy zmniejszania prędkości - chociaż tak by się wydawać mogło a bardziej do zwiększenia elastyczności doboru prędkości baudrate dla danego taktowania ale ta możliwość czyli wybór U2X=1 jest niestety kosztem czegoś .... przez co jak zauważyłeś większość jednak tego nie stosuje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i słusznie zauważyłeś. Jak doczytasz dokładnie w nocie PDF to działanie U2X=1 związane jest PRZEDE wszystkim ze zmianą rozdzielczości próbkowania sygnału, dokładniej mówiąc z jej zmniejszeniem - przez co są te nieco większe możliwości ale jednocześnie narażamy się na większą możliwość błędów podczas transmisji a dokładniej mówiąc możliwości iż błędnie zostaną zinterpretowane stany poszczególnych bitów. Czasem gdy transmisja RS232 nie ma najwyższej wagi, i przy porządnym taktowaniu np z rezonatora kwarcowego - można sobie na taki zabieg pozwalać. W innych wypadkach albo najlepiej zawsze korzystać z U2X=0. Tak to wygląda mniej więcej.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: wczoraj, o 23:20 ]</span></strong><br /><br />Przy okazji bardzo fajny cytat w twoim podpisie <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=54">mirekk36</a> — 3 kwi 2013, o 07:19</p><hr />
]]></content>
</entry>
</feed>