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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-01-23T13:18:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=57&amp;t=20051&amp;mode</id>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-23T13:18:14+01:00</updated>
<published>2018-01-23T13:18:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202504#p202504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202504#p202504"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202504#p202504"><![CDATA[
Jutro będę miał dostęp do generatora i oscyloskopu więc może to mi pomoże w odnalezieniu problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 23 sty 2018, o 13:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-01-23T10:22:22+01:00</updated>
<published>2018-01-23T10:22:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202494#p202494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202494#p202494"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202494#p202494"><![CDATA[
ok to może problemem jest taki mały chochlik opisany tu  <a href="http://atnel.pl/domyslna-promocja-do-typu-int.html"  class="postlink">http://atnel.pl/domyslna-promocja-do-typu-int.html</a><br />Masz wogule jakiś przyrząd którym możesz dokonać pomiaru częstotliwości (poza oczywiście budowanym)?<br />Spróbuj zacząć może od testowania tego na niższych częstotliwościach, a dopiero jak będzie działać ok zwiększać - będzie łatwiej szukać problemu...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 23 sty 2018, o 10:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-23T09:59:05+01:00</updated>
<published>2018-01-23T09:59:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202492#p202492</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202492#p202492"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202492#p202492"><![CDATA[
xentis ja właśnie tak zrobiłem. Na początku if'a wpisałem TCCR0B=0 i TCCR1B=0 a na końcu ustawiłem zgodnie z wcześniejszymi ustawieniami i to nie pomogło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 23 sty 2018, o 09:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-01-23T08:31:13+01:00</updated>
<published>2018-01-23T08:31:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202488#p202488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202488#p202488"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202488#p202488"><![CDATA[
widzisz zerowanie liczników niewiele tu daje ponieważ w czasie wykonywania ifa przerwania nadal działają i nadal owe liczniki zapełniają, a jeśli if się długo (za długo) wykonuje to zauważ że zanim się skończy wykonywać to w pewnym momencie może dojść do takiej sytuacji że zmienna &quot;overflow&quot; międzyczasie przyjmie już wartość powyżej 122 więc if nie zostanie wywołany przez co cały mechanizm &quot;obróci&quot; dwa razy zanim pobierzesz z niego wynik i go znowu wyzerujesz.<br />Co do rozwiązania to na początku tego ifa możesz np zatrzymywać oba liczniki wpisując do ich rejestrów &quot;0&quot; pod parametry CSXX, natomiast pod koniec ifa już po wyzerowaniu wszystkiego ponownie je załączyć do pracy. Wówczas będzie pewność że to co ląduje na wyświetlaczu jest efektem pojedynczego cyklu.<br />Reasumując pomiar będzie wyglądał tak:<br />1 - start pomiaru<br />2 - stop pomiaru po jego dokonaniu<br />3 - obróbka wyniku i jego wyświetlenie<br />Całość będzie się cyklicznie wykonywać od 1 do 3 przy czym czas wykonywania pkt 3 wpływać będzie jedynie na odświeżanie wyniku na wyświetlaczu a nie na sam pomiar.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 23 sty 2018, o 08:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-22T22:27:49+01:00</updated>
<published>2018-01-22T22:27:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202472#p202472</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202472#p202472"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202472#p202472"><![CDATA[
xentis a masz jakąś propozycje jak to zrobić? Ja zrobiłem tak że na początku if'a wyzerowałem wszystkie wykorzystane rejestry liczników i na końcu znowu je ustawiłem ale wyniki pomiarów bez zmian takie same ale nie wiem czy dobrze to robię :/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 22 sty 2018, o 22:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-01-22T21:32:58+01:00</updated>
<published>2018-01-22T21:32:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202464#p202464</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202464#p202464"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202464#p202464"><![CDATA[
<div class="quotetitle">pajmon napisał(a):</div><div class="quotecontent"><br />if'a i wrzuciłem go do while'a.<br /></div> i bardzo dobrze ale...<br />Pytanie czy ten cały if w pętli while wyrabia się w czasie poniżej 1 sekundy (mamy tam operacje na wyświetlaczu +sprint+ wykonywanie pętli jest &quot;siekane&quot; przerwaniami) bo jeśli się nie wyrabia to całość się będzie rozjeżdżać. Musiałbyś po każdym pomiarze zatrzymywać zliczanie wyrzucić wyniki na wyświetlacz i dopiero inicjować kolejny pomiar.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 22 sty 2018, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-22T19:02:36+01:00</updated>
<published>2018-01-22T19:02:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202445#p202445</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202445#p202445"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202445#p202445"><![CDATA[
Jeśli pytasz o częstotliwość taktowania procka to zawsze wył. w mkAVR Calculatorze CKDIV 8. A jeśli pytasz o częstotliwość sygnału PWM to wybrałem prescaler /1 czyli 8Mhz/256/1=31250hz. Chyba że nie o to pytasz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 22 sty 2018, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-01-22T18:53:12+01:00</updated>
<published>2018-01-22T18:53:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202443#p202443</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202443#p202443"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202443#p202443"><![CDATA[
A poprawnie ustawiłeś częstotliwość? Nie masz właczonego jakiegoś podzielnika (jak np /16 lub /2 i /8)?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 22 sty 2018, o 18:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-22T17:32:29+01:00</updated>
<published>2018-01-22T17:32:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202435#p202435</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202435#p202435"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202435#p202435"><![CDATA[
Dziękuje za odpowiedz Panie Mirku. <br />Jeśli chodzi o tego float'a rzeczywiście jest tutaj zbędny. Był wcześniej int i funkcja itoa do konwersji na chary i wróciłem do tego. Idąc za Pańskimi radami wyrzuciłem z przerwania ISR(TIMER0_OVF_vect) if'a i wrzuciłem go do while'a. Niestety wyniki pomiarów są identyczne jak wcześniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 22 sty 2018, o 17:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-01-22T16:41:18+01:00</updated>
<published>2018-01-22T16:41:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202431#p202431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202431#p202431"/>
<title type="html"><![CDATA[Re: Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202431#p202431"><![CDATA[
DIAGNOZA jest prosta jak DRUT, źle napisałeś kod ... <br /><br />wystarczy spojrzeć chociażby na polecenie sprintf wydawane w przerwaniu, że już o TAKIEJ MASAKRZE jak użycie (kompletnie niepotrzebnie) typu float to samobójstwo ... Ja bym powiedział, że twój program poprawnie działa - albo inaczej ... przewidywalnie ... <br /><br />propozycje dla ciebie:<br /><br />1. ZAPOMNIJ że prockach istnieje taki typ zmiennych jak float i uwierz, że bez niego da radę WSZYSTKO zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no może prawie wszystko i to z tym, żebyś miał wyniki zmiennoprzecinkowe<br /><br />2. Obejrzyj sobie ten poradnik:<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />3. i jeszcze te:<br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=_-rNu2pFTJk" >https://www.youtube.com/watch?v=_-rNu2pFTJk</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=meu-XF5sSOY" >https://www.youtube.com/watch?v=meu-XF5sSOY</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=J82_Zop9cjE" >https://www.youtube.com/watch?v=J82_Zop9cjE</a><!-- m --><br /><br />żebyś zrozumiał jak działają przerwania w prockach i dlaczego nie robi się takiej masakry w przerwaniach ...<br /><br />domyślam się po tym kodzie, że przesiadasz się świeżo dopiero z andruino na C i pewnie stąd takie błędy <br /><br />Polecam ci książkę:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />od niej warto zacząć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 sty 2018, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pajmon]]></name></author>
<updated>2018-01-22T16:35:03+01:00</updated>
<published>2018-01-22T16:35:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202427#p202427</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202427#p202427"/>
<title type="html"><![CDATA[Dziwne wyniki pomiaru częstotliwości z uC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20051&amp;p=202427#p202427"><![CDATA[
Cześć.<br />Mój problem wygląda tak że napisałem prosty program aby moja ATmega88 mierzyła częstotliwość. Do testów wygenerowałem sygnał PWM o częstotliwości dokładnie 31250 Hz z innego uC i podałem ten sygnał na mój &quot;miernik częstotliwości&quot;. Wynik wyświetlany na LCD niestety pokazuje błędną wartość 2025. Podając inne częstotliwości zauważyłem taką zależność że wynik zawsze jest mniejszy ok. 15.5 razy od rzeczywistej wartości. Sprawdziłem jeszcze ten sam soft na ATmedze328 i o dziwo wyniki były inne niż na ATmedze88. Dla sygnału PWM o częstotliwości 31250 pomiar wykazał 16023 Hz i w ogóle wyniki dla innych częstotliwości były niecałe 2 razy mniejsze. Z racji że nie jestem ekspertem w tych sprawach spodziewam się że rozwiązanie może być banalne. Dodam jeszcze że oba uC taktowane były tym samym kwarcem. Będę wdzięczny za każdą wskazówkę. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;HD44780.h&quot;<br />#include &lt;stdio.h&gt;<br /><br /><br />volatile uint32_t counter = 0;<br />volatile uint16_t rest=0;<br /><br />volatile uint16_t overflow = 0;<br />volatile float freq = 0;<br /><br />char wynik &#91;11&#93;;<br /><br />int main (void){<br /><br /><br /><br />TCCR0A =0;// TIMER zegar 8 bitow<br />TCCR0B |= (1&lt;&lt;CS02);<br />TIMSK0 |= (1&lt;&lt;TOIE0);<br /><br />TCCR1A = 0;// Timer licznik impulsów<br />TCCR1B |= (1&lt;&lt; CS12) |(1&lt;&lt; CS11);<br />TIMSK1 |= (1&lt;&lt;TOIE1);<br /><br /><br />sei();<br /><br />LCD_Initalize();<br />LCD_Clear();<br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;Pomiar f :&quot;);<br /><br />DDRD  |=~(1&lt;&lt;PD5);<br /><br /><br /><br />while (1){<br /><br />}<br /><br />}<br />ISR(TIMER0_OVF_vect){<br /><br />overflow++;<br />if (overflow==122)<br />{<br /><br />rest=TCNT1;<br />TCNT1=0;<br />freq = counter * 65536;<br />freq =freq + rest;<br /><br />counter = 0;<br />overflow=0;<br /><br />sprintf(wynik,&quot;F=%6.1f &#91;Hz&#93;&quot;,freq);<br />LCD_GoTo(1,1);<br />LCD_WriteText(wynik);<br /><br />}<br /><br /><br />}<br /><br />ISR(TIMER1_OVF_vect)<br />{<br />counter++;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18448">pajmon</a> — 22 sty 2018, o 16:35</p><hr />
]]></content>
</entry>
</feed>