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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-12-13T14:29:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21697&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-12-13T14:29:10+01:00</updated>
<published>2018-12-13T14:29:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214624#p214624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214624#p214624"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214624#p214624"><![CDATA[
Póki co, na próbę przesyłane są pojedyncze znaki.<br />Dobrze że są plany przesyłania ciągu znaków, dlatego mam nadzieję że dobrniemy do bufora cyklicznego i całej reszty.<br /><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=11549">Daro69</a> — 13 gru 2018, o 14:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MagdalenaKlimkiewicz]]></name></author>
<updated>2018-12-13T09:08:01+01:00</updated>
<published>2018-12-13T09:08:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214600#p214600</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214600#p214600"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214600#p214600"><![CDATA[
Super. Jak wroce po zajeciach do domu to na pewno dokonam kilku zmian w kodzie. Podejme sie tez proby odbierania danych string. Jesli pojawia sie problemy to bede musiala Was jeszcze dzis poprosic o wsparcie. Na chwile obecna dziekuje za wyjasnienia. <br />W odpowiedzi na sugestie uzytkownika '' micky'' ... list do mikolaja juz napisany, pod choinka znajdzie sie ksiazka Pana Mirka <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=20394">MagdalenaKlimkiewicz</a> — 13 gru 2018, o 09:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-12-13T08:04:21+01:00</updated>
<published>2018-12-13T08:04:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214598#p214598</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214598#p214598"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214598#p214598"><![CDATA[
Można tak jak JarekB podpowiada, z tym że  wynik = 0; ...NULL;...'\0';<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 13 gru 2018, o 08:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-12-13T07:04:17+01:00</updated>
<published>2018-12-13T07:04:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214597#p214597</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214597#p214597"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214597#p214597"><![CDATA[
Ja bym proponował zacząć od przeczytania Bluebooka, jeśli chcesz zacząć przygodę z mikrokontrolerami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 13 gru 2018, o 07:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-12-13T06:53:02+01:00</updated>
<published>2018-12-13T06:53:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214596#p214596</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214596#p214596"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214596#p214596"><![CDATA[
Po przeczytaniu rejestru UDR jest on automatycznie czyszczony<br /><br />Nieelegancki sposób na rozwiązanie Twojego problemu to zmiana zmiennej &quot;wynik&quot; [syntax=c]if(wynik=='a') <br />                         {<br />USART0_wyslij_znak('t');<br />wynik=  'b'                            <br />                         }[/syntax]<br />Do testów wystarczy.<br /><br /><br /><em>&quot;Pytanie tylko czy zawsze kiedy będę stosować przerwania zmienna nie będzie się prawidłowo pobierała i dla pewności umieszczać volatile&quot;</em><br />Jeśli zmienna ma być &quot;dostępna&quot; i w przerwaniu i w kodzie to podczas jej deklaracji musi być poprzedzona volatile<br />Trudno mówić o prawidłowym czy nieprawidłowym pobieraniu. To jest raczej właściwość.<br />I skoro jest to właściwość to tylko od Ciebie zależy w jaki sposób  zmienna ma być widoczna.<br /><br />Jest kilka sposobów powiedzenia kompilatorowi jak się ma zmienna zachowywać: const static volatile.....<br />Każdy z nich powoduje że zmienna &quot;nabywa&quot; innych cech. I w inny sposób kompilator ją traktuje.<br />Odpowiadając na Twoje pytanie:<br /><em>&quot;Istnieją jakieś metody na zidentyfikowanie, która z naszych zmiennych wymaga takiego podejścia ?&quot;</em><br />Jeśli opanujesz jakie cechy będzie miała zmienna poprzedzona tym czy innym specyfikarorem, to nadasz jej właściwości takie jakie będziesz potrzebowała. Czyli metodą jest zrozumienie mechanizmu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 13 gru 2018, o 06:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MagdalenaKlimkiewicz]]></name></author>
<updated>2018-12-12T22:10:58+01:00</updated>
<published>2018-12-12T22:10:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214595#p214595</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214595#p214595"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214595#p214595"><![CDATA[
Hah no właśnie wiem co jest powodem tej sytuacji ale nie wiem jak temu zaradzić niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Bez względu na rodzaj zastosowanej petli program nadal bedzie odpowiadał nieskończoną ilością&quot; t &quot; ponieważ główny kod programu zawarty jest w pętli while. Wychodzi na to że trzeba wyczyścić UDR0 ?!  Tak aby ponownie nie wykonało się przerwanie ? Nie wiem, zgaduje :/ brak pomysłów. <br /><br />Panie Jarku dziękuje za wyjaśnienie. Wygląda na to, że rozumiem. Pytanie tylko czy zawsze kiedy będę stosować przerwania zmienna nie będzie się prawidłowo pobierała i dla pewności umieszczać volatile. Istnieją jakieś metody na zidentyfikowanie, która z naszych zmiennych wymaga takiego podejścia ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20394">MagdalenaKlimkiewicz</a> — 12 gru 2018, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-12-12T22:04:15+01:00</updated>
<published>2018-12-12T22:04:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214594#p214594</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214594#p214594"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214594#p214594"><![CDATA[
Co do volatile.<br />Gdy &quot;go&quot; nie ma to do czynności wykonywanej przez jakąś część programu <br />przekazywana jest kopia tej zmiennej. <br />Volatile powoduje że operacje wykonywane są na &quot;pierwowzorze&quot;<br />Czyli w Twoim przypadku &quot;bez&quot; to co się dzieje w przerwaniu nie jest widoczne w pętli głównej.<br />Nie potrafię tego precyzyjniej napisać<br /><br />Co do pierwszego.<br />Częstotliwość pracy procesora ustawiana jest gdzie indziej.<br />Tu jakbyś dublowała to ustawienie.<br />Korzystam z Mirkowego MkCLIPSA i tam jest wybór procka w projekcie.<br />W Eclipsie (którego nie widziałem na oczy ) też tak jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 12 gru 2018, o 22:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2018-12-12T21:59:23+01:00</updated>
<published>2018-12-12T21:59:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214593#p214593</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214593#p214593"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214593#p214593"><![CDATA[
Widzi koleżanka , milion odpowiedzi wynika z faktu że spełniony jest warunek if (wynik = 'a') <br />i pętla sobie leci ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 12 gru 2018, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MagdalenaKlimkiewicz]]></name></author>
<updated>2018-12-12T21:45:56+01:00</updated>
<published>2018-12-12T21:45:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214591#p214591</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214591#p214591"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214591#p214591"><![CDATA[
Zgodnie z zaleceniem zmiany zostały wprowadzone. Co prawda to nie pomogło, ale ciągle polegam na dokumantacji PDF i dopatrzyłam się że rejestr UCSR0B odpowada za odblokowanie przerwań ( jeśli dobrze to rozumiem ). Po drobnej zmianie :<br />[syntax=c]UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(1&lt;&lt;RXCIE0)|(1&lt;&lt;TXCIE0);[/syntax]<br />Program faktycznie działa i wykonuje przerwanie. Jest to jednak tylko połowiczna radość z mojej strony ponieważ po wpisaniu w terminal litery &quot;a&quot; w odpowiedzi dostaje miliony znaków &quot;t&quot;.  W jaki sposób mogę uzyskać w odpowiedzi tylko pojedynczy znak ? :/<br />Odpowiadając na Twoje dodatkowe pytanie... &quot;teoretycznie&quot; rozumiem znacznie zmiennej volatile ( chociaż to bardzo intuicyjne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) niestety w tej sytuacji zupełnie o tym zapomniałam, mój błąd przyznaje. Skąd sugestia usunięcia pierwszej lini ? Taka definicja taktowania atmegi ma negatywny wpływ na kompilację kodu ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20394">MagdalenaKlimkiewicz</a> — 12 gru 2018, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-12-12T21:35:49+01:00</updated>
<published>2018-12-12T21:35:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214590#p214590</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214590#p214590"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214590#p214590"><![CDATA[
<div class="quotetitle">JarekB napisał(a):</div><div class="quotecontent"><br />volatile unsigned char wynik;<br /></div><br />a ja uzupełnię poza pozostałymi POPRAWNYMI uwagami, że powinno być:<br /><br />[syntax=c]volatile char wynik;[/syntax]<br /><br />bez żadnego kociego &quot;unsigned&quot; w AVR GCC<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 gru 2018, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JarekB]]></name></author>
<updated>2018-12-12T21:19:17+01:00</updated>
<published>2018-12-12T21:19:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214589#p214589</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214589#p214589"/>
<title type="html"><![CDATA[Re: ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214589#p214589"><![CDATA[
Zacząłbym od wywalenia linijki [syntax=c]#define F_CPU 16000000UL[/syntax]<br />To po pierwsze<br />Po drugie[syntax=c]unsigned char wynik;[/syntax] powinno być:<br />[syntax=c]volatile unsigned char wynik;[/syntax]<br />Dalej popatrzę albo i koledzy coś wynajdą.<br /><br />P/S <br />Po co volatile to pewnie wiesz a jak nie to wyjaśnię.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18188">JarekB</a> — 12 gru 2018, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MagdalenaKlimkiewicz]]></name></author>
<updated>2018-12-12T20:58:38+01:00</updated>
<published>2018-12-12T20:58:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214588#p214588</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214588#p214588"/>
<title type="html"><![CDATA[ATMEGA2560 problem z przerwaniem UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21697&amp;p=214588#p214588"><![CDATA[
Cześć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />To moje pierwsze pytanie na forum więc proszę o cierpliwość. Nie czuje się w dziedzinie programowania zbyt pewnie, przygodę zaczęłam dopiero 2 miesiące temu na studiach. Mam problem z przerwaniem USART w mikrokontrolerze ATMEGA2560. Podejrzewam, że problem tkwi w kodzie ponieważ wysyłanie danych działa idealnie. Odbieranie pojedynczych znaków tez ... ale tylko gdy umieszczam instrukcje odbierania w pętli while. Niestety nie dziala przerwanie. Czy mógłby mnie ktoś wspomóc dobrą radą ? <br />Dodam że ATMEGA posiada zewnętrzny oscylator kwarcowy 16MHz, fusebit'y ustawione są na pewno poprawnie. Odblokowałam też główne zezwolenia na przerwania globalne w rejestrze SREG<br /><br /><br />[syntax=c]#define F_CPU 16000000UL<br />#define BAUD 9600<br />#define UART0_wzor F_CPU/16/BAUD-1     // wzor na ustawienie parametrow UART0<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;math.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />unsigned char wynik;<br />void USART0_Inicjalizacja(unsigned int ubrr);<br />void USART0_wyslij_znak(unsigned char data);<br /><br />void USART0_Inicjalizacja( unsigned int ubrr)<br />{<br />UBRR0H = (unsigned char)(ubrr&gt;&gt;8);        <br />UBRR0L = (unsigned char)ubrr;<br />UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);            <br />UCSR0C = (!(1&lt;&lt;USBS0))|(1&lt;&lt;UCSZ01)|(1&lt;&lt;UCSZ00);<br />}<br /><br />void USART0_wyslij_znak(unsigned char data)<br />{<br />while ( !( UCSR0A &amp; (1&lt;&lt;UDRE0)) );<br />UDR0 = data;<br />}<br /><br />void USART0_wyslij_string(char * s)<br />{<br />while(*s)<br />USART0_wyslij_znak(*s++);<br />}<br /><br />unsigned char USART0_odbierz_znak(void)<br />{<br /> while(!(UCSR0A &amp; (1&lt;&lt;RXC0)));<br /> return UDR0;<br />}<br /><br /><br /> int main(void)<br />    {<br />DDRE=0b11111111;<br />UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(1&lt;&lt;RXC0);<br />USART0_Inicjalizacja(UART0_wzor); <br /><br />    sei();<br />     while(1)<br />     {<br />     if(wynik=='a')<br />          {<br />          USART0_wyslij_znak('t');<br />          }<br /><br />     }<br />  }<br /><br /> ISR(USART0_RX_vect)<br />  {<br />wynik=UDR0;<br />  }[/syntax]<br /><br />Korzystam z programu Tera Term. Mimo wysyłania znaku &quot;a&quot; brak reakcji <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=20394">MagdalenaKlimkiewicz</a> — 12 gru 2018, o 20:58</p><hr />
]]></content>
</entry>
</feed>