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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-08T22:07:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=8453&amp;mode</id>
<entry>
<author><name><![CDATA[torkness]]></name></author>
<updated>2014-09-08T22:07:45+01:00</updated>
<published>2014-09-08T22:07:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94761#p94761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94761#p94761"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94761#p94761"><![CDATA[
Wielkie dzięki za pomoc i edycję kodu. Faktycznie nie zauważyłem tych 2 bitów stopu. Już miałem płakać że znowu źle a tu nie zauważyłem że bauda mi zmieniłeś <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> dziękuje wam bardzo Panowie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5748">torkness</a> — 8 wrz 2014, o 22:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-09-08T21:55:00+01:00</updated>
<published>2014-09-08T21:55:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94757#p94757</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94757#p94757"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94757#p94757"><![CDATA[
Częstotliwość oscylatora ustawiamy w Project Properties--&gt;AVR--&gt;Target Hardware<br /><br />Poprawiłem troszkę kod<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />//#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br /><br /><br />#define USART_BAUD 19200<br />#define USART_UBBR_VALUE ((F_CPU/(USART_BAUD*16UL))-1)<br /><br />/*UART*/<br />void USART_Init(uint16_t ubrr) ;<br />void USART_Transmit( char data ) ;<br />//char USART_Receive( void ) ;<br /><br />int main()<br />{<br />DDRB=0xff;<br />PORTB=0xff;<br /><br />char z = 'a';<br />USART_Init(USART_UBBR_VALUE); //tu wstawiam tez na sztywno 51 lub 103 i nic<br /><br />while(1)<br />{<br />USART_Transmit (z);<br />_delay_ms(500);<br />}<br />//return 0 jest niepotrzebne<br />}<br /><br /><br />void USART_Init (uint16_t ubrr)<br />{<br />UBRRH = (uint8_t)(ubrr&gt;&gt;8);<br />UBRRL = (uint8_t) ubrr;<br /><br />UCSRB = (1&lt;&lt;RXEN) | (1&lt;&lt;TXEN);  //właczenie nadajnika i odbiornika<br />        // UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);  //8 bitów danych, 2 bity stopu<br />UCSRC = (1&lt;&lt;URSEL) | (3&lt;&lt;UCSZ0);//8 bitów danych, 1 bit stopu<br /><br />}<br /><br />void USART_Transmit( char data )<br />{<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) ) ;<br />UDR = data;<br />}[/syntax]<br /><br />Zmieniłem format wysyłanej ramki z 8 bitów danych i 2 bitów stopu na 8 bitów danych i 1 bit stopu i wzór do obliczania prędkości transmisji. Przeczytaj to <!-- m --><a class="postlink" href="http://www.atnel.pl/domyslna-promocja-do-typu-int.html" >http://www.atnel.pl/domyslna-promocja-do-typu-int.html</a><!-- m --> a dowiesz się skąd we wzorze wzięło się UL. <br /><br />I jeszcze polecam przeczytać jak prawidłowo obliczać wartość UBRR <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html" >http://mirekk36.blogspot.com/2013/01/rs ... trick.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 8 wrz 2014, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-08T21:53:00+01:00</updated>
<published>2014-09-08T21:53:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94756#p94756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94756#p94756"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94756#p94756"><![CDATA[
<div class="quotetitle">torkness napisał(a):</div><div class="quotecontent"><br />Czy jednak w innym miejscu należy zdefiniować F_CPU albo problem leży gdzieś indziej.<br /></div><br /><br />na 100% gdzie indziej - a jeśli masz kłopoty z obliczaniem UBRR to poczytaj to: <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/01/rs232-ubrr-jak-prawidowo-obliczac-trick.html" >http://mirekk36.blogspot.com/2013/01/rs ... trick.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 wrz 2014, o 21:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-08T21:53:22+01:00</updated>
<published>2014-09-08T21:44:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94753#p94753</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94753#p94753"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94753#p94753"><![CDATA[
Linie 34 i 35 zamień na:<br /><br />[syntax=c]UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;[/syntax]<br />Wartość rejestru UBRR ustawiona na 51 jest odpowiednia przy częstotliowści taktowania równej 8MHz i prędkości transmisji 9600 bps.<br /><br />Wiesz również, że ustalenie bitu USBS w rejestrze UCSRC wymusza 2 bity stopu...?<br /><br />Jeśli jest to nieporządane (może to być przyczyną problemów) to najlepiej usuń całkowicie tę linię:<br /><br />[syntax=c]UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 8 wrz 2014, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[torkness]]></name></author>
<updated>2014-09-08T21:28:46+01:00</updated>
<published>2014-09-08T21:28:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94750#p94750</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94750#p94750"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94750#p94750"><![CDATA[
Wielkie dzięki za szybką odpowiedź! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Ok, rozumiem #define F_CPU w kodzie to &quot;grzech&quot;. W eclipse w ustawieniach projektu wchodzę w c/c++ general -&gt; paths and symbols -&gt; symbols i na dole mam #F_CPU ustawione na wartość 8000000. Czyli niby jest dobrze? :/ jeśli tak to dlaczego dalej nie działa? Czy jednak w innym miejscu należy zdefiniować F_CPU albo problem leży gdzieś indziej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5748">torkness</a> — 8 wrz 2014, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-08T21:06:11+01:00</updated>
<published>2014-09-08T21:06:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94743#p94743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94743#p94743"/>
<title type="html"><![CDATA[Re: [Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94743#p94743"><![CDATA[
Tak jak wyżej w uwadze na CZERWONO - zapamiętaj twój pierwszy i PODSTAWOWY błąd to właśnie to, że definiujesz F_CPU w kodzie programu - TEGO się NIGDY nie robi <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />obejrzyj to:<br /><br /><!-- m --><a class="postlink" href="http://www.youtube.com/watch?feature=player_embedded&amp;v=UhcyBpM57vo#t=2897" >http://www.youtube.com/watch?feature=pl ... 7vo#t=2897</a><!-- m --><br /><br />a zrozumiesz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 wrz 2014, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[torkness]]></name></author>
<updated>2014-09-08T20:56:32+01:00</updated>
<published>2014-09-08T20:56:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94741#p94741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94741#p94741"/>
<title type="html"><![CDATA[[Atmega8] Uart - problem transmisji a F_CPU]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8453&amp;p=94741#p94741"><![CDATA[
Dzień dobry,<br />Staram się zrobić na początek prostą transmisję UART. Problem polega na tym, że nie wiem co robię źle. Stosowałem się do porad Mirka z bloga, kilku wątków wygrzebanych na forach czy takich poradników <a href="http://www.piekary.net/~jermi/datasheets/avr_rs232obsluga.pdf"  class="postlink">http://www.piekary.net/~jermi/datasheets/avr_rs232obsluga.pdf</a>. Próbowałem przy różnych wartościach wbudowanego F_CPU a także za pomocą kwarcu 14,7456MHz ale nic. Częstotliwość procka ustawiam w ustawieniach projektu w eclipse, na górze kodu oraz za pomocą MKVCalculator w fusebitach (w zakladce FU ustawiam interesującą mnie częstotliwość (+ CKOPT dla zewnętrznego kwarcu) a następnie w Programator AVR zapis + fusebity + wykonaj).  Cały czas leci bałagan. Przykładowo zamiast 'a' dostaję 'Ŕ'. <br /><br />&quot;Mój&quot; kod-składak:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />//#define F_CPU 14745600UL<br />#define F_CPU 8000000L <span style="color: #FF0000">// ZAPAMIĘTAJ SOBIE KOLEGO NIGDY nie definiuj F_CPU w kodzie programu - mirekk36</span><br /></div><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdint.h&gt;<br /><br />#define USART_BAUD 9600<br />#define USART_UBBR_VALUE ((F_CPU/(USART_BAUD&lt;&lt;4))-1)<br /><br />/*UART*/<br />void USART_Init(unsigned int ubrr) ;<br />void USART_Transmit( unsigned char data ) ;<br />unsigned char USART_Receive( void ) ;<br /><br />int main()<br />{<br />DDRB=0xff;<br />PORTB=0xff;<br /><br />    unsigned char z = 'a';<br />    USART_Init(USART_UBBR_VALUE); //tu wstawiam tez na sztywno 51 lub 103 i nic<br /><br />    while(1) {<br />        USART_Transmit (z);<br />        _delay_ms(50);<br />    }<br />    return 0;<br />}<br /><br /><br />void USART_Init (unsigned int ubrr)<br />{<br />    UBRRH = (unsigned char)(USART_UBBR_VALUE&gt;&gt;8);<br />    UBRRL = (unsigned char)USART_UBBR_VALUE;<br /><br />    UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<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 />    while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) ) ;<br />    UDR = data;<br />}[/syntax]<br /><br />Naprawdę nie mam już pomysłu co może być źle. Sprawdzałem na kilku uC a przejściówka i terminal (TeraTerm) powinny być ok (sprawdzane na Arduino).<br />Bardzo proszę o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Z wyrazami szacunku<br />Dawid<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5748">torkness</a> — 8 wrz 2014, o 20:56</p><hr />
]]></content>
</entry>
</feed>