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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-03-03T13:41:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22007&amp;mode</id>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-03-03T13:41:53+01:00</updated>
<published>2019-03-03T13:41:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217077#p217077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217077#p217077"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217077#p217077"><![CDATA[
<div class="quotetitle">fobos napisał(a):</div><div class="quotecontent"><br />( soft_timery to nie są przerwania, sądzę, że to wiesz ale akcentuję )<br /></div><br /><br />Tak wiem o tym - źle napisałem  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  ale dobrze, że sprostowałeś. Oczywiście chodziło mi o ciało procedury obsługi timera, a nie przerwań.<br /><br />Dzięki, do poradnika zajrzę bo tego jeszcze nie widziałem - warto uzupełnić wiedzę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 3 mar 2019, o 13:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fobos]]></name></author>
<updated>2019-03-03T11:58:07+01:00</updated>
<published>2019-03-03T11:58:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217074#p217074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217074#p217074"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217074#p217074"><![CDATA[
Zajrzyj do poradnika --&gt; #0385 Analizator, debuger - jak sprawdzić ile czasu trwa funkcja w C oraz innych, ten poradnik świetnie wyjaśnia co się dzieje z czasem wykonywania rożnych funkcji gdy w programie działają przerwania ( soft_timery to nie są przerwania, sądzę, że to wiesz ale akcentuję ) myślę, że wówczas lepiej to zagadnienie zrozumiesz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7548">fobos</a> — 3 mar 2019, o 11:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-03-03T09:16:02+01:00</updated>
<published>2019-03-03T09:16:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217067#p217067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217067#p217067"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217067#p217067"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />najpierw postaraj się jednak zrozumieć co to są timery programowe i do czego się ich używa<br /></div><br /><br />Brak mi doświadczenia dlatego nie przychodzi mi od razu do głowy wszystko co czytałem lub się dowiedziałem (trzeba czasem mnie pacnąć w głowę)  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />  jednak przypomniałem sobie, że Pan mówił na webinarze o Timerach, że sprzętowe są dokładniejsze od programowych i sprzętowych się używa do odliczania krótkiego czasu. A do odmierzania podstawy czasu najlepiej używać timerów 8 bitowych <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=11336">Tom92</a> — 3 mar 2019, o 09:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-03-03T08:40:34+01:00</updated>
<published>2019-03-03T08:40:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217066#p217066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217066#p217066"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217066#p217066"><![CDATA[
<div class="quotetitle">Tom92 napisał(a):</div><div class="quotecontent"><br />to warunek nie będzie spełniony po 1 sekundzie tylko<br /></div><br />... panie kochany - najpierw postaraj się jednak zrozumieć co to są timery programowe i do czego się ich używa .... bo jak ktoś pisze, że one nie działają dokładnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to oznacza, że właśnie tego nie wie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 mar 2019, o 08:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-03-03T08:34:09+01:00</updated>
<published>2019-03-03T08:34:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217065#p217065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217065#p217065"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=217065#p217065"><![CDATA[
<div class="quotetitle">fobos napisał(a):</div><div class="quotecontent"><br />Zakładam, że wartość REFRESH_RATE=500 --&gt; 500Hz przerwanie co 2ms, f. tmr_irq_tick  petlą if( ms10++ &gt; (REFRESH_RATE/100) ) dodatkowo opóźnia wykonanie dekrementacji licznika cnt dla REFRESH_RATE=500 --&gt; 5 krotnie czyli 2ms*5=10ms. Co 10ms będzie dekrementowana wartość licznika cnt. <br />Jeżeli wynosi ona 80 to po 800ms będzie spełniony (TRUE) warunek if( !tmr-&gt;cnt ) z f. timers_process która wywoła f.callback-ową użytkownika i załaduje ponownie wartość cnt=80 tak by ponownie mógł zadziałać po 800ms soft.timer0.<br /></div><br /><br />Dokładnie, dlatego zastanawia mnie to, że jeżeli wpiszę interval = 1000, to warunek nie będzie spełniony po 1 sekundzie tylko trochę dłużej to zajmuje. Możliwe, że jest małe opóźnienie z powodu dużej ilości kodu w ciele procedury obsługi przerwań <br />ISR( TIMER2_COMPA_vect ) {}<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 3 mar 2019, o 08:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fobos]]></name></author>
<updated>2019-02-28T00:29:15+01:00</updated>
<published>2019-02-28T00:29:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216974#p216974</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216974#p216974"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216974#p216974"><![CDATA[
Ponieważ masz YB to zakładam, że szczegóły doczytasz w książce, bazując na niej przedstawię moje uproszczone rozumowanie wyjaśniające Twoje pytanie, nie traktuj poniższego jako wyroczni  wszyscy popełniamy błędy a przecież też jestem stale początkujący jeżeli coś opisałem błędnie to mam nadzieję, że ktoś mnie &quot;wyprostuje&quot; i się czegoś nauczę.<br /><br />W funkcji main w petli While w kółko wywoływane są funkcje zdarzeniowe w tym  f.zdarzeniowa  TIMERS_EVENT();<br />Po jej wywołaniu (f.TIMERS_EVENT();) pętla for( uint8_t i=0; i&lt;MAX_TIMERS; i++ ) sprawdza czy i-ty soft timer jest enabled, jeżeli tak wywołana zostanie f. timers_process ( &amp;stimers[ i ] ); <br />f. timers_process sprawdza czy TRUE jest warunek if( !tmr-&gt;cnt ) a ten może być TRUE tylko wtedy gdy w przerwaniach f. tmr_irq_tick zrobi swoje czyli zdekrementuje cnt do zera.<br />Funkcja  tmr_irq_tick umieszczona jest w obsłudze przerwania licznika T2.<br /><br />Skoro dotarliśmy do przerwania można odnieść się do Twojego pytania „ teraz nie wiem co ile ms timery programowe w funkcji tmr_irq_tick() będą się zerować” <br /><strong>Co ile ms będzie się realizował dany soft.timer zależy od wartości z jaką został zainicjowany</strong>  np.: timer_init( 0, 800, 1, timer0_tick );  <br />0 –soft.timer0; parametr intterwal=800  czyli cnt=80; 1-enabled; timer0_tick – funkcja użytkownika<br /><br />Zakładam, że wartość REFRESH_RATE=500 --&gt; 500Hz przerwanie co 2ms, f. tmr_irq_tick  petlą if( ms10++ &gt; (REFRESH_RATE/100) ) dodatkowo opóźnia wykonanie dekrementacji licznika cnt dla REFRESH_RATE=500 --&gt; 5 krotnie czyli 2ms*5=10ms. Co 10ms będzie dekrementowana wartość licznika cnt. <br />Jeżeli wynosi ona 80 to po 800ms będzie spełniony (TRUE) warunek if( !tmr-&gt;cnt ) z f. timers_process która wywoła f.callback-ową użytkownika i załaduje ponownie wartość cnt=80 tak by ponownie mógł zadziałać po 800ms soft.timer0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7548">fobos</a> — 28 lut 2019, o 00:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-26T10:53:56+01:00</updated>
<published>2019-02-26T10:53:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216924#p216924</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216924#p216924"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216924#p216924"><![CDATA[
Ja już nie pamiętam dokładnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale zdaje się że tak jak piszesz - timery programowe powinny śmigać co 10ms - ja tak zwykle domyślnie ustawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lut 2019, o 10:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-02-26T09:21:37+01:00</updated>
<published>2019-02-26T09:21:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216923#p216923</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216923#p216923"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216923#p216923"><![CDATA[
Ale chciałem zrozumieć dlaczego została zastosowana taka operacja, siedzę z kalkulatorem i kombinuję  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  bo wyświetlaczem też się bawię.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach (420 tyś milusekundach) ]</span></strong><br /><br />OK, timer sprzętowy jest ustawiony na 2ms.<br /><br />Teraz jeśli zmienna w warunku if zwiększy wartość 5 razy ----&gt; czyli (5 * 2 = 10ms) to napędza timery programowe i zeruje zmienną.<br /><br />Czyli timery programowe są ustawione na 10ms?<br /><br />Ale dalej nie pasuje w inicjalizacji albo już sie pomieszałem :p<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 26 lut 2019, o 09:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-26T09:14:53+01:00</updated>
<published>2019-02-26T09:14:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216922#p216922</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216922#p216922"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216922#p216922"><![CDATA[
Przecież w YB w tym przykładzie wykorzystany został timer sprzętowy odpowiedzialny za odświeżanie ekranu, stąd takie dodatkowe operacje ... jeśli nie robisz wyświetlacza i odświeżania to ustaw sobie timer sprzętowy na 10ms a później jak chcesz co sekundę to daj wartość 100<br /><br />[syntax=c]timer_init( 0, 100, 1, timer0_tick );[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lut 2019, o 09:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-02-26T08:27:40+01:00</updated>
<published>2019-02-26T08:27:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216920#p216920</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216920#p216920"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216920#p216920"><![CDATA[
Tak jak w książce 18 432 000 Hz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 26 lut 2019, o 08:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2019-02-26T08:29:22+01:00</updated>
<published>2019-02-26T08:26:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216919#p216919</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216919#p216919"/>
<title type="html"><![CDATA[Re: YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216919#p216919"><![CDATA[
A jakiego kwarcu kolega używa?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 26 lut 2019, o 08:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-02-26T08:39:31+01:00</updated>
<published>2019-02-26T08:25:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216918#p216918</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216918#p216918"/>
<title type="html"><![CDATA[YB timery programowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22007&amp;p=216918#p216918"><![CDATA[
Witam,<br /><br />Mam problem ze zrozumieniem jak obliczany jest czas timera programowego z YB.<br /><br />W pliku mk_matrix_disp.c jest zainicjalizowany TIMER2 z częstotliwością odświerzania 500 Hz to jest 2ms<br /><br />W ciele obsługi procedury przerwania Timera2 jest jak niżej (REFRESH_RATE = 500):<br />[syntax=c]if( ms10++ &gt; (REFRESH_RATE/100) ) {<br /><br />tmr_irq_tick();<br /><br />ms10 = 0;<br />}[/syntax]<br /><br />i teraz nie wiem co ile ms timery programowe w funkcji tmr_irq_tick() będą się zerować.<br /><br />Załóżmy, że chciałbym aby dioda migała co 1s to musiałbym zainicjalizować np. programowy timer0 jak niżej, ponieważ w książce napisane jest, że wartość podaje się w ms:<br />[syntax=c]timer_init( 0, 1000, 1, timer0_tick );[/syntax]<br /><br />Ale w tym przypadku miganie jest dużo wolniejsze niż 1s, dlatego trzeba wpisać nie 1000 tylko coś około 720. I tego nie rozumiem, czy ktoś potrafiłby mi wytłumaczyć jak obliczać czas tych timerów z YB?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 26 lut 2019, o 08:25</p><hr />
]]></content>
</entry>
</feed>