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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-03T19:41:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11551&amp;mode</id>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-05-03T19:41:45+01:00</updated>
<published>2015-05-03T19:41:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=128149#p128149</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=128149#p128149"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=128149#p128149"><![CDATA[
A jak u ciebie wygląda dokładność przy 250000kbps ? <br />Może przez przypadek oscylator był ustawiony na 1 MHz, i to wygenerowało problemy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 3 maja 2015, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lgabryel]]></name></author>
<updated>2015-05-01T08:53:57+01:00</updated>
<published>2015-05-01T08:53:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127926#p127926</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127926#p127926"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127926#p127926"><![CDATA[
Może nie ma wewnętrznego kwarcu, ale jest oscylator <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Co do tabelki to wiem o niej i błąd dla 8Mhz jest taki sam, jak dla 12Mhz, problem z dokładnością tego oscylatora, bo z tego wynika, że nie działa on zawsze równo ( ten wewnętrzny).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9590">lgabryel</a> — 1 maja 2015, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz...]]></name></author>
<updated>2015-05-01T08:01:50+01:00</updated>
<published>2015-05-01T08:01:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127921#p127921</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127921#p127921"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127921#p127921"><![CDATA[
Heheheh.<br />Po pierwsze nie ma czegoś takiego jak wewnętrzny kwarc <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />.<br />Po drugie tu nie chodzi o niedokładność taktowania samego procka, a o niedokładność w stosunku do prędkości USART-a.<br />Dla ATMegi8 wszystko jest w tabelkach od str. 154 DS-a.<br /><br />-- <br />Pozdrawiam.<br />Grzegorz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1748">Grzegorz...</a> — 1 maja 2015, o 08:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lgabryel]]></name></author>
<updated>2015-04-30T21:15:55+01:00</updated>
<published>2015-04-30T21:15:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127907#p127907</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127907#p127907"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127907#p127907"><![CDATA[
Chciałem zastosować kwarc &quot;uartowy&quot;, ale nie miałem, to stwierdziłem, że te 8Mhz da mi taki sam błąd jak na krysztale ... Powiem, wam, że wiedziałem, że nie zaleca się pracy na wewnętrznym, ale sądziłem, że przy małych prędkościach jakoś ujdzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Niemniej zdeterminowaliscie mnie i wylutowałem z jakiejś starej płytki 12Mhz i.. działa ... bez zarzutu ... Dzięki za pomoc - to jesnak kwestia kwarcu - chyba już zawsze będę korzystał z zewnętrznego ... Nic - teraz pchnę swój projekt do przodu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Dzięki !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9590">lgabryel</a> — 30 kwi 2015, o 21:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[frog]]></name></author>
<updated>2015-04-30T21:06:12+01:00</updated>
<published>2015-04-30T21:06:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127905#p127905</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127905#p127905"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127905#p127905"><![CDATA[
Całkiem możliwe, że właśnie wewnętrzny rezonator jest niedokładny. Miałem podobnie przy komunikacji ATtiny2313 z terminalem Putty przez USB(czasem &quot;krzaki&quot; czasem &quot;coś normalnego&quot;). Problemem było złe wykalibrowanie wewnętrznego kwarca(mimo, że reszta ustawień była w porządku). Pan Mirek w BB na temat UART-a opisuje ten problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5970">frog</a> — 30 kwi 2015, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ryba84]]></name></author>
<updated>2015-04-30T20:30:51+01:00</updated>
<published>2015-04-30T20:30:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127901#p127901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127901#p127901"/>
<title type="html"><![CDATA[Re: Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127901#p127901"><![CDATA[
Problemem najprawdopodobniej jest rezonator wewnętrzny, a raczej jego dokładność. Sprawdź na jakimś kwarcu czy będzie dobrze bo kod wygląda ok.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3170">ryba84</a> — 30 kwi 2015, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lgabryel]]></name></author>
<updated>2015-04-30T20:25:05+01:00</updated>
<published>2015-04-30T20:25:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127899#p127899</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127899#p127899"/>
<title type="html"><![CDATA[Transmisja uart między Atmega8 i RPi]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11551&amp;p=127899#p127899"><![CDATA[
Cześć. <br /><br />Nie wiem, czy mogę tutaj prosić o pomoc - nie jestem szczęśliwym posiadaczem książki - zastanawiam się nad jej kupnem, oraz paru zabawek (usbasp czy moduły wifi). Niemniej z powodów ograniczonego budżetu w tym miesiącu nabyłem elementy niezbędne do prototypowania + RPi - mam dzięki temu komputer sterujący, jak i programator w jednym <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> W całości piszę na RPi pod ssh i tam też programuje układy. Postanowiłem zrobić siec mikrokontrolerów, które będą sterowane i odpytywane przez RPi, który będzie wyniki składował w bazie danych, dawał interface www, łączył się przez telefon etc. Zrobiłem zatem magistrale uart (docelowo ma to być rs485). Na początku na 2 Atmega8 i jednym RPi - jednak podczas wysyłania ciągu z atmegi do rpi i jego odbioru potem, okazało się, że tracę pewne dane. Problemem było ustawienie złej ilości bitów stopu. Jak ustawiłem dobrze, to teraz każdy znak, jest odbierany i wysyłany - problem, że czasami atmega odpowiada krzakami, zamiast znaku. Czasami wyśle kilkadziesiat znaków i jest ok, a czasami i już po 3-4 jest kicha i potem znów wraca do zdrowia. Podłączyłem diodę, którą migam, jak znak jest literą. Znak x robi mi echo tego co napisałem. Widzę, że jak piszę np.   test przy wpisywaniu s nie miga i faktycznie zamiast s dostaje jednoznakowego krzaka. Próbuję to robić z jedną i z dwoma atmegami - non stop to samo. W atmedze mam 8 mhz rezonator wewnętrzny. Przesyłam kod - prosiłbym o zerknięcie, czy może programowo coś źle robie ? Jak nie to z czego może wynikać takie zachowanie ? <br /><br />[syntax=c]#define F_CPU 8000000L<br />#define BAUD 2400<br />#define MYUBRR (int)F_CPU/16/BAUD-0.5<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdbool.h&gt;<br /><br />volatile char reciveByte;<br />volatile int isNewData;<br /><br /> char buf&#91;100&#93;;<br /> int indexOfLastByte;<br /><br />//funkcja inicjująca usart<br />void USART_init(unsigned int ubrr)<br />{<br />  UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />  UBRRL = (unsigned char)ubrr;<br /><br />  UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN) | (1&lt;&lt;RXC);<br /><br />  UCSRC = (1&lt;&lt;URSEL) | (1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0) | (1 &lt;&lt; UPM1);<br />}<br /><br />//transmisja bajtu<br />void USART_transmit(char data)<br />{<br />  while( !(UCSRA &amp;(1&lt;&lt;UDRE)) )<br />    ;<br />  UDR = data;<br />}<br /><br />//odbieranie bajtu<br />char USART_Recive(void)<br />{<br />  while(!(UCSRA &amp; (1&lt;&lt;RXC)))<br />    ;<br />  return UDR;<br />}<br /><br />//przerwanie przy odbiorze bajtu USART<br />ISR(USART_RXC_vect)<br />{<br />  reciveByte = UDR;<br />  isNewData++;<br />}<br /><br />int main(void){<br />  DDRC |= (1&lt;&lt;PC5);<br />  int i; //iterator<br />  //włącz usart<br />  USART_init(207);<br />  //włącz przerwania<br />  sei();<br />  while(true)<br />  {<br />    if(isNewData)<br />    {<br />      isNewData--;<br />      if (reciveByte == 'x'){<br />        USART_transmit('\n');<br />        USART_transmit('\r');<br />        for(i=0;i&lt;indexOfLastByte;i++){<br />          USART_transmit(buf&#91;i&#93;);<br />        }<br />        indexOfLastByte = 0;<br />     }else{<br />       if(reciveByte &gt; 96 &amp;&amp; reciveByte &lt; 123){<br />         PORTC |= (1&lt;&lt;PC5);<br />         _delay_ms(100);<br />         PORTC &amp;= ~(1&lt;&lt;PC5);<br />       }<br />       buf&#91;indexOfLastByte&#93; = reciveByte;<br />       indexOfLastByte++;<br />     }<br />    }<br />  }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9590">lgabryel</a> — 30 kwi 2015, o 20:25</p><hr />
]]></content>
</entry>
</feed>