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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-27T16:34:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15220&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-04-27T08:59:19+01:00</updated>
<published>2016-04-27T08:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159437#p159437</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159437#p159437"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159437#p159437"><![CDATA[
Kolego QuadMan.<br />Dziękuję za naprostowanie mojego toku rozumowania.<br />Wieczorem co nieco dopiszę do moich postów, by następnych nie wprowadzać w maliny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 27 kwi 2016, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-27T06:48:58+01:00</updated>
<published>2016-04-27T06:48:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159430#p159430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159430#p159430"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159430#p159430"><![CDATA[
<div class="quotetitle">PITERK napisał(a):</div><div class="quotecontent"><br />A może takie coś Ci pomoże bardziej zrozumieć: <br /><br />[syntax=c]while(1){<br />if (millis = 1000){led(0);millis=0;}<br />if(millis = 500){led(1);}<br />}[/syntax]<br /></div><br /><br />Układ ma błysnąć diodą na dzień dobry a potem przejść do wykonywania programu. No to wrzuć teraz w swój kod główną pętlę while(1), chodzi o coś takiego:<br />[syntax=c]void main()<br />{<br />  LED(1);<br />  //odczekaj 500ms<br />  LED(0);<br />  while(1)<br />  {<br />      //główny kod programu<br />  }<br />}[/syntax]<br />Ja wiem że to można napisać na milion innych sposobów, ale taka struktura wydaje się najprostsza i najbardziej logiczna.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 14 minutach ]</span></strong><br /><br /><div class="quotetitle">QuadMan napisał(a):</div><div class="quotecontent"><br />[...]po pierwsze , zakładam, że Twoja zmienna milis została zadeklarowana jako <strong>volatile</strong>[...]<br /></div><br />I tego mi brakowało  <img src="https://forum.atnel.pl/images/smilies/icon_idea.gif" alt=":idea:" title="Pomysł" /> . Po poprawieniu deklaracji:<br />[syntax=c]volatile unsigned long int millis;[/syntax]<br />while() działa jak oczekiwałem.<br />Dzięki za wyczerpujący opis i cenną lekcję!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 27 kwi 2016, o 06:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-04-26T23:58:02+01:00</updated>
<published>2016-04-26T23:58:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159424#p159424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159424#p159424"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159424#p159424"><![CDATA[
Witam.<br /><br />Kolego <strong>Tygrysek</strong>, Twój tok rozumowania jest jak najbardziej poprawny. <strong>Taka konstrukcja jest jak najbardziej ok:</strong>[syntax=c]while(milis&lt;500);[/syntax] - średnik jest tu pustą instrukcją, wcale nie musi tam być żadnego bloku instrukcji w {} z tym że musisz pamiętać o kilku sprawach: po pierwsze , zakładam, że Twoja zmienna milis została zadeklarowana jako <strong>volatile</strong>, a po drugie, że kompilator w swej radosnej twórczości nie zoptymalizował Twojego while do jednej instrukcji asemblera - bo wtedy przerwanie nie ma się jak wykonać - nie da się przerwać jednej instrukcji asm ( choć Bogiem, a prawdą, nie bardzo wiem jak miałby to uczynić, jeśli zmienna milis jest 16-to bitowa ). Takie cóś:<br />[syntax=c]while(milis&lt;500) asm(&quot;nop&quot;);[/syntax] to w sumie prawie to o co chodzi, ale kompilator jest &quot;mądry&quot; i na bank wywali tego nop-a, więc proponuję bezpiecznie :<br />[syntax=c]while(milis&lt;500) asm volatile (&quot;nop&quot;);[/syntax].  Z for-em też jest identyczna sytuacja, to tyle tak na szybko.<br /><br />Dopisane: mikrosekundowy delay na timerze, co prawda uc inny, ale zasada ta sama - wycięty z kodu, nad którym teraz pracuję, na bank działa:[syntax=c]void _delay_us(uint16_t delay)<br />{<br />/* TIM16 Counter register clear */<br />TIM16-&gt;CNT = 0;<br />/* TIM16 counter enable */<br />TIM16-&gt;CR1 |= TIM_CR1_CEN;<br />while (TIM16-&gt;CNT&lt;=delay);<br />}[/syntax]<br /> <br />Warunek &lt;= w tym while, bo chcę by opóźnienie było dokładnie delay.<br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 26 kwi 2016, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PITERK]]></name></author>
<updated>2016-04-26T22:33:47+01:00</updated>
<published>2016-04-26T22:33:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159419#p159419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159419#p159419"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159419#p159419"><![CDATA[
<div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent">a nie możesz tak :<br /><br />[syntax=c]while (millis &lt; 1000)<br />{<br />led(0);<br />}[/syntax]<br /></div><br /><br />Jestem zawiedziony.<br />Rozwiązanie trochę drażniące, bo muszę bez sensu &quot;bombardować&quot; port dla LED w kółko danymi...<br />A jak będę chciał napisać własną funkcję <em>delay()</em> to na if-ie tego nie zrobię i będę musiał wrzucić jakieś coś - byle co w pętlę while, żeby kompilator był zadowolony. Tak to widzę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Dzięki za trochę wiedzy.<br />Pozdrawiam</div><br /><br />A może takie coś Ci pomoże bardziej zrozumieć: <br /><br />[syntax=c]while(1){<br />if (millis = 1000){led(0);millis=0;}<br />if(millis = 500){led(1);}<br />}[/syntax]<br />Musisz pamiętać że millis musi mieć odpowiedni typ<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2913">PITERK</a> — 26 kwi 2016, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T21:22:50+01:00</updated>
<published>2016-04-26T21:22:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159407#p159407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159407#p159407"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159407#p159407"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />a nie możesz tak :<br /><br />[syntax=c]while (millis &lt; 1000)<br />{<br />led(0);<br />}[/syntax]<br /></div><br /><br />Jestem zawiedziony.<br />Rozwiązanie trochę drażniące, bo muszę bez sensu &quot;bombardować&quot; port dla LED w kółko danymi...<br />A jak będę chciał napisać własną funkcję <em>delay()</em> to na if-ie tego nie zrobię i będę musiał wrzucić jakieś coś - byle co w pętlę while, żeby kompilator był zadowolony. Tak to widzę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Dzięki za trochę wiedzy.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-04-26T21:09:25+01:00</updated>
<published>2016-04-26T21:09:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159404#p159404</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159404#p159404"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159404#p159404"><![CDATA[
a nie możesz tak :<br /><br />[syntax=c]while (millis &lt; 1000)<br />{<br />led(0);<br />}[/syntax]<br /><br />wiesz pierwsze słyszę by do własnego delaya nie pasował IF <br />zwykle korzystając z timera  na Ifie robię swoje delaye  i niema z nimi żadnego kłopotu ...<br />nie mówiąc o skakaniu do etykiet ...<br />czasem jak potrzebuję określonego czasu to wyliczam pętlę FOR<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br />w Pascalu opisywana przeze mnie konstrukcja jest jak najbardziej poprawna!<br /></div><br /><br />przykro mi ale to nie pascal ...<br />chcesz pisac w pascalu   jest microPascal dla AVR <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=58">SunRiver</a> — 26 kwi 2016, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T20:59:54+01:00</updated>
<published>2016-04-26T20:59:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159402#p159402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159402#p159402"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159402#p159402"><![CDATA[
&quot;If&quot; tutaj kompletnie nie pasuje... Musi być pętla. No chyba że if z jakimś skokiem do etykiety, ale to nieeleganckie.<br /><br />&quot;while&quot; właśnie próbuję ogarnąć, bo wydawało mi się że wiem jak działa (w Pascalu opisywana przeze mnie konstrukcja jest jak najbardziej poprawna!).<br />Bardzo proszę o konkretny przykład! Ten problem nie daje mi żyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />PS.<br />Skoro konstrukcja &quot;while (x&lt;10);&quot; jest niezgodna z zasadami języka C (bo tak zrozumiałem), dlaczego kompilator nie zgłasza błędu? <strong>I dlaczego nie działa <em>while (x&lt;10) {asm(&quot;nop&quot;);}</em></strong>? Wiem, czepiam się.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Chyba się nie rozumiemy...<br /><br />Chcę zapalić diodę LED na 1 sek, potem program leci dalej:<br /><br />[syntax=c]millis = 0;<br />LED(1);<br />while (millis &lt; 1000); //CO TU MA BYĆ?<br />LED(0);[/syntax]<br /><br />lub inaczej:<br />jak napisać własną funkcję <em>_delay_ms(unsigned long int t)</em> (bo wbudowana funkcja _millis_ms() nie pozwala na użycie  zmiennej)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 20:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-04-26T20:58:17+01:00</updated>
<published>2016-04-26T20:58:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159400#p159400</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159400#p159400"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159400#p159400"><![CDATA[
Jeżeli chcesz żeby nic się nie wykonywało, to nie opisuj tego.<br />Zrób odwrotnie. jeżeli twoja zmienna jest większa od np. 500 to zrób coś.Wtedy poniżej 500 to coś się nie wykona.<br />Sun podpowiada funkcję if{}. Możesz dodać else{} -czyli to co ma się wykonać poniżej 500.<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> — 26 kwi 2016, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-04-26T20:50:08+01:00</updated>
<published>2016-04-26T20:50:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159397#p159397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159397#p159397"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159397#p159397"><![CDATA[
a kolega wie jak działają pętle <br />While , For <br /><br />a moze użyć iF ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 26 kwi 2016, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T20:27:33+01:00</updated>
<published>2016-04-26T20:27:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159393#p159393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159393#p159393"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159393#p159393"><![CDATA[
OK.<br />Sprawdziłem w międzyczasie: for(;millis&lt;500;); - efekt ten sam.<br /><br />Jak w takim razie powinna wyglądać najprostsza forma czekania na osiągnięcie ustalonej wartości <em>millis</em>?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 20:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-04-26T20:22:33+01:00</updated>
<published>2016-04-26T20:22:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159392#p159392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159392#p159392"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159392#p159392"><![CDATA[
<div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br />Czyli mam rozumieć że while MUSI mieć jakąś instrukcję lub blok instrukcji<br /></div><br />dokładnie tak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 26 kwi 2016, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T20:02:27+01:00</updated>
<published>2016-04-26T20:02:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159388#p159388</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159388#p159388"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159388#p159388"><![CDATA[
&quot;The while statement executes a statement or a block of statements until a specified expression evaluates to false.&quot;<br />Czyli mam rozumieć że while MUSI mieć jakąś instrukcję lub blok instrukcji i nie da się wstawić tam &quot;pustej instrukcji&quot;?<br />dlaczego w takim nie działa również to:<br /><br />[syntax=c]while (millis &lt; 30) {asm(&quot;nop&quot;);}[/syntax]<br /><br />PS.<br />Proszę o wyrozumiałość, sporo programowałem ale w innych językach (m.in. Pascal), w C dopiero się wdrażam.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />while (millis &lt; 500){}   /* robi nic przez czas do osiągnięcia 500*/[/syntax]<br /></div><br /><br />To też nie działa! Efekt ten sam - pętla bez końca.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-04-27T16:34:09+01:00</updated>
<published>2016-04-26T19:50:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159386#p159386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159386#p159386"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159386#p159386"><![CDATA[
OK<br /><br />przyjrzyj się:<br /><br />Poprawione następnego dnia.<br />A tu następne moje wczorajsze wypociny nie mające nic do rzeczywistości, którą parę postów dalej świetnie opisał  kolega &quot;QuadMan&quot;.<br />Proszę nie czytać. <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  <br /><span style="font-size: 50%; line-height: normal">while (millis &lt; 500);   /* nie robi nic - brak czasu wykonywania czegokolwiek .*/<br /><br />while (millis &lt; 500){}   /* robi nic przez czas do osiągnięcia 500*/<br />  {} <br /> <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 26 kwi 2016, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-04-26T19:46:35+01:00</updated>
<published>2016-04-26T19:46:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159385#p159385</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159385#p159385"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159385#p159385"><![CDATA[
no czegoś takiego mozesz się spodziewać w IFie ...<br />dlatego odesłałem do referencji pętli While .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 26 kwi 2016, o 19:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T19:42:48+01:00</updated>
<published>2016-04-26T19:42:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159383#p159383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159383#p159383"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159383#p159383"><![CDATA[
Spodziewam się że <em>while (millis &lt; 500);</em> odczeka do czasu aż zmienna <em>millis </em>osiągnie wartość 500. Czyli taki mój własny wariant <em>_delay_ms(500);</em>.<br /><br />OK, zapytam inaczej. Mam zmienną <em>millis</em>, która zwiększa wartość o 1 co msek. Jak powinno wyglądać opóźnienie np. 0,5 sek?<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-04-27T16:14:27+01:00</updated>
<published>2016-04-26T16:35:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159370#p159370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159370#p159370"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159370#p159370"><![CDATA[
Witam.<br /><div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br />Co ciekawe, jeśli w pętli wstawię jakąkolwiek funkcję:<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />while (millis &lt; 500) {moja_funkcja();}<br />GeSHi<br /><br />wtedy pętla zgodnie z oczekiwaniami kończy się po ustalonym czasie.<br /></div><br />I tak powinno być. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br /><div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br />Domniemam więc, że taki kod:<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />millis = 0;<br />while (millis &lt; 500);<br />GeSHi<br /><br />powinien wprowadzić opóźnienie 0,5 sek, jednak tak się nie dzieje<br /></div><br /><br />Poprawione następnego dnia*<br />TERAZ MOJE DURNE PYTANIE wynikające z mojej niewiedzy. <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br />zaoszczędzisz mi wstydu, jeżeli nie przeczytasz.<br /><br /><span style="font-size: 50%; line-height: normal">A takie pytanie do Ciebie.<br />Co według Ciebie powinno się wykonać w tej pętli?  może brakuje oczekiwania w nicości?.. {}    ..?</span><br /><br />Chyba że coś źle zrozumiałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 26 kwi 2016, o 16:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-04-26T16:27:34+01:00</updated>
<published>2016-04-26T16:27:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159369#p159369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159369#p159369"/>
<title type="html"><![CDATA[Re: Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159369#p159369"><![CDATA[
<div class="quotetitle">Tygrysek napisał(a):</div><div class="quotecontent"><br />Czy ktoś mi może wytłumaczyć o co tu chodzi?<br /></div><br /><br />popatrz uważnie co chcesz od while z tym parametrem i zobacz co się jej dzieje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />powstaje pętla bez końca gdyż .....  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  BB  Pętla While ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 26 kwi 2016, o 16:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tygrysek]]></name></author>
<updated>2016-04-26T14:57:01+01:00</updated>
<published>2016-04-26T14:57:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159361#p159361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159361#p159361"/>
<title type="html"><![CDATA[Atmel Studio - błąd kompilatora?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15220&amp;p=159361#p159361"><![CDATA[
Witam,<br /><br />Odnośnie tematu - Zapewne nie błąd kompilatora a moja niewiedza.<br /><br />Atmel Studio 6.2 + mikrokontroler ATmega88PA (z ATmega8A to samo), takotwanie 1MHz.<br />Uruchomiłem timer, który co 1 msek zwiększa wrtość zmiennej <em>millis</em> - taki licznik:<br /><br />[syntax=c]ISR(TIMER1_COMPA_vect)<br />{<br />millis++;<br />}<br /><br />void TimerStart()<br />{<br />millis = 0;<br />sei();<br />OCR1A = 125; //górna wartość licznika<br />TIMSK1 |= (1 &lt;&lt; OCIE1A); //przerwanie przy porównaniu z OCR1A<br />TCCR1B |= (1 &lt;&lt; WGM12) | (1 &lt;&lt; CS11);  //tryb 4 CTC, źródło licznika = CLK/8, start<br />}[/syntax]<br /><br />Działa OK. Domniemam więc, że taki kod:<br />[syntax=c]millis = 0;<br />while (millis &lt; 500);[/syntax]<br />powinien wprowadzić opóźnienie 0,5 sek, jednak <strong>tak się nie dzieje</strong> - powstaje pętla bez końca (co ma odzwierciedlenie w wygenerowanym kodzie assemblera). W trybie śledzenia widzę że zmeinna <em>millis</em> już dawno przekroczyła wartość 500 a pętla wciąż trwa. Gdzie popełniłem błąd?<br />Co ciekawe, jeśli w pętli wstawię jakąkolwiek funkcję:<br />[syntax=c]while (millis &lt; 500) {moja_funkcja();}[/syntax]<br />wtedy pętla zgodnie z oczekiwaniami kończy się po ustalonym czasie. Ale takie coś już nie działa:<br />[syntax=c]while (millis &lt; 500) asm(&quot;nop&quot;);[/syntax]<br />Testowane w symulatorze i na żywym mikrokontrolerze - to samo. Czy ktoś mi może wytłumaczyć o co tu chodzi?<br /><br />Pozdrawiam<br />Tygrysek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5005">Tygrysek</a> — 26 kwi 2016, o 14:57</p><hr />
]]></content>
</entry>
</feed>