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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-12-12T13:02:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5120&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-12T13:02:10+01:00</updated>
<published>2013-12-12T13:02:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60783#p60783</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60783#p60783"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60783#p60783"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />I to jest właśnie to wspomniane ryzyko!<br /></div><br /><br />Tzn ja bym zwrócił uwagę - że ryzyko wiąże się jeszcze z czym innym równie ważnym ... tzn ryzyko w tych przypadkach to może za duże słowo - bo jak się dobrze wszystko przemyśli to można sporo wycisnąć ale ...<br /><br />oczywiście jeśli chodzi o timery programowe ....<br /><br />odpalanie ich co 1 ms (i nie ważne w oparciu o jaki timer sprzętowy) ... niesie za sobą już ŚCISŁĄ kontrolę tego tzn tych funkcji, które są odpalane co 1 ms <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... bo czas nagle mega krótki - a rzadko kto, nie znający jeszcze asemblera - sprawdzi sobie ile czasu zajmuje mu funkcja wywoływana co 1 ms!. Tymczasem dość łatwo przekroczyć czas 1 ms w takim przypadku - a wtedy co mamy ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... wtedy mamy extra sieczkarnię <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />efekty są nieco podobne jak w sytuacji gdy np w przerwaniach sprzętowych ktoś korzysta z _delay_ms() albo obsługi LCD czy innych dłuższych procesów. Wtedy przerwania się nakładają i efekt jest taki - że wygląda jakby przerwania działały w miarę ok ale program główny prawie nie żyje ...<br /><br />Niestety w przypadku timerów programowych efekt będzie nieco bardziej koszmarny i ciężko będzie nawet nieraz w ogóle dojść co jest powodem takiego a nie innego zachowania programu. To już prawie takie efekty specjalne jak przy problemach ze stosem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> o których wspominam w Greenbooku, tyle że tu przy timerach programowych nawet tego wprost nie sprawdzimy takim narzędziem jakie opisałem w książce <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />otóż nakładające się wywołania (zbyt częste a zbyt długie) timerów programowych co 1 ms ... będą obleśnie rozciągały (że użyję takiego kociego określenia) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... wszystko w programie głównym ... wtedy nie dość że zacznie się sypać wszystko co ma działać co 1 ms to jeszcze się okaże - że zacznie mieć to wpływ także nawet na inne timery programowe .... efekty więc będą przedziwne w zależności od tego co kto spłodzi jeśli chodzi o kod źródłowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i nie do opisania w jakiś prosty sposób - żeby podpowiedzieć że np ..... jak źle zrobisz to możesz spotkać się z problemem X albo Y albo Z<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 gru 2013, o 13:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2013-12-12T11:13:06+01:00</updated>
<published>2013-12-12T11:13:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60769#p60769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60769#p60769"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60769#p60769"><![CDATA[
Wykorzystywanie dwóch timerów sprzętowych dla zrealizowania zwykłych opóźnień to moim zdaniem jawne marnotrawstwo. Oczywiście kolega Mirek ma rację, że programowe odliczacze przy wysokiej częstotliwości są bardzo ryzykowne i 10ms wystarcza w 90% przypadków. Wspomnieć jednak warto, że ryzyko gęstego wywoływania przede wszystkim dotyczy budowy timerów 16-o bitowych i większych. Może wtedy nastąpić sytuacja, która napsuje nerwów ile wlezie z jaką się osobiście ostatnio spotkałem (jak zwykle przez przypadek <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ). Otóż przy jakimś tam programie mój 16-o bitowy timer, był aktualizowany w przerwaniu (co 1ms) tylko, że to co dostawałem w zamian to była jakaś loteria!. Okazało się, że zmienna licznikowa do timera w przerwaniu dochodziła tam w ...kawałkach co w efekcie dawało różnej długości odcinki czasowe. I to jest właśnie to wspomniane ryzyko!<br />No ale nie demonizujmy, nie jest tak do końca źle jak by się wydawało <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . Oczywiście jeśli dobrze wszystko zaplanujesz i same przerwania nie będą zajęte jakimiś ciężkimi obliczeniami, a w pętli głównej prawidłowo odczytasz to co zawartość przerwań przekaże to możesz zagęścić częstotliwość tylko pamiętaj o tych 16-u bitach (i większych liczbach też oczywiście). Dla przykładu niech posłuży jeden z moich projektów (bascomowych co warto wspomnieć). Mam tam timer w przerwaniu wywoływanym z częstotliwością 25kHz (czyli co 40us) przy zegarze 16MHz i wszystko działa jak należy. Tyle, że przerwanie było naprawdę dobrze zaplanowane i nie było mowy o jego nadwyrężaniu. Dla pętli głównej zostało bardzo dużo czasu i wszystko pięknie działa bez czkawki <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=1922">SylwekK</a> — 12 gru 2013, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Batat]]></name></author>
<updated>2013-12-12T10:58:17+01:00</updated>
<published>2013-12-12T10:58:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60766#p60766</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60766#p60766"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60766#p60766"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />Brak komentarzy w kodzie to nie jest dobry styl programowania...<br />A w BB i na forum tyle już o tym napisano <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /><br /></div><br />To był tylko wycinek kodu, bez komentarzy.<br /><br /><div class="quotetitle">squeez napisał(a):</div><div class="quotecontent"><br /><strong>@Batat</strong> - nadpisujesz rejestr TIMSK i pewnie tu jest problem (reszty nie analizowałem).<br /></div><br />I tu był błąd, rejestr TIMSK trzeba ustawić za jednym razem, dzięki za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2226">Batat</a> — 12 gru 2013, o 10:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2013-12-12T07:43:37+01:00</updated>
<published>2013-12-12T07:43:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60726#p60726</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60726#p60726"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60726#p60726"><![CDATA[
<div class="quotetitle">Batat napisał(a):</div><div class="quotecontent"><br />W assemblerze to nie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Włączyłem drugi timer (Timer0) i coś nie działa mi teraz nawet ten do timerów programowych (Timer2)... nie bardzo wiem czemu, czy coś źle zrobiłem?<br />Na razie Timer0 w przerwaniu robi &quot;nic&quot;.<br /><br />Część kodu odpowiedzialna za inicjację i obsługę przerwań:<br /></div><br />Brak komentarzy w kodzie to nie jest dobry styl programowania...<br />A w BB i na forum tyle już o tym napisano <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=189">MirkoT</a> — 12 gru 2013, o 07:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Batat]]></name></author>
<updated>2013-12-11T23:45:57+01:00</updated>
<published>2013-12-11T23:45:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60707#p60707</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60707#p60707"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60707#p60707"><![CDATA[
W assemblerze to nie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Włączyłem drugi timer (Timer0) i coś nie działa mi teraz nawet ten do timerów programowych (Timer2)... nie bardzo wiem czemu, czy coś źle zrobiłem?<br />Na razie Timer0 w przerwaniu robi &quot;nic&quot;.<br /><br />Część kodu odpowiedzialna za inicjację i obsługę przerwań:<br />[syntax=c]TCCR0  |= (1&lt;&lt;WGM01);<br />TCCR0  |= (1&lt;&lt;CS01);<br />OCR0  = 200;<br />TIMSK  = (1&lt;&lt;OCIE0);<br /><br />TCCR2  |= (1&lt;&lt;WGM21);<br />TCCR2  |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);<br />OCR2  = 156;<br />TIMSK  = (1&lt;&lt;OCIE2);<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />}<br /><br />ISR(TIMER2_COMP_vect)<br />{<br />uint16_t n;<br /><br />n = Timer1;<br />if (n) Timer1 = --n;<br />n = Timer2;<br />if (n) Timer2 = --n;<br />n = Timer3;<br />if (n) Timer3 = --n;<br />n = Timer4;<br />if (n) Timer4 = --n;<br />n = Timer5;<br />if (n) Timer5 = --n;<br />n = Timer6;<br />if (n) Timer6 = --n;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2226">Batat</a> — 11 gru 2013, o 23:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gregor]]></name></author>
<updated>2013-12-11T23:31:18+01:00</updated>
<published>2013-12-11T23:31:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60704#p60704</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60704#p60704"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60704#p60704"><![CDATA[
Witam<br /><br />Panie Mirku nibył by jakiś poranik na temat TIMERY ?<br />Bardzo mi te poradniki pomagajom<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2178">gregor</a> — 11 gru 2013, o 23:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-11T23:26:04+01:00</updated>
<published>2013-12-11T23:26:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60703#p60703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60703#p60703"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60703#p60703"><![CDATA[
<div class="quotetitle">Batat napisał(a):</div><div class="quotecontent"><br />Czyli lepiej użyć do tego celu timer sprzętowy?<br /></div><br /><br />Wszystko jeszcze zależy jak napiszesz kod w takim timerze programowym. 1ms to mało - jak się pisze w asemblerze, dobrze w asemblerze to wtedy 1 ms to może być ok tak jak 10 ms w C ... no ale pisać wszystko w asm ??? no chyba że na jakimś ATtiny13<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 gru 2013, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-12-11T22:04:44+01:00</updated>
<published>2013-12-11T22:04:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60689#p60689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60689#p60689"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60689#p60689"><![CDATA[
Zerkam tęsknie w kierunku DIY frezarki CNC. Oglądając wykonywane konstrukcje sterowników silników krokowych często widziałem rozwiązania: jedna mega8 na jeden silnik + jednostka zarządzająca. Dlaczego? Żeby nie robić timerów programowych i puszczać na nich trzech silników, a wykorzystywać wyłącznie sprzętowe. Chyba coś w tym jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 11 gru 2013, o 22:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Batat]]></name></author>
<updated>2013-12-11T21:48:08+01:00</updated>
<published>2013-12-11T21:48:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60686#p60686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60686#p60686"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60686#p60686"><![CDATA[
10ms używam praktycznie do wszystkiego, ale do obsługi silnika krokowego bipolarnego to trochę za dużo (nierówno pracuje), a przy 1ms już całkiem ładnie pracuje.<br />ATMega16, kwarc 16MHz.<br /><br />Czyli lepiej użyć do tego celu timer sprzętowy?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2226">Batat</a> — 11 gru 2013, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-11T21:44:42+01:00</updated>
<published>2013-12-11T21:44:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60684#p60684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60684#p60684"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60684#p60684"><![CDATA[
<div class="quotetitle">perlon napisał(a):</div><div class="quotecontent"><br />Dodam, że dwa timery programowe 1ms i 10ms można teoretycznie obsłużyć jednym timerem sprzętowym tykającym co 1ms<br /></div><br /><br />I bardzo słuszna uwaga <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tylko warto też wziąć to co napisałem wyżej odnośnie czasu 1 ms <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> — 11 gru 2013, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-12-11T21:37:23+01:00</updated>
<published>2013-12-11T21:37:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60681#p60681</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60681#p60681"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60681#p60681"><![CDATA[
Odpowiedź : TAK ale chyba cię to nie zadowoli. Może dokładniej sprecyzuj osochozi. <br />Dodam, że dwa timery programowe 1ms i 10ms można teoretycznie obsłużyć jednym timerem sprzętowym tykającym co 1ms. Tylko wtedy jaki ma sens timer programowy 1ms?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 11 gru 2013, o 21:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-11T21:35:28+01:00</updated>
<published>2013-12-11T21:35:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60679#p60679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60679#p60679"/>
<title type="html"><![CDATA[Re: Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60679#p60679"><![CDATA[
a czemu by nie - ale zawsze powtórzę - UWAGA! ... rozdzielczość 1 ms w C ... może cię zgubić .... nie rób tego - no 5 ms to już bywa za mało ... chyba że mamy taktowanie 20MHz ... bezpiecznie i optymalnie jest startować od 10 ms<br /><br />a do innych celów wykorzystywać timery sprzętowe ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 gru 2013, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Batat]]></name></author>
<updated>2013-12-11T21:26:27+01:00</updated>
<published>2013-12-11T21:26:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60676#p60676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60676#p60676"/>
<title type="html"><![CDATA[Dwa timery programowe o różnej rozdzielczości]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5120&amp;p=60676#p60676"><![CDATA[
Witam,<br />czy jest możliwość użycia dwóch timerów sprzętowych do obsługi dwóch timerów programowych o różnej rozdzielczości?<br />Jeden standardowy 10ms, a drugi 1ms lub mniej?<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2226">Batat</a> — 11 gru 2013, o 21:26</p><hr />
]]></content>
</entry>
</feed>