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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-28T15:54:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17992&amp;mode</id>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2017-03-28T15:54:39+01:00</updated>
<published>2017-03-28T15:54:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185797#p185797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185797#p185797"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185797#p185797"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />brat_kamyka napisał(a):<br />Przecież o tym autorowi wątku pisałem z wyjaśnieniami i odnośnikiem do dokumentacji ATMELA,<br /><br />Dlatego ja już tych baboli nie opisywałem, bo kolega TAK pięknie i obszernie to wyjaśnił że aż miło<br /></div><br />Uznanie w oczach Mirka .....<br />bezcenne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 28 mar 2017, o 15:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-28T12:28:38+01:00</updated>
<published>2017-03-28T12:28:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185782#p185782</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185782#p185782"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185782#p185782"><![CDATA[
<div class="quotetitle">brat_kamyka napisał(a):</div><div class="quotecontent"><br />Przecież o tym autorowi wątku pisałem z wyjaśnieniami i odnośnikiem do dokumentacji ATMELA,<br /></div><br />Dlatego ja już tych baboli nie opisywałem, bo kolega TAK pięknie i obszernie to wyjaśnił że aż miło <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />widać jednak - że czasem trzeba to wciąż powtarzać i powtarzać ... i powtarzać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... skąd ja to znam <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> — 28 mar 2017, o 12:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2017-03-28T11:17:38+01:00</updated>
<published>2017-03-28T11:17:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185780#p185780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185780#p185780"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185780#p185780"><![CDATA[
<div class="quotetitle">brat_kamyka napisał(a):</div><div class="quotecontent"><br />Przy używaniu w programie przerwań oraz używanie paskudnych _delay() to droga do katastrofy <br />w trakcie _delay() <strong>mikroprocesor jest wstrzymywany i jak myślisz co będzie</strong> <br /><strong>gdy przyjdzie &quot;czas na wykonanie przerwania od UART-a?</strong><br /></div><br />Przecież o tym autorowi wątku pisałem z wyjaśnieniami i odnośnikiem do dokumentacji ATMELA, ale co ja tam wiem .....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 28 mar 2017, o 11:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-03-28T09:38:13+01:00</updated>
<published>2017-03-28T09:38:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185776#p185776</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185776#p185776"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185776#p185776"><![CDATA[
<div class="quotetitle">Mr. Strzelczyk napisał(a):</div><div class="quotecontent"><br />oj Chyba nie ... zobacz ze funkcja Blinking();<br />jest wywoływana na końcu for(;;) czyli ma tyle do przerwań co pingwiny do pustyni ...<br /></div>Ale wywołuje się przy każdym obiegu pętli. I zatrzymuje działanie programu na PONAD SEKUNDĘ. Przez ten czas nie wykonują się przerwania!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 28 mar 2017, o 09:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2017-03-28T08:15:25+01:00</updated>
<published>2017-03-28T08:15:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185767#p185767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185767#p185767"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185767#p185767"><![CDATA[
Przepraszam, ja tylko chciałem pomóc zrozumieć w czym jest problem,<br />ale autor wątku chyba wie lepiej,<br />Po za tym Mirek zwrócił uwagę na kolejne kwiatki ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 28 mar 2017, o 08:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-03-28T00:41:57+01:00</updated>
<published>2017-03-28T00:41:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185760#p185760</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185760#p185760"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185760#p185760"><![CDATA[
Poza pierwszą uwagą NA CZERWONO w pierwszym poście - paskudnym babolem .... który może również ma tyle co pingwiny do pustyni ale pokazuje na mega niezrozumienie pisania kodu dla procków w AVR GCC<br /><br />to cała reszta przedstawionego kodu jest napisana po prostu tragicznie ... i ja oczywiście rozumiem to że kolega załóżmy dopiero zaczyna swoją przygodę z programowaniem a od czegoś trzeba zacząć - nikt w końcu nie rodzi się ze zdolnością programowania ... to jednak zwrócę uwagę na pozostałe paskudne babole w kodzie bo aż nie idzie go w ogóle analizować i może jednak warto zacząć jednak np od książki ?<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />śmiało mogę ją polecić. Ona na prawdę dużo koledze pomoże. Bo teraz to widać, że nawet jeśli kolega miał do czynienia z programowaniem to albo tylko na andruino albo na PC - widać to np po używanych typach zmiennych, np:<br /><br />unsigned char<br />unsigned int<br /><br />zamiast<br /><br />char<br />uint16_t<br /><br />już samo to będzie prowadziło przy używaniu AVR GCC do wielu nieporozumień i rwania włosów z głowy ... polecam jak najszybciej zapoznać się z typami używanymi w AVR GCC<br /><br />Kolejna rzecz to kompletny brak zachowania nawet pozorów, minimum dobrego stylu programowania - pomijając już że wszystkie funkcje nad main to do tego absolutny MISZ-MASZ, no totalny koktail zmiennych gdzie widać, że kolega sam zaczyna mieć problemy z zakresem widoczności nazw zmiennych. Nigdy poza tym nie definiuje się zmiennych globalnych  z nazwami jedno-literkowymi typu &quot;i&quot; ! to już wręcz masakra. Tego typu zmienne jak już to do iteracji w pętlach for/while i definiowane tuż przed pętlami ...<br /><br />Dlatego też jeśli chodzi o całość to wychodzą takie mega kwiatki jak np:<br /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />unsigned int calc(void)<br />{<br />        if(OCR1A==0)<br />        OCR1A=252;<br />        else<br />        <strong><span style="color: #FF0000"><em>int war = war - 64 ;</em></span></strong><br />        return war;<br />       <br />}<br /></div><br /><br />co to jest ? to na czerwono ? - pomijam już fakt właśnie, że również jest zdefiniowana jakaś zmienna globalna o nazwie war, to jak można wewnątrz funkcji definiować zmienną lokalną i wykonać tego typu działanie? Jakiego się kolega spodziewa wyniku po tym działaniu ? Chyba że jakiegoś RANDOM czyli liczby losowej. Ale problem jest o wiele gorszy - bo funkcja zawiera warunek IF który jeśli będzie spełniony to zwróci (być może) wartość globalnej zmiennej war! bo taka też jest a jeśli nie będzie spełniony to ? ... to randomową wartość war z tego fragmentu zaznaczonego na czerwono ....<br /><br />Generalnie tak makabrycznie (proszę się nie obrażać tylko spróbować napisać ten kod poprawnie - w razie czego pomożemy) ... więc tak makabrycznie napisany kod zwykle nie ma prawa działać ale nawet ciężko go analizować i coś pomóc - tym bardziej, że problem jest w ogóle nie zdefiniowany.<br /><br />Autor wrzuca &quot;jakiś kod&quot; i zadaje pytanie - &quot;a co tu nie działa?&quot; ... jakby to miała być dobra zagadka ... <br /><br />Polecam poradnik:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=yVFf22JxuEs" >https://www.youtube.com/watch?v=yVFf22JxuEs</a><!-- m --><br /><br />od niego proszę w ogóle zacząć i na drugi raz spróbować chociaż - najpierw samemu dojść do jakiegoś etapu żeby jakoś określić precyzyjniej problem - a może nawet samemu uda się go znaleźć ... jeśli zaś nie - to przynajmniej po takim poradniku kolega będzie wiedział jak podejść do zawężenia zakresu problemu i umiejętnie go przedstawić ...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Mr. Strzelczyk napisał(a):</div><div class="quotecontent"><br />oj Chyba nie ... zobacz ze funkcja Blinking();<br />jest wywoływana na końcu for(;;) czyli ma tyle do przerwań co pingwiny do pustyni ...<br /></div><br /><br />Poza tym co napisałem - to tak się składa, że jednak ten delay będzie miał sporo do przerwań .... a szczególnie przy TAK napisanym kodzie<br /><br />Jeszcze raz gorąco polecam zacząć od książki - od Bluebooka swoją przygodę z C dla procków<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 mar 2017, o 00:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mr. Strzelczyk]]></name></author>
<updated>2017-03-27T23:50:00+01:00</updated>
<published>2017-03-27T23:50:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185755#p185755</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185755#p185755"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185755#p185755"><![CDATA[
oj Chyba nie ... zobacz ze funkcja Blinking();<br />jest wywoływana na końcu for(;;) czyli ma tyle do przerwań co pingwiny do pustyni ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10805">Mr. Strzelczyk</a> — 27 mar 2017, o 23:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[brat_kamyka]]></name></author>
<updated>2017-03-27T20:40:35+01:00</updated>
<published>2017-03-27T20:40:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185743#p185743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185743#p185743"/>
<title type="html"><![CDATA[Re: USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185743#p185743"><![CDATA[
[syntax=c]void Blinking(void)<br />{<br />        if(flaga==true)<br />        {<br />                PORTB ^= (1&lt;&lt;PB1);<br />                _delay_ms(1298);  //do tego pieję<br />        }<br />}[/syntax]<br /><br />Przy używaniu w programie przerwań oraz używanie paskudnych _delay() to droga do katastrofy <br />w trakcie _delay() mikroprocesor jest wstrzymywany i jak myślisz co będzie <br />gdy przyjdzie &quot;czas na wykonanie przerwania od UART-a?<br />Proszę poczytaj o timerach programowych, albo zamień delay() na  jakąś obsługę realizowaną prze przerwanie od timera....<br />jest to powód dla którego przerwania nie występują <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tu są szczegóły dlaczego nie wolno tak robić :<br /><a href="http://forum.atnel.pl/topic3908.html"  class="postlink">http://forum.atnel.pl/topic3908.html</a> <br />albo<br /><a href="http://forum.atnel.pl/topic17569.html#p182129"  class="postlink">http://forum.atnel.pl/topic17569.html#p182129</a><br /><br />z opsu paskudnego _delay_ms():<br /><br />_delay_ms(argument) - The maximal possible delay is 262.14 ms / F_CPU in MHz<br /><br />a u ciebie <strong>_delay_ms(1298)</strong> toż to cała wieczność kiedy proca &quot;haltujesz&quot;.<br />jak poczytasz dokumentację <a href="http://www.atmel.com/webdoc/avrlibcreferencemanual/group__util__delay_1gad22e7a36b80e2f917324dc43a425e9d3.html"  class="postlink">http://www.atmel.com/webdoc/avrlibcreferencemanual/group__util__delay_1gad22e7a36b80e2f917324dc43a425e9d3.html</a>dalej to zobaczysz:<br />When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency).<br /><br />czyli :<br />W tym trybie _delay_ms() będzie działać z rozdzielczością 1/10 ms, umożliwiając opóźnienia do 6,5535 sekundy.<br />to jak chcesz w tym czasie obsługiwać przerwania ?<br /><br />Chyba jasno napisałem ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6029">brat_kamyka</a> — 27 mar 2017, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mr. Strzelczyk]]></name></author>
<updated>2017-03-26T19:52:43+01:00</updated>
<published>2017-03-26T19:52:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185688#p185688</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185688#p185688"/>
<title type="html"><![CDATA[USART Przerwania brak rekacji]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17992&amp;p=185688#p185688"><![CDATA[
Witam znów mam problem z UART'em <br />dokładniej to nic nie widzę na konsoli <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />tak jak by nie występowały przerwania...<br />Prosze o pomoc  <br /><br /><br />[syntax=c]/* UART.cpp<br /> * uC: ATmega32<br /> * Created: 2017-03-10 <br /> * Author :  Strzelczyk<br /> */[/syntax]<br /> <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><strong><em><span style="color: #FF0000">#define F_CPU 8000000UL //8MHz &lt;--- po pierwsze TEGO NIGDY nie definiujemy w kodzie - mirekk36</span></em></strong><br /></div><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;  <br /><br />//************Zmienne**********//<br />int war = 252;<br />//************Flagi************//<br />bool flaga=false;<br />//****************************//<br />      <br />      //zmienne dot. odbioru danych<br />   volatile int i=0;<br />      volatile unsigned char odb_now&#91;1&#93;;       <br />  volatile unsigned char odb_back;<br />      volatile unsigned char odb_flaga =0;//flaga informująca main o odebraniu liczby<br />      <br /><br />      volatile unsigned int usart_bufor_ind;          <br />      char usart_bufor&#91;30&#93;; <br /><br /><br />static void UARTs_9600(void)<br />{<br />#define  BAUD 9600<br />#include &lt;util/setbaud.h&gt;<br />UBRRH =UBRRH_VALUE;<br />UBRRL =UBRRL_VALUE;<br />}<br />void uart_init(void)<br />{<br /> UCSRB |= (1&lt;&lt;RXCIE)| (1&lt;&lt;TXCIE)| (1&lt;&lt;RXEN)| (1&lt;&lt;TXEN);<br /> UCSRC |= (1&lt;&lt;UCSZ1)| (1&lt;&lt;UCSZ0)| (1&lt;&lt;URSEL);<br />}<br />void USART_Transmit( unsigned char data )<br />{<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />;<br />UDR = data;<br /><br /><br />}<br />void USART_Transmit_String (char bufor&#91;&#93;)<br />{<br />int i = sizeof(bufor);<br />for(int s=0; i!=s; s++)<br />{<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />;<br />UDR = bufor&#91;s&#93;;<br />}<br />} <br />char USART_Read_Char(void)<br />{<br /><br />while(!(UCSRA &amp; (1&lt;&lt;RXC)))<br />;<br />return UDR;<br /><br />}<br />void Blinking(void)<br />{<br />if(flaga==true)<br />{<br />PORTB ^= (1&lt;&lt;PB1);<br />_delay_ms(1298);<br />}<br />}<br />void PWM_init(void)<br />{<br /> TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;WGM10);<br /> TCCR1B |= (1&lt;&lt;WGM12) | (1&lt;&lt;CS10) | (1&lt;&lt;CS12);<br /> //PWM 8bit //pre 1024<br />}<br />unsigned int calc(void)<br />{<br />if(OCR1A==0)<br />OCR1A=252;<br />else<br />int war = war - 64 ;<br />return war;<br /><br />}<br />//**********************************<br /><br /> ISR(USART_RXC_vect)<br />   {                         <br />   unsigned int s = i % 2;<br />  odb_now&#91;s&#93; = UDR;   //zapamiętaj odebraną liczbę<br />  odb_flaga = 1; //ustaw flagę odbioru liczby dla main()<br /><br />   }  <br /> ISR(USART_UDRE_vect)<br />{<br />    <br />    //przerwanie generowane, gdy bufor nadawania jest już pusty,<br />    //odpowiedzialne za wysłanie wszystkich znaków z tablicy usart_bufor&#91;&#93;<br />    <br />    //sprawdzamy, czy bajt do wysłania jest znakiem końca tekstu, czyli zerem<br />   if(usart_bufor&#91;usart_bufor_ind&#93;!= 0){<br />    <br />    //załaduj znak do rejestru wysyłki i ustaw indeks na następny znak<br />    UDR = usart_bufor&#91;usart_bufor_ind++&#93;;<br />    <br /> }<br />    else{<br />    <br />    //osiągnięto koniec napisu w tablicy usart_bufor&#91;&#93;<br />    UCSRB &amp;= ~(1&lt;&lt;UDRIE); //wyłącz przerwania pustego bufora nadawania<br />}<br />    }<br /><br />//**********************************<br /><br /><br /><br />int main(void)<br />{<br /><br />UARTs_9600();<br />uart_init();<br />PWM_init();<br />sei();   <br />char intro&#91;&#93; =&quot;USART by STRZELCZYK&quot;;<br />USART_Transmit_String(intro);<br /> for(;;) <br />    {<br />if(odb_flaga)<br />{<br />odb_flaga = 0;<br />if(odb_now&#91;0&#93;=='S' || odb_now&#91;0&#93;=='s')<br />{<br />if (odb_now&#91;1&#93;=='E' || odb_now&#91;1&#93;=='e')<br />{<br />char name&#91;&#93; =&quot;SSSSSSSS&quot;;<br />USART_Transmit_String(name);<br />}<br /><br />if (odb_now&#91;1&#93;=='0')<br />{<br />flaga=!flaga;<br />}<br />}//end_if<br /><br />if(odb_now&#91;0&#93;=='E' || odb_now&#91;0&#93;=='e')<br />{<br />if (odb_now&#91;1&#93;=='0')<br />{<br />OCR1A = calc();<br />}<br />} <br />}<br />Blinking();<br />    }<br /><br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10805">Mr. Strzelczyk</a> — 26 mar 2017, o 19:52</p><hr />
]]></content>
</entry>
</feed>