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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-05-28T17:37:03+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=51&amp;t=22289&amp;mode</id>
<entry>
<author><name><![CDATA[Lu_let]]></name></author>
<updated>2019-05-28T17:37:03+01:00</updated>
<published>2019-05-28T17:37:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219324#p219324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219324#p219324"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219324#p219324"><![CDATA[
Wszystko działa jak należy.<br />Dodałem jeszcze godziny.<br />[syntax=c]if( EIFR &amp; (1&lt;&lt;INTF0))  {                                         <br /><br />        for (a=0; a&lt;212; a++) {       // pętla sekund<br />//        sekundy();<br />        }<br />        b++;<br />        if (b==60) { <br />        for (c=0; c&lt;212; c++) {      // pętla minut<br />        minuty();<br />        }<br />        d++;<br />        b = 0;<br />        }<br />        if (d==12) {                                          <br />        for (e=0; e&lt;212; e++) {// pętla godzin<br />        godziny();<br />        }<br />        d = 0;<br />        }<br /><br />EIFR |= (1&lt;&lt;INTF0);  <br />}[/syntax]<br /><br />Dziękuję wszystkim za pomoc.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14494">Lu_let</a> — 28 maja 2019, o 17:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2019-05-28T06:13:09+01:00</updated>
<published>2019-05-28T06:13:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219317#p219317</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219317#p219317"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219317#p219317"><![CDATA[
Kod, który przedstawiłeś będzie co sekundę uruchamiał pierwszą pętlę (212 * zmiana stanu <strong>PB1</strong> co 1ms).<br />Warunek <strong><em>if(b==60)</em></strong> będzie spełniony, czyli druga pętla (212 * zmiana stanu <strong>PB2</strong> co 1ms) będzie wykonana, gdy:<br /><strong>((sek*212)%256)==60</strong><br />gdzie:<br /><strong>sek</strong> to sekundy<br />(% to operator modulo)<br />Nie chce mi się teraz liczyć, po ilu sekundach to nastąpi.<br /><br />Jeśli chcesz, aby pierwsza pętla była wykonywana co sekundę, a druga co 60 sekund, spróbuj tak:[syntax=c]//<br />    if( EIFR &amp; (1&lt;&lt;INTF0))  {       //przerwanie co 1 sekundę<br />        for (a=0; a&lt;212; a++) {       //pętla sekund<br />            PORTB ^= (1&lt;&lt;PB1);<br />            _delay_ms(1);<br />        }<br />        b++;<br />        if (b==60) {<br />            for (c=0; c&lt;212; c++) {      // pętla minut<br />                PORTB ^= (1&lt;&lt;PB2);<br />                _delay_ms(1);<br />            }<br />            b = 0;<br />        }<br />        EIFR |= (1&lt;&lt;INTF0);<br />    }[/syntax]<br /><br />EDIT:<br />Widzę, że kolega <strong>Szofer</strong> uprzedził mnie i wskazał już miejsce błędu, ale zostawię moją odpowiedź jako uzupełnienie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 28 maja 2019, o 06:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Szofer]]></name></author>
<updated>2019-05-28T06:12:01+01:00</updated>
<published>2019-05-28T06:12:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219316#p219316</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219316#p219316"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219316#p219316"><![CDATA[
Druga pętla jest po if(b==60) wiec ona działa jak  jest spełniony if, czyli w zakresie b=0 do b=212, zauważ że inkrementujesz b w petli for, ona zakonczy sie kiedy &quot;a&quot; osiagnie 212, wiec nie wykona sie drugi if bo w pierwszym if-ie &quot;b&quot; przekroczy wartosc warunku drugiego if-a zanim wyjdzie z pętli i program przejdzie dalej.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7664">Szofer</a> — 28 maja 2019, o 06:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lu_let]]></name></author>
<updated>2019-05-28T05:02:27+01:00</updated>
<published>2019-05-28T05:02:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219315#p219315</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219315#p219315"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219315#p219315"><![CDATA[
<div class="quotetitle">Szofer napisał(a):</div><div class="quotecontent"><br />Przesuń nawias } ten co jest po b++ na koniec drugiej pętli za b=0 } i zadziala z każdą wartością od b==1 do b==212<br /></div><br /><br />Przesunięcie tego nawiasu powoduje tylko to że, obie pętle pracują razem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14494">Lu_let</a> — 28 maja 2019, o 05:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2019-05-27T20:47:45+01:00</updated>
<published>2019-05-27T20:47:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219303#p219303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219303#p219303"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219303#p219303"><![CDATA[
Dlatego też napisałem, że nie wiem czy dobrze zrozumiałem jego problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 27 maja 2019, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Szofer]]></name></author>
<updated>2019-05-27T20:30:18+01:00</updated>
<published>2019-05-27T20:30:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219302#p219302</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219302#p219302"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219302#p219302"><![CDATA[
Przepraszam ale... <br /><br />Kolega pisał co robi zle w tym przedstawionym kodzie, nie pytał o inne rozwiazania, bo może to jest jego zamierzony cel, pomigac dioda tak szybko że aż sobie świeci delikatnym swiatełkiem ciagłym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7664">Szofer</a> — 27 maja 2019, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2019-05-27T20:23:08+01:00</updated>
<published>2019-05-27T20:23:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219301#p219301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219301#p219301"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219301#p219301"><![CDATA[
Jeżeli cię dobrze zrozumiałem, to tak się tego nie robi. <br />Jeżeli chcesz zmieniać stan diody nr.1 co sekundę na przeciwny a stan diody nr.2 co minutę na przeciwny<br />a korzystasz z przerwania co 1sekundę to wyrzuć te pętle for z pętli głównej i skorzystaj z procedury przerwania.<br />Jak? No tak:<br />Skoro przerwanie odbywa się co sekundę to zmieniaj stan pinu PB1 w procedurze obsługi tego przerwania.<br />Potem inkrementuj sobie jakąś zmienną np. a , i sprawdzaj if-em czy osiągnęła już wynik np a&gt;59.<br />Wtedy jeśli if zostanie spełniony to zmień stan drugiej diody na PB2 na przeciwny i wyzeruj zmienną a.<br />Wszystkim zajmie się procedura obsługi przerwania a pętla główna zostanie pusta. <br />No i to wszystko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 27 maja 2019, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Szofer]]></name></author>
<updated>2019-05-27T20:17:55+01:00</updated>
<published>2019-05-27T20:17:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219299#p219299</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219299#p219299"/>
<title type="html"><![CDATA[Re: Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219299#p219299"><![CDATA[
Przesuń nawias } ten co jest po b++ na koniec drugiej pętli za b=0 } i zadziala z każdą wartością od b==1 do b==212<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7664">Szofer</a> — 27 maja 2019, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lu_let]]></name></author>
<updated>2019-05-27T18:26:30+01:00</updated>
<published>2019-05-27T18:26:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219296#p219296</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219296#p219296"/>
<title type="html"><![CDATA[Pętla w pętli]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22289&amp;p=219296#p219296"><![CDATA[
Witam,<br />Zamierzony efekt to po 60 obiegach pętli sekund, jeden obieg pętli minut.<br />Problem w tym że działa tylko z wartością 60!?<br />Całość działa w co sekundowym przerwaniu.<br />Czy to zadziała, co robię źle?<br /><br />[syntax=c]uint8_t a=0;<br />uint8_t b=0;<br />uint8_t c=0; <br />sei();<br />while(1) {<br />    if( EIFR &amp; (1&lt;&lt;INTF0))  {       //przerwanie co 1 sekundę <br />        for(a=0;a&lt;212;a++) {       //pętla sekund<br />        PORTB ^= (1&lt;&lt;PB1);<br />         _delay_ms(1);<br />  b++;<br /> }<br />        if(b==60) {<br />                for(c=0;c&lt;212;c++) {      // pętla minut<br />                   PORTB ^= (1&lt;&lt;PB2);<br />                           _delay_ms(1);<br />                  b=0;<br />                            }<br />        }<br />    EIFR |= (1&lt;&lt;INTF0);<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14494">Lu_let</a> — 27 maja 2019, o 18:26</p><hr />
]]></content>
</entry>
</feed>