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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-19T19:06:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=13270&amp;mode</id>
<entry>
<author><name><![CDATA[mediatek]]></name></author>
<updated>2015-10-19T19:06:30+01:00</updated>
<published>2015-10-19T19:06:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142842#p142842</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142842#p142842"/>
<title type="html"><![CDATA[Re: Wyliczenie wartości TCNT1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142842#p142842"><![CDATA[
<div class="quotetitle">1Yokoon napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">HomoChemicus napisał(a):</div><div class="quotecontent">Mignięcie co 2 sekundy, to 0,5Hz.<br /></div><br /><br />Tak masz rację z rozpędu tak porównałem 1Hz = 1sek.<br />Liczyłem dla 2Hz, myślę, że autor postu przeliczy sobie na 2sek.<br /><br />**2sek 0.5Hz**<br />F_CPU=16000000<br />Presc = 1024<br />TCNT1 = 34286<br /><br />Myślę, że teraz będzie dobrze.</div><br /><br />Dzięki Ci!<br />Jest dobrze. Ja jak to ja lubię wiedzieć skąd co się wzięło (m.in. jakby ktoś tutaj kiedyś zajrzał).<br /><br />Dane:<br />T=2s F_CPU=16MHz=16000000Hz Prescaler=1024<br />F=1/T=1/2s=0,5Hz<br /><br />16000000/1024=15625<br />15625/0,5Hz=31250<br />65536-31250=<strong>34286</strong><br /><br />Ok, a kiedy możemy użyć poniższego wzoru:<br /><strong>Timer Count = Required Delay / Clock Time Period - 1</strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=676">mediatek</a> — 19 paź 2015, o 19:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HomoChemicus]]></name></author>
<updated>2015-10-18T19:00:27+01:00</updated>
<published>2015-10-18T19:00:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142787#p142787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142787#p142787"/>
<title type="html"><![CDATA[Re: Wyliczenie wartości TCNT1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142787#p142787"><![CDATA[
Mignięcie co 2 sekundy, to 0,5Hz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10470">HomoChemicus</a> — 18 paź 2015, o 19:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mediatek]]></name></author>
<updated>2015-10-18T14:43:05+01:00</updated>
<published>2015-10-18T14:43:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142773#p142773</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142773#p142773"/>
<title type="html"><![CDATA[Re: Wyliczenie wartości TCNT1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142773#p142773"><![CDATA[
<div class="quotetitle">1Yokoon napisał(a):</div><div class="quotecontent"><br />Witam.<br />Chcesz otrzymać 2sek = 2Hz<br />2 = 16000000 / 1024 = 15625 / 7812.5<br />TCNT1 = 65536 - 7812.5 = <strong>~57723 </strong>nie odejmujesz 1 to nie jest tryb CTC<br /><br />Lub przy prescalerze 256<br />TCNT = 49911<br /></div><br /><br />Ok, dzięki za odpowiedź. Czyli w tym przykładzie (1 post) wartość <strong>61</strong> jest źle wyliczona i <strong>57723</strong> jest ok? Jak dobrze rozumiem 15625 / 2 =&gt; 7812.5 ponieważ chcę mieć 2 Hz ?<br /><br />Aha, ok... wartość <strong>49911</strong> jest dla przykładu z książki Mirka (F_CPU=8MHz i 1s, prescaler=256 i Timer1).<br /><br />Dzięki za wyjaśnienie. Odejmujemy 1 tylko dla trybu CTC, o ile dobrze zrozumiałem ?<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=676">mediatek</a> — 18 paź 2015, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mediatek]]></name></author>
<updated>2015-10-17T14:56:10+01:00</updated>
<published>2015-10-17T14:56:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142683#p142683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142683#p142683"/>
<title type="html"><![CDATA[Wyliczenie wartości TCNT1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13270&amp;p=142683#p142683"><![CDATA[
Witam,<br /><br />Jest to mój pierwszy post na tym forum, więc proszę o wyrozumiałość i ewentualne przeniesienie postu do innego działu.<br /><br />Nie wiem czy prawidłowo wyliczyłem wartość... Chcę, aby dioda LED migała co 2s, przy częstotliwości 16 MHz. Znalazłem na stronie <a href="http://maxembedded.com/2011/06/avr-timers-timer1/"  class="postlink">http://maxembedded.com/2011/06/avr-timers-timer1/</a> wzór:<br /><br />Timer Count = Required Delay / Clock Time Period - 1<br /><br />Częstotliwość = 16 MHz, 16-bitowy timer (MAX = 65535). Maksymalny delay (65535), a zatem mamy 65535/16000000Hz = 4.09ms<br />Po użyciu preskalera = 8, mamy dalej 65535/2000000Hz = 0,032767 = 32,767ms<br />Z faktu, iż interesuje mnie czas 2s, mamy dalej 2/0,032767 = 61,037 = <strong>61</strong><br /><br />Poniżej kod (ze strony wspomnianej wyżej):<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /> <br />// global variable to count the number of overflows<br />volatile uint8_t tot_overflow;<br /> <br />// initialize timer, interrupt and variable<br />void timer1_init()<br />{<br />    // set up timer with prescaler = 8<br />    TCCR1B |= (1 &lt;&lt; CS11);<br /> <br />    // initialize counter<br />    TCNT1 = 0;<br /> <br />    // enable overflow interrupt<br />    TIMSK |= (1 &lt;&lt; TOIE1);<br /> <br />    // enable global interrupts<br />    sei();<br /> <br />    // initialize overflow counter variable<br />    tot_overflow = 0;<br />}<br /> <br />// TIMER1 overflow interrupt service routine<br />// called whenever TCNT1 overflows<br />ISR(TIMER1_OVF_vect)<br />{<br />    // keep a track of number of overflows<br />    tot_overflow++;<br /> <br />    // check for number of overflows here itself<br />    // 61 overflows = 2 seconds delay (approx.)<br />    if (tot_overflow &gt;= 61) // NOTE: '&gt;=' used instead of '=='<br />    {<br />        PORTC ^= (1 &lt;&lt; 0);  // toggles the led<br />        // no timer reset required here as the timer<br />        // is reset every time it overflows<br /> <br />        tot_overflow = 0;   // reset overflow counter<br />    }<br />}<br /> <br />int main(void)<br />{<br />    // connect led to pin PC0<br />    DDRC |= (1 &lt;&lt; 0);<br /> <br />    // initialize timer<br />    timer1_init();<br /> <br />    // loop forever<br />    while(1)<br />    {<br />        // do nothing<br />        // comparison is done in the ISR itself<br />    }<br />}[/syntax]<br /><br /><br />Moje pytanie tyczy się tego, czy dobrze zrozumiałem autora <a href="http://maxembedded.com/2011/06/avr-timers-timer1/"  class="postlink">http://maxembedded.com/2011/06/avr-timers-timer1/</a> w kwestii obliczenia wymaganych wartości ?<br /><br />Z góry dziękuje za odpowiedzi i przepraszam, ale to 1 post na tym forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #FF0000">Zatem polubownie  proszę zmienić listing zgodnie z zasadami i zaleceniami na forum <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><br />---- SunRiver</span></strong><br /><br /><strong>Już zmieniłem</strong><br /><br /><strong>EDITED:</strong><br /><br />Nawiązując do przykładu z Blue Booka, strona 43.<br /><br />Timer1, 1 sekunda, F_CPU=8MHz<br /><br />Według wzoru:<br /><strong>Timer Count = Required Delay / Clock Time Period - 1</strong><br />i<br /><strong>TimePeriod = 1 / Frequency</strong><br /><br />F = 8000000/256(prescaler) = 31250 Hz<br />T= 1/31250Hz=0,000032s=0,032ms<br /><br />TimerCount = 1000ms/0,032ms -1 = 31250 - 1 = <strong>31249</strong><br /><br />Wpisujemy do TCNT1 wartość <strong>31249</strong>, czy tak jak pisze Mirek 65536-31249=<strong>34287</strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=676">mediatek</a> — 17 paź 2015, o 14:56</p><hr />
]]></content>
</entry>
</feed>