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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-10T14:58:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12189&amp;mode</id>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2015-07-10T14:58:11+01:00</updated>
<published>2015-07-10T14:58:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134126#p134126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134126#p134126"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134126#p134126"><![CDATA[
Poszukaj w BB<br /><br />Dla przypomnienia kolega @Jaglarz zrobił skorowidz do BB do pobrania w tym temacie<br /><a href="http://forum.atnel.pl/post51576.html?hilit=skorowidz#p51576"  class="postlink">http://forum.atnel.pl/post51576.html?hilit=skorowidz#p51576</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 10 lip 2015, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-10T13:51:31+01:00</updated>
<published>2015-07-10T13:51:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134114#p134114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134114#p134114"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=134114#p134114"><![CDATA[
<div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />Mam pytanie <br />jeśli zarejestruję <br />register_uart_str_rx_event_callback ( analizuj_dane );<br />przestaje mi działać nadawanie z uarta w innym miejscu niż while(1)<br /></div><br />Nadawanie nie ma NIC WSPÓLNEGO z callbackiem, który jest TYLKO do odbioru, więc pewnie gdzieś tam jakiegoś babola robisz z tym wysyłaniem<br /><br /><div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />czy w obsłudzie przerwania to zrobić == dobry pomysł ?<br /></div><br />raczej średnio koci pomysł - tzn teoretycznie można ale to bez sensu ... zainteresuj się teraz timerami programowymi, bo peklowanie czegoś do przerwania żeby się robiło co 5 sekund czyli co wieczność to po prostu koszmar<br /><br />temat dla ciebie to: timery programowe<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 lip 2015, o 13:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-07T12:12:01+01:00</updated>
<published>2015-07-07T12:12:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133823#p133823</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133823#p133823"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133823#p133823"><![CDATA[
<div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />ew jak odbierać całe stringi ?<br /></div><br />Kurczę - kolego - GREENBOOK - rozdział o UART masz to wyjaśnione krok po kroku i to na dodatek dużo więcej informacji<br /><br />zaglądałeś do tego rozdziału ? Bo albo nie masz tej książki i wtedy niepotrzebnie umieściłeś ją w podpisie albo już nie wiem o co chodzi ....<br /><br />Przeczytaj więc ten rozdział i daj znać wtedy czego nie rozumiesz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lip 2015, o 12:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-07T10:13:20+01:00</updated>
<published>2015-07-07T10:13:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133808#p133808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133808#p133808"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133808#p133808"><![CDATA[
<div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />a tak serio powalczę dzis troszkę z C<br /></div><br />No więc DOKŁADNIE - zamiast wprawiać się w poczucie winy, otwórz Bluebooka i przeczytaj rozdział o obsłudze UART za pomocą przerwań i o buforze cyklicznym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lip 2015, o 10:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-07T09:25:00+01:00</updated>
<published>2015-07-07T09:25:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133803#p133803</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133803#p133803"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133803#p133803"><![CDATA[
<div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />Mirku ! czy byłbyś tak uprzejmy i podesłał mi jakieś przykłady do przeanalizowania?<br /></div><br />Powiedz mi - bo takimi pytaniami wprowadzasz mnie w konsternację albo duże zakłopotanie - no masz w podpisie na forum informację, że posiadasz nie tylko Bluebooka ale nawet Greenbooka - a ty piszesz mi - żebym ja ci podesłał jakieś przykłady do przeanalizowania .... No to ja na to żegnam się teraz lewą nogą po plecach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie mogąc zrozumieć o co ci chodzi - skoro masz to w książce z Bluebooku (odbiór na przerwaniach i opis buforowania cyklicznego) ... w GB masz dalsze z tym przygody czyli odbieranie i parsowanie stringów .... o co więc tu i teraz tobie chodzi - możesz to sprecyzować ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />Są różne teorie dlatego warto je sprawdzać w kilku zródłach<br /></div><br />Co do teorii i to takich o jakich tu piszesz - to rzeczywiście IDEALNĄ odpowiedzią na to jest post kolegi mokrowskiego <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> ! <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lip 2015, o 09:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-07-07T08:44:03+01:00</updated>
<published>2015-07-07T08:44:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133801#p133801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133801#p133801"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133801#p133801"><![CDATA[
Bufor cykliczny (ang. ring buffer), ja podglądam tak:[syntax=c]#define sw_on 1<br />//********************** Funkja glowna main()***********<br />int main (void){<br />//====== testowa inicjalizacja zmiennych oraz liczb DEC i HEX mających się wyświetlać na wyśw. LED<br />cy1=13;<br />cy2=1;<br />cy3=14;<br />cy4=13;<br /><br />DDRC |= (1&lt;&lt;PC4);          //Debuger diodowy<br />DDRB |= (1&lt;&lt;PB0)| (1&lt;&lt;PB1);<br />PORTB |= (1&lt;&lt;PB0);             //| (1&lt;&lt;PB1) ;<br /><br /><br />//init_ADC ();<br />d_led_init();<br />sei();<br /><br />while(1){<br /><br />// **************timer od CTC d_led.c***********<br />if(!Tim_led1 &amp;&amp; sw_on){<br />//pomiar(5);<br />PORTB ^=(1&lt;&lt;PB1);//Debug<br />//Monitor_WLED(DEC,ADCW);//Monitor_WLED(BIN||OCT||DEC||HEX||ZNAK , ADCW);<br />Tim_led1 =100;// 100 -&gt; 0,5sekundy (1i = 5ms 200Hz)<br />}<br />if(!Tim_led2){<br />PORTB ^= (1&lt;&lt;PB0);//Debug<br />Tim_led2 =500;<br />}<br />//******************************************<br /><br /><br />_delay_ms(100);<br /><br />//_delay_ms(1000);<br /><br />PORTC ^= (1&lt;&lt;PC4);//Debuger diodowy<br />}<br />}<br />//******************Koniec funkji main()**********************************************[/syntax]<br />Co prawda _delay_ms(1000) zakrywa przerwanie - efekt widać na PB1  <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=9272">Wirnick</a> — 7 lip 2015, o 08:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-06T20:29:44+01:00</updated>
<published>2015-07-06T20:29:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133789#p133789</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133789#p133789"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133789#p133789"><![CDATA[
<div class="quotetitle">multitask napisał(a):</div><div class="quotecontent"><br />(ponoc odbieranie nie działa po użyciu _delay)<br /></div><br />A powiedz mi skąd bierzesz takie opowieści i bajania ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Zamiast słuchać takich bajek - sam postaraj się przećwiczyć z Bluebooka bo widzę, że masz - jak działa buforowanie cykliczne i jak jest robiona transmisja UART na przerwaniach. To już później nigdy nie dasz sobie wmówić takich rzeczy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />W skrócie - gdy trwa najdłuższy delay <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to transmisja na przerwaniach leci aż miło .... <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> — 6 lip 2015, o 20:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-07-03T16:44:21+01:00</updated>
<published>2015-07-03T16:44:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133548#p133548</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133548#p133548"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133548#p133548"><![CDATA[
Poniżej mały przykład jak np. delaye blokują działanie pętli głównej<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 />#define LED1PD0<br />#define LED2PD1<br /><br />#define LED1_TOGPORTD ^= (1&lt;&lt;LED1)<br />#define LED2_TOGPORTD ^= (1&lt;&lt;LED2)<br /><br />int main(void)<br />{<br />DDRD |= (1&lt;&lt;LED1) | (1&lt;&lt;LED2);//wyjśćia<br /><br />TCCR1B |= (1&lt;&lt;WGM12);//tryb CTC<br />TCCR1B |= (1&lt;&lt;CS12) | (1&lt;&lt;CS10);//preskaler 1024<br />OCR1A = 3906;<br />TIMSK |= (1&lt;&lt;OCIE1A);<br /><br />sei();<br />while(1)<br />{<br />LED2_TOG;<br />_delay_ms(2500);<br />LED2_TOG;<br />_delay_ms(5000);<br />//inne rzeczy wykonywane przez procesor np.<br />//obsługa klawiszy<br />}<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />LED1_TOG;<br />}[/syntax]<br />Dioda LED2 w pętli głównej zmienia stan co 2,5s i co 5s. Inne procesy, np. sprawdzanie klawiszy, wykonują się co 7,5s. Na czas delayów pętla główna &quot;stoi&quot; bo procesor jest zajęty odliczaniem czasu poprzez te nieszczęsne delaye. Dlatego to właśnie jest sposób blokujący.<br /><br />W tym czasie jedynie włączone przerwania będą działać. Potwierdza to dioda LED1, która ładnie sobie miga co kilkaset ms. Mimo, że pętla główna &quot;stoi&quot;.<br /><br />Do blokujących części programu należą także przydługawe wszelakie pętlę np. while, for. I znów mały przykład<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 />#define LED1PD0<br />#define LED2PD1<br />#define LED3PD2<br /><br />#define LED1_TOGPORTD ^= (1&lt;&lt;LED1)<br />#define LED2_TOGPORTD ^= (1&lt;&lt;LED2)<br />#define LED3_TOGPORTD ^= (1&lt;&lt;LED3)<br /><br />int main(void)<br />{<br />DDRD |= (1&lt;&lt;LED1) | (1&lt;&lt;LED2) | (1&lt;&lt;LED3);//wyjśćia<br /><br />TCCR1B |= (1&lt;&lt;WGM12);//tryb CTC<br />TCCR1B |= (1&lt;&lt;CS12) | (1&lt;&lt;CS10);//preskaler 1024<br />OCR1A = 3906;<br />TIMSK |= (1&lt;&lt;OCIE1A);<br /><br />uint8_t i = 0;<br /><br />sei();<br />while(1)<br />{<br />for(i=0; i&lt;50; i++)<br />{<br />LED2_TOG;<br />_delay_ms(100);<br />}<br /><br />LED3_TOG;<br /><br />//inne rzeczy wykonywane przez procesor np.<br />//obsługa klawiszy<br />}<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />LED1_TOG;<br />}[/syntax]<br />Dioda LED1 w przerwaniu miga sobie niezmiennie.<br />Dioda LED2 miga co ok. 100ms, ale dioda LED3 zmienia stan co kilka sekund. Program w pętli for ładnie miga diodą ale to co jest poza pętlą for czyli miganie LED3 i sprawdzanie klawiszy &quot;stoi&quot; na czas wykonywania się tej pętli for. Czyli z punktu widzenie programu pętla for na czas swoich obiegów blokuje działanie reszty pętli głównej.<br /><br />Z tego wynika, że blokujące części programu to nie tylko delaye.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 lip 2015, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-07-03T09:50:56+01:00</updated>
<published>2015-07-03T09:50:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133517#p133517</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133517#p133517"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133517#p133517"><![CDATA[
musiałeś natrafić na to w BB widać zapomniałeś że o tym czytałeś <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />delay_ms czy też delay_us po prostu blokuje pracę procesora w taki sposób że żadna inna funkcja nie zostanie wykonana w momencie gdy obieg pętli trafi na delay zablokuje pracę procesora jak i jego timerów na zadany czas.<br /><br />Zakładając że masz program gdzie dioda ma mrugać co 0,5 sek i obsługujesz te mruganie timerem to w momencie gdy program trafi na delay wydłuży czas mrugnięcia diody z powodu iż cała praca procesora zostanie zatrzymana.<br /><br />Jak będziesz chciał kliknąć klawisz to zadziała on tylko wtedy gdy obieg pętli nie jest w delayu bo wtedy praca procka jest zablokowana i przycisk nie zadziała, zadziała dopiero jak pętla ruszy dalej.<br /><br />Mam nadzieję że nie zamieszałem za mocno i udało mi się to łopatologicznie wytłumaczyć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 3 lip 2015, o 09:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-07-03T09:50:06+01:00</updated>
<published>2015-07-03T09:50:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133516#p133516</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133516#p133516"/>
<title type="html"><![CDATA[Re: funkcja blokująca teoria]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12189&amp;p=133516#p133516"><![CDATA[
W skrócie _delay_ms(); czy _delay_us(); zatrzymują pracę programu na określony czas. Procesor nie może wykonywać w tym czasie innych zadań. <br />Raczej używa się terminu &quot;funkcja nieblokująca&quot; czyli taka, która nie używa delay'ów tylko przerwań, zdarzeń czy timerów programowych.<br />Poczytaj w BB o timerach sprzętowych szczególnie &quot;Tryb CTC - jeden z najważniejszych&quot;, oraz rozdział &quot;Wstęp do systemów czasu rzeczywistego&quot;.  <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=7157">anshar</a> — 3 lip 2015, o 09:50</p><hr />
]]></content>
</entry>
</feed>