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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-02T14:58:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14699&amp;mode</id>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T14:58:25+01:00</updated>
<published>2016-03-02T14:58:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155259#p155259</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155259#p155259"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155259#p155259"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />http://mirekk36.blogspot.com/2013/12/pr ... acego.html<br /></div><br /><br />Panie Mirku, dziękuję. Teraz moja wiedza o obsłudze przerwań się ustematyzowała. Nieświadomie robiłem kilka głupot w tej materii.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br />Ale jeszcze w ramach uściślenia - Ty chcesz badać długość pojedyńczego impulsu ?<br />...to może puść go na INT'a - start przy narastającym, stop przy opadającym ...zboczu  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Pozdr.<br /></div><br /><br />Dokładnie tak robię  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Problem tkwił w bezsensownym generowaniu przerwań co 1us. Ubzdurałem sobie że tylko w ten sposób otrzymam pomiar dokładny do 1us.<br />To oczywiście byłą głupota, teraz używam timera w trybie normal, przerwanie leci co 256 taktów, a żeby nie stracić dokładności uwzględniam poza licznikiem  inkrementowanym w przerwaniu także ostatnią wartość TCNT0 i jest OK.<br /><br />Dziękuję wszystkim za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-03-02T13:13:42+01:00</updated>
<published>2016-03-02T13:13:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155242#p155242</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155242#p155242"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155242#p155242"><![CDATA[
Witam<br />Ale jeszcze w ramach uściślenia - Ty chcesz badać długość pojedyńczego impulsu ?<br />...to może puść go na INT'a - start przy narastającym, stop przy opadającym ...zboczu  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 mar 2016, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-03-02T11:27:11+01:00</updated>
<published>2016-03-02T11:27:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155226#p155226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155226#p155226"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155226#p155226"><![CDATA[
<div class="quotetitle">adamjac65 napisał(a):</div><div class="quotecontent"><br />Co 16 taktów zegara generuję przerwanie, które trwa nie wiadomo jak długo<br /></div><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/12/przerwania-okiem-poczatkujacego.html" >http://mirekk36.blogspot.com/2013/12/pr ... acego.html</a><!-- m --><br /><br />obejrzyj - a później zajrzyj do pliku *.lss i sprawdź sobie ile masz instrukcji asemblerowych w procedurze obsługi przerwania, sprawdź ile każda z nich zajmuje taktów zegara i wtedy od razu będziesz wiedział ile ono się wykonuje. Pamiętaj też że każda procedura obsługi przerwania w C ma jeszcze swój prolog i epilog, który też zajmuje czas<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 mar 2016, o 11:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T11:08:46+01:00</updated>
<published>2016-03-02T11:08:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155224#p155224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155224#p155224"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155224#p155224"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br /><div class="quotetitle">adamjac65 napisał(a):</div><div class="quotecontent">.Aby uzyskać pomiar <strong>do 10MHz</strong>, należy użyć kwarcu powyżej 21MHz<br /></div><br />...ale Ty zdaje się potrzebujesz do 1MHz; czyli od biedy nawet 8MHz wstarczy<br /><br />Pozdr.</div><br /><br />No tak, oczywiście masz rację.  1us na takt to odpowiednio 1MHz<br />Więc tym bardziej moje 16Mhz powinno dać radę.<br /><br />Jednak idąc za Twoją wskazówką próbuje niedomaganie wytłumaczyś sobie następujaco:<br />Co 16 taktów zegara generuję przerwanie, które trwa nie wiadomo jak długo ale pewnie dłużej niż 15 taktów - wiec CPU nie wyrabia się stąd nieprawidłowe zlicznie.<br /><br />Spróbuję podpiąć mój sygnał pod przerwanie ICP, żeby nie zajmować CPU generowaniem przerwań co 1us<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 11:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-03-02T10:53:41+01:00</updated>
<published>2016-03-02T10:53:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155223#p155223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155223#p155223"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155223#p155223"><![CDATA[
Witam<br /><div class="quotetitle">adamjac65 napisał(a):</div><div class="quotecontent"><br />.Aby uzyskać pomiar <strong>do 10MHz</strong>, należy użyć kwarcu powyżej 21MHz<br /></div><br />...ale Ty zdaje się potrzebujesz do 1MHz; czyli od biedy nawet 8MHz wstarczy<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 mar 2016, o 10:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T10:12:43+01:00</updated>
<published>2016-03-02T10:12:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155222#p155222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155222#p155222"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155222#p155222"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Witam<br />Możesz m.in wykorzystać wejście liczące: <br /><a href="https://obrazkiforum.atnel.pl/826/9334230e875e1b8b16685630a1db39a4.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/826/9334230e875e1b8b16685630a1db39a4.jpg" alt="Obrazek" /></a><br />...z resztą poczytaj to:<a href="http://mdiy.pl/miernik-czestotliwosci-na-avr-od-1hz-do-10mhz/"  class="postlink">http://mdiy.pl/miernik-czestotliwosci-na-avr-od-1hz-do-10mhz/</a><br />może coś przystosujesz do swoich potrzeb ( chodzi o samą ideę wykorzystania tego licznika )<br /><br />Pozdr.<br /></div><br /><br />Faktycznie wyrażnie piszą &quot;...Aby uzyskać pomiar do 10MHz, należy użyć kwarcu powyżej 21MHz, np wcześniej wymieniony 22.1184Mhz. Miernik potrafi mierzyć częstotliwość do około 47% wartości kwarcu...&quot;<br />Więc pozostaje mi poszukać szybszego zegara lub zrezygnować z dokładności pomiaru.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 10:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-03-02T09:37:32+01:00</updated>
<published>2016-03-02T09:37:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155221#p155221</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155221#p155221"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155221#p155221"><![CDATA[
Witam<br />Możesz m.in wykorzystać wejście liczące: <br /><a href="https://obrazkiforum.atnel.pl/826/9334230e875e1b8b16685630a1db39a4.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/826/9334230e875e1b8b16685630a1db39a4.jpg" alt="Obrazek" /></a><br />...z resztą poczytaj to:<a href="http://mdiy.pl/miernik-czestotliwosci-na-avr-od-1hz-do-10mhz/"  class="postlink">http://mdiy.pl/miernik-czestotliwosci-na-avr-od-1hz-do-10mhz/</a><br />może coś przystosujesz do swoich potrzeb ( chodzi o samą ideę wykorzystania tego licznika )<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 mar 2016, o 09:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T08:54:05+01:00</updated>
<published>2016-03-02T08:54:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155219#p155219</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155219#p155219"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155219#p155219"><![CDATA[
@kicajek - Trafia do mnie Twoje wyjaśnienie.<br />Jednaj co zrobić gdy muszę mierzyć długość impulsu z dokładnością do 1us ? <br />Widziałem przykłady gdzie na zegarze 8Mhz ludzie zliczali co 8 taktów (czyli zabierali 1/8 czau CPU na samo geneowanie pzrerwań) i ponoć działało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 08:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-03-02T08:45:43+01:00</updated>
<published>2016-03-02T08:45:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155217#p155217</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155217#p155217"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155217#p155217"><![CDATA[
Witam<br />W.g mnie za dużo wymagasz od uC.<br />Sprawdź jak będzie się zachowywało dla wartości zmniejszonych np. o 10<br />[syntax=c]OCR1A = 150;<br />...<br />ISR (TIMER1_COMPA_vect)  {<br />        licznik++;<br />        if (licznik==100000)<br />        {<br />                LED2_CHANGE_STATE;<br />                licznik=0;<br />        }<br />       <br />}[/syntax]<br />Zbyt często chcesz wywołać przerwanie i uC nie wydala.<br />Co ile taktów chcesz mieć przerwanie, a ile taktów zajmuje samo przerwanie.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 mar 2016, o 08:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T08:45:47+01:00</updated>
<published>2016-03-02T08:45:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155216#p155216</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155216#p155216"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155216#p155216"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />Nie przeszkadza _delay_ms(100);?<br /></div><br /><br />Raczej nie. No chyba że źle myśle, ale delay w main() nie ma wpływu na zlicznie taktów zegara przez timer.<br />Czy jednak ma ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 08:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2016-03-02T08:40:49+01:00</updated>
<published>2016-03-02T08:40:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155215#p155215</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155215#p155215"/>
<title type="html"><![CDATA[Re: Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155215#p155215"><![CDATA[
Nie przeszkadza _delay_ms(100);?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 2 mar 2016, o 08:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[adamjac65]]></name></author>
<updated>2016-03-02T08:21:12+01:00</updated>
<published>2016-03-02T08:21:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155211#p155211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155211#p155211"/>
<title type="html"><![CDATA[Atmega328p - problem z timerem  1us]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14699&amp;p=155211#p155211"><![CDATA[
Witam wszystkich na forum.<br /><br />Korzystam z Atmega328p z zewnętrznym kwarcem 16MHz, mam problem z ustawieniem timera. Potrzebuję rozdzielczość 1us.<br />Posłyguję się załaczony kodem w Atmel Studio 7. NIestety timer nie wyzwala przerwania tak jak bym się tego spodziewał co 1us, Wszystko dzieje się ok. 5 razy wolniej niż powinno.<br />Co dziwne (jak dla mnie) gdy użyję w liczniku preskalera wówczas 1sek - odstępy czasu uzyskuję precyzyjnie - jednak ja potrzebuje 1us i tu juz jest problem.<br />W załączonym kodzie (dla testu ) próbuję zmieniać stan diody co 1 000 000 przerwań generowanych co 1us - czyli co 1s, jednak dioda zmienia stan co ok 4-5sek  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /> <br />Ustawione fuse bits: FE D9 FF <br />Proszą Was o analizę tego kodu i wskazówki.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />uint32_t licznik=0;<br /><br />#define LED2_DDR DDRD<br />#define LED2_PORT PORTD<br />#define LED2 PD7<br />#define LED2_CHANGE_STATE LED2_PORT^=(1&lt;&lt;LED2)<br /><br />void init_timer1 (void)<br />{<br />// Timer1 w trybie  CTC no prescaling<br />TCCR1B |= (1 &lt;&lt; WGM12)| (1 &lt;&lt; CS10);<br /><br />// Zliczmay 16 - tików zegara 16Mhz - czyli 1us<br />OCR1A = 15;<br /><br /> //Właczenie przerwania dla timer1<br />         TIMSK1 |= (1 &lt;&lt; OCIE1A);   <br /><br />}<br /><br />ISR (TIMER1_COMPA_vect)  {<br />licznik++;<br />if (licznik==1000000)<br />{<br />LED2_CHANGE_STATE;<br />licznik=0;<br />}<br /><br />}<br /><br /><br /><br />int main(void)<br />{<br /><br />init_timer1(); //inicjalizacja timer1<br /><br />sei();  //włącznie obsługi przerwań       <br /><br />while (1)<br />{<br /><br />//tutaj miejsce na wyświetlenie na LCD z zmierzonej wartości<br />_delay_ms(100); <br /><br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13104">adamjac65</a> — 2 mar 2016, o 08:21</p><hr />
]]></content>
</entry>
</feed>