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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-02T22:30:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=12505&amp;mode</id>
<entry>
<author><name><![CDATA[PITERK]]></name></author>
<updated>2015-08-02T22:30:37+01:00</updated>
<published>2015-08-02T22:30:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136190#p136190</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136190#p136190"/>
<title type="html"><![CDATA[Re: ICP - problemy z poprawnym przeliczeniem na ms]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136190#p136190"><![CDATA[
Witaj.<br />Ja jak widzę  że  dostaję  wartości  ujemne to zapala mi się lampka:<br />To chyba przepełnienie.<br /><br /><br /><br />Wysłane z mojego SM-N910F przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2913">PITERK</a> — 2 sie 2015, o 22:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2015-08-02T20:27:10+01:00</updated>
<published>2015-08-02T20:27:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136174#p136174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136174#p136174"/>
<title type="html"><![CDATA[Re: ICP - problemy z poprawnym przeliczeniem na ms]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136174#p136174"><![CDATA[
Chce zliczyć ile cykli zegara jest pomiędzy dwoma zboczami opadającymi w podawanym sygnale, a potem przeliczyc to na ms. Niestety juz na samym poczatku są problemy bo rejestr ICP1 zwraca rozne wartosci, przy tej samej czestotliwosci.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 2 sie 2015, o 20:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2015-08-02T11:55:47+01:00</updated>
<published>2015-08-02T11:55:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136116#p136116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136116#p136116"/>
<title type="html"><![CDATA[ICP - problemy z poprawnym przeliczeniem na ms]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12505&amp;p=136116#p136116"><![CDATA[
Witam, wiem ze takie tematy juz były, czytałem ale niestety dalej nie mogę dojsc do ładu. Chce zliczać czas impulsu generowany przez ne555 (tryb astabilny, rezystory to 1MOhm i kondensator 100nF). Na wyjsciu powinna byc czestotliwosc 4,8 Hz w cyklu pracy 66%. Podłączona diodka miga mniejwiecej w takim tępie.<br />Podłczyłem ICP z wyjsciem NE555. Program przedstawia sie nastepująco:<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 &lt;avr/pgmspace.h&gt;<br />#include &quot;MKUART/mkuart.h&quot;<br /><br />volatile uint32_t icp_prev, icp_now, icp_clock, icp_ms;<br /><br />int main( void ){<br /><br />USART_Init(__UBRR);<br />sei();<br /><br />uart_puts(&quot;Uruchamianie protokolu UART... OK\r\n&quot;);<br /><br />DDRB &amp;= ~(1&lt;&lt;PB0);   // icp jako wejscie<br />PORTB |= (1&lt;&lt;PB0);   // podciagniecie icp do vcc<br /><br />DDRB |= (1&lt;&lt;PB1); //kontrolna LED<br />PORTB |= (1&lt;&lt;PB1); // podciagneicie LED do VCC<br /><br />TCCR1B &amp;= ~(1&lt;ICES1); //wyzwalanie przerwania zboczem opadającym<br />TCCR1B |= (1&lt;&lt;CS11); //preskaler 8<br />TIMSK |= (1&lt;&lt;TICIE1); //zezwolenie na przerwanie od ICP<br /><br />while(1){<br />PORTB ^= (1&lt;&lt;PB1); //dioda kontrolna<br />icp_clock = icp_now - icp_prev; //ilosc cykli procesora<br />icp_ms = icp_clock/(1000000/F_CPU);<br />uart_puts(&quot;Cykle procesora:     &quot;);<br />uart_putint(icp_clock,10);<br />uart_puts(&quot;\r\n&quot;);<br />uart_puts(&quot;Długosc impulsu&#91;ms&#93;: &quot;);<br />uart_putint(icp_ms,10);<br />uart_puts(&quot;\r\n&quot;);<br />uart_puts(&quot;\r\n&quot;);<br />_delay_ms(3000);<br />}<br />}<br /><br />ISR(TIMER1_CAPT_vect){<br />icp_prev = icp_now;<br />icp_now = ICR1;<br />}[/syntax]<br /><br /><br />Uzyskuję takie pomiary:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">Uruchamianie protokolu UART... OK<br />Cykle procesora:     0<br />Długosc impulsu&#91;ms&#93;: -1<br /><br />Cykle procesora:     -23407<br />Długosc impulsu&#91;ms&#93;: -1<br /><br />Cykle procesora:     -24585<br />Długosc impulsu&#91;ms&#93;: -1<br /><br />Cykle procesora:     -24382<br />Długosc impulsu&#91;ms&#93;: -1<br /><br />Cykle procesora:     -23366<br />Długosc impulsu&#91;ms&#93;: -1<br /><br />Cykle procesora:     -24453<br />Długosc impulsu&#91;ms&#93;: -1<br /></div><br /><br />nie wiem dlaczego takie są <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Powinienem uzyskiwać chyba czasy ok. 200 ms<br />W BB oczywiscie jest pokazane jak przeliczac impulsy na us. Niestety wogole nei rozumiem tego makra. Ja myslałem ze czas impulsu zakladając ze mamy 5000 cykli obliczamy tak: 5000*(1/8000000)*8. Ustawiłem preskaler 8 i czestotliwosc 8Mhz. Próbowałem zamieniac (1/8000000) s na liczbe całkowita by poprawnie liczylo ale z koleji żadna zmienna chyba nie pomiesci takiej ogromnej cyfry: (((5000*125)*8)/1000000).<br /><br />Wogole to nawet jak odlacze ICP to  ciagle pokazuje ostatnią wartosc ilosci cykli tak jakby rejest ICP sie nei zerowal<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 2 sie 2015, o 11:55</p><hr />
]]></content>
</entry>
</feed>