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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8207&amp;mode</id>
<entry>
<author><name><![CDATA[JanuszT]]></name></author>
<updated>2014-08-20T22:55:22+01:00</updated>
<published>2014-08-20T22:55:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92246#p92246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92246#p92246"/>
<title type="html"><![CDATA[Re: Dziwne zachowanie obsługi USART_RXC_vect]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92246#p92246"><![CDATA[
Witam<br /><br />No coż...DZIĘKUJĘ.<br />Kod rzeczywiście działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />, problemem rzeczywiście było obliczanie wartości dla rejestrów UBRRH i UBRRL .<br />Pozdrawiam  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />P.S.<br />A teraz dodam jeszcze coś...DZIĘKUJĘ .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4367">JanuszT</a> — 20 sie 2014, o 22:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-08-20T22:00:53+01:00</updated>
<published>2014-08-20T22:00:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92241#p92241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92241#p92241"/>
<title type="html"><![CDATA[Re: Dziwne zachowanie obsługi USART_RXC_vect]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92241#p92241"><![CDATA[
Zapewniam cię, że ten twój kod łącznie z linią nr.5 czyli zamianą na DUŻE litery musi działać dobrze, Ba! ... on działa dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />ale jak działasz na 8MHz to szczególnie zajrzyj tutaj:<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 --><br /><br />jak obliczać UBRR<br /><br />masz tam pokazany gotowy przykład:<br /><br />[syntax=c]#define UART_BAUD 9600  <br />#define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1)[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Przełącz się też na chwilę na zewn kwarc w ATB, 11,0592MHz dla upewnienia się że nie chodzi o brak kalibracji w procku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 sie 2014, o 22:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JanuszT]]></name></author>
<updated>2014-08-20T21:41:19+01:00</updated>
<published>2014-08-20T21:41:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92239#p92239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92239#p92239"/>
<title type="html"><![CDATA[Dziwne zachowanie obsługi USART_RXC_vect]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8207&amp;p=92239#p92239"><![CDATA[
Witam<br /><br />Mam problem, i liczę, że może zechcecie mi pomóc.<br />Otóż napisałem sobie prosty programik do komunikacji z PC przez UART. Działanie polega na &quot;dawaniu echa&quot;, czyli program odsyła do PC to, co zostało mu wysłane i jednoczesnym miganiu diodą LED co 1s. Program działa (i to nawet &quot;na przerwaniach&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ). Kod działającego ISR to:<br />[syntax=c]ISR (USART_RXC_vect)<br />{<br />char OdebranyBajt;<br />OdebranyBajt = UDR; // Odcytane z bufora sprzętowego<br />//OdebranyBajt=OdebranyBajt-32;<br />UDR = OdebranyBajt ; // Wysłanie przez bufor sprzetowy UART=u<br />}[/syntax]<br />Zwracam uwagę na znaki komentarza w linii 5.<br /><br />W ramach dalszych działań postanowiłem, aby po otrzymaniu małej litery program odsyłał wielką. No i zima  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> . Kod ISR to:<br />[syntax=c]ISR (USART_RXC_vect)<br />{<br />char OdebranyBajt;<br />OdebranyBajt = UDR; // Odcytane z bufora sprzętowego<br />OdebranyBajt=OdebranyBajt-32;<br />UDR = OdebranyBajt ; // Wysłanie przez bufor sprzetowy UART=u<br />}[/syntax]<br />Różnica w stosunku do poprzedniego to linia 5, która tym razem nie jest komentarzem. Po tej zmianie program, zamiast grzecznie odpowiadać zaczął wysyłać po dwa znaki, w dodatku żadem z nich nie jest tym właściwym.<br />Cały kod programu (celowo wpisany do jednego pliku dla łatwiejszego czytania) to:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br /><br />#define USART_BAUDRATE 9600 //Prędkoć transmisji<br />#define BAUD_PRESCALE (F_CPU/16/USART_BAUDRATE-1) //stała do wpisu do rejestrów konfigurujących UART<br />//Deklaracje funkcji inicjalizacji &quot;Timer-a 1&quot; i UART-u<br />void timer1_CTC_Init(void);<br />void moje_UART_init(void);<br /><br />int main (void)<br />{<br /><br />DDRA|=(1&lt;&lt;PA0); //Port diody LED jako wyjciowy<br />timer1_CTC_Init(); //Inicjalizacja Timer 1 CTC<br />moje_UART_init(); //Inicjalizacja UART<br />sei(); //Globalne zezwolenie<br /><br />for (;;)  //Pętla główna<br />{}<br />return 0;<br />}<br /><br />void timer1_CTC_Init(void)<br />{<br />TCCR1B|=(1&lt;&lt;CS12); //Prescaler 256<br />TCCR1B|=(1&lt;&lt;WGM12);; //CTC<br />TIMSK|=(1&lt;&lt;OCIE1A); //CTC<br />OCR1A=31250; //1s (przy F_CPU=8MHz)<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />PORTA^=(1&lt;&lt;PA0);  //Miganie LED<br />}<br /><br />void moje_UART_init(void)<br />{<br />UCSRB = (1 &lt;&lt; RXEN ) | (1 &lt;&lt; TXEN ) | (1&lt;&lt;RXCIE);<br />UCSRC = (1 &lt;&lt; URSEL ) | (1 &lt;&lt; UCSZ0 )|(1 &lt;&lt; UCSZ1); // 8- bitów danych<br />UBRRH= (uint8_t)(BAUD_PRESCALE&gt;&gt;8) ;<br />UBRRL= (uint8_t)BAUD_PRESCALE;<br />}<br />ISR (USART_RXC_vect)<br />{<br />char OdebranyBajt;<br />OdebranyBajt = UDR; // Odcytane z bufora sprzętowego<br />//OdebranyBajt=OdebranyBajt-32;<br />UDR = OdebranyBajt ; // Wysłanie przez bufor sprzetowy UART=u<br />}[/syntax]<br />Jest w nim w zasadzie tylko inicjalizacja portów, Timera 1 i UART-u, a potem pusta pętla i procedury obsługi ISR.<br />Ponieważ z pierwszą wersją ISR komunikacja działa, więc nie mam wątpliwości odnośnie podłączenia, prędkości itp. łącze na pewno działa i jest dwukierunkowe. Nie rozumiem, dlaczego nie działa w sposób oczekiwany druga wersja ISR. Procesor to ATmega32, taktowanie wewnętrzne 8MHz, Eclipse Indigo, przejściówka na USB (ATB1.03).<br /><br />Będę bardzo wdzięczny za podpowiedzi.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4367">JanuszT</a> — 20 sie 2014, o 21:41</p><hr />
]]></content>
</entry>
</feed>