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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-09-15T20:27:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4157&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-09-15T20:27:06+01:00</updated>
<published>2013-09-15T20:27:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49758#p49758</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49758#p49758"/>
<title type="html"><![CDATA[Re: Pomiar długości impulsu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49758#p49758"><![CDATA[
<div class="quotetitle">dzielik napisał(a):</div><div class="quotecontent"><br />TCNT0 = timer_start;<br /></div><br />Należy zdawać sobie sprawę, że to nie zostanie wykonane natychmiast. Funkcja przerwania zawiera prolog (kod dodawany przez kompilator), który  zawiera kilka instrukcji asemblera. Możesz spróbować:<br />- użyć operatora +=<br />- zwiększyć częstotliwość z 1MHz na 8MHz i użyć ustawić preskaler timera na 8<br />- użyć trybu CTC, wtedy przeładowanie jest automatyczne<br />Oczywiście najlepsze jest wykorzystanie wejścia ICP, ale warto sobie przećwiczyć to co powyżej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 wrz 2013, o 20:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dzielik]]></name></author>
<updated>2013-09-12T22:05:01+01:00</updated>
<published>2013-09-12T22:05:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49382#p49382</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49382#p49382"/>
<title type="html"><![CDATA[Re: Pomiar długości impulsu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49382#p49382"><![CDATA[
Sprowadzamy się chyba do tego co sam wyliczyłem na chłopski rozum, a więc:<br /><br />preskaler = 1,<br />ilość zliczeń licznika sprzętowego = 100 (ustawiam TCTN0 = 156),<br />ilość zliczeń licznika programowego = 15<br /><br />zgodnie ze wzorem:<br />1 000 000 / 1 / 100 / 15 =~ 667<br />i dalej:<br />1/667 =~ 0,0015 = 1,5ms.<br /><br />Jak widać obliczenia wyszły tak samo jak mi... (mi ładniej bo bez zaokrągleń <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) <br />Chyba nie w liczeniu jest problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1752">dzielik</a> — 12 wrz 2013, o 22:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dzielik]]></name></author>
<updated>2013-09-12T21:02:11+01:00</updated>
<published>2013-09-12T21:02:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49373#p49373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49373#p49373"/>
<title type="html"><![CDATA[Re: Pomiar długości impulsu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49373#p49373"><![CDATA[
<div class="quotetitle">GwynBleidD napisał(a):</div><div class="quotecontent"><br />100 taktów licznika to 25ms, a nie 1,5! Dla częstotliwości taktowania 1MHz, bo tą zrozumiałem z Twojego postu.<br /></div><br /><br />Wg moich wyliczeń i to napisałem w poście, że czas impulsu powinien być równy 1,5ms dla licznika = 15.<br /><br />Przez słowo licznik mam na myśli zmienną w programie, którą zwiększam o 1 co 100 taktów uC.<br />Czyli 1 licznik powinien być równy 100us.<br /><br />Skąd te 25ms? może właśnie coś źle myślę.<br /><br />Już chyba widzę, kolega pomnożył 100 x 256. I tu się zgadza około 25ms. czyli dla licznika 6 jest około 1,5ms.<br /><br />Problem mam z drugim przypadkiem, gdzie zmieniam TCTN0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1752">dzielik</a> — 12 wrz 2013, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dzielik]]></name></author>
<updated>2013-09-12T20:30:28+01:00</updated>
<published>2013-09-12T20:30:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49364#p49364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49364#p49364"/>
<title type="html"><![CDATA[Pomiar długości impulsu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4157&amp;p=49364#p49364"><![CDATA[
Cześć<br /><br />próbuje zmierzyć czas trwania impulsu 1,5 ms.<br />Częstotliwość uC 1Mhz.<br />Do pomiaru wykorzystuję Timer0 bez preskalera.<br />W przerwaniu TIMER0_OVF_vect zwiększam licznik o 1.<br /><br />Zacząłem sobie liczyć:<br />1 takt -&gt; 1us<br />1 licznik -&gt; 256taktów -&gt; 256us.<br />Czyli 1,5 ms wychodzi mi dla licznika = 6 (6x256).<br /><br />No i to działa poprawnie. Zacząłem sobie trochę eksperymentować, bo ten licznik = 6 to trochę mała rozdzielczość.<br />A więc na starcie ustawiłem TCNT0 = 156. Czyli timer do przepełnienia powinien policzyć 100 taktów.<br /><br />Czyli 1,5ms powinno być dla licznika (podbijanego o 1 w TIMER0_OVF_vect) równego 15.<br />Niestety 1,5ms jest dla około licznika = 18.<br /><br />Czy ktoś mi może powiedzieć skąd taka różnica i gdzie źle myślę?<br /><br />Moim podejrzeniem jest ten fragment kodu, że ten timer coś się źle ustawia, może w przerwaniu nie wolno takich rzeczy robić?<br />[syntax=c]ISR(TIMER0_OVF_vect) {<br />TCNT0 = timer_start;       <br />licznik++;<br />}[/syntax]<br /><br />Ogólnie program działa, ale nurtuje mnie to, że nie wiem dlaczego tak  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />dzięki za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1752">dzielik</a> — 12 wrz 2013, o 20:30</p><hr />
]]></content>
</entry>
</feed>