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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-11-20T11:55:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=16853&amp;mode</id>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2016-11-20T11:55:14+01:00</updated>
<published>2016-11-20T11:55:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175217#p175217</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175217#p175217"/>
<title type="html"><![CDATA[Re: STM32F407 timer startuje natychmiastowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175217#p175217"><![CDATA[
Bardzo dziękuję, sprawdziłem pobieżnie i wygląda, że działa. Próbowałem eksperymentowaćz bitem UIF z rejestru SR ale nie przynosił pożądanego efektu. Tzn. przynosił, ale tylko jeśli w pętli głównej był sam if{...}; jeśli tylko dodawałem jakąś funkcję to przestawało to działać.<br /><br />Jeśli znajdę coś jeszcze to podzielę się doświadczeniami, może komuś się przyda.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10260">Arni</a> — 20 lis 2016, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-11-19T23:10:04+01:00</updated>
<published>2016-11-19T23:10:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175204#p175204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175204#p175204"/>
<title type="html"><![CDATA[Re: STM32F407 timer startuje natychmiastowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175204#p175204"><![CDATA[
Witam ponownie.<br />To zostało z &quot;czasów&quot; SPL, bit bit b0, nie mam w tej chwili dostępu do kompa, pewnie poprawnie będzie tak:[syntax=c]TIM3-&gt;SR = ~TIM_SR_UIF;[/syntax]<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 19 lis 2016, o 23:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2016-11-19T21:22:55+01:00</updated>
<published>2016-11-19T21:22:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175195#p175195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175195#p175195"/>
<title type="html"><![CDATA[Re: STM32F407 timer startuje natychmiastowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175195#p175195"><![CDATA[
Niestety czegoś takiego nie mam:<br /><br />[syntax=c]TIM3-&gt;SR = ~TIM_IT_Update;[/syntax]<br /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Szukałem ale ta definicja bitu jest jakaś dziwna.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10260">Arni</a> — 19 lis 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2016-11-19T21:02:13+01:00</updated>
<published>2016-11-19T21:02:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175193#p175193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175193#p175193"/>
<title type="html"><![CDATA[Re: STM32F407 timer startuje natychmiastowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175193#p175193"><![CDATA[
Witam,<br />poniżej masz prawidłową sekwencję inicjalizującą ten timer. Kluczem do sukcesu jest rejestr EGR <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />.[syntax=c]TIM3-&gt;PSC = 16000; //Serial PC Timer<br />    TIM3-&gt;ARR = 10000;<br /><br />    /* Renitialize the counter &amp; generate UG Event */<br />    TIM3-&gt;EGR = TIM_EGR_UG;<br /><br />    /* Set the ARR Preload Bit */<br />    TIM3-&gt;CR1 |= TIM_CR1_ARPE;<br />    /* Clear the IT pending Bit */<br />    TIM3-&gt;SR = ~TIM_IT_Update;<br /><br />   /* Enable the Interrupt sources */<br />    TIM3-&gt;DIER |= TIM_DIER_UIE;<br /><br />   /* Enable the TIM Counter */<br />     TIM3-&gt;CR1 |= TIM_CR1_CEN;<br /><br />    NVIC_EnableIRQ(TIM3_IRQn);<br /><br />   /* Enable the TIM Counter */<br />    TIM3-&gt;CR1 |= TIM_CR1_CEN;[/syntax]<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 19 lis 2016, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Arni]]></name></author>
<updated>2016-11-19T11:50:36+01:00</updated>
<published>2016-11-19T11:50:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175127#p175127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175127#p175127"/>
<title type="html"><![CDATA[STM32F407 timer startuje natychmiastowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16853&amp;p=175127#p175127"><![CDATA[
Witam,<br /><br />mam taką konfiguraację timera3:<br /><br />[syntax=c]TIM3-&gt;PSC = 16000; //Serial PC Timer<br />TIM3-&gt;ARR = 1000;<br />TIM3-&gt;DIER = TIM_DIER_UIE;<br />TIM3-&gt;CR1 &amp;= ~TIM_CR1_CEN; // tak na wszelki wypadek, wyjaśni sięza chwile<br />NVIC_EnableIRQ(TIM3_IRQn);[/syntax]<br /><br />w pętlie głównej while dzieje sięcoś takiego:<br /><br />[syntax=c]while(1) {<br />if (PINCHK(A,IDR0)){<br />TIM3-&gt;CR1 |= TIM_CR1_CEN;<br />}<br />} //while(1)[/syntax]<br /><br />w funkcji obsługi przerwania:<br /><br />[syntax=c]void TIM3_IRQHandler(void){ //PC<br />if (TIM3-&gt;SR &amp; TIM_SR_UIF){<br />TIM3-&gt;SR = ~TIM_SR_UIF;<br />PINSW(D,ODR13); //zmiana stanu diody na przeciwny<br />TIM3-&gt;CR1 &amp;= ~TIM_CR1_CEN;<br />SendStringToPC(&quot;\n\n---Timer3 Interrupt---\n\n&quot;); // funkcja wysyła string przez UART<br />}<br />}[/syntax]<br /><br />Niestety timer zaraz po resecie wskakuje do przerwania. Odkryłem przestawiając różne bity, że odpowiedzialny za to jest TIM3-&gt;DIER = TIM_DIER_UIE; Włączenie przerwań Update Interrupt Enable powoduje natychmiastowe wskoczenie do przerwania.<br />Moim celem jest mieć ustawiony timer i startować go czasem żeby odmierzyć czas. Jeśli timer raz sobie wskoczy do przerwania po inicjalizacji potem działa już sprawnie. Niestety ja chcę nim czasem coś wyzwalać i jak tylko zainiacjalizuję timer mam już to co powinienem wyzwalać po jakimś odstępnie czasu.<br />Próbowałem w różnych miejscach zerować flagę UIF z rejestru SR albo ustawiać bit UIE w różnych miejscach ale nic to nie daje. Jak tylko zresetuję timer mam przerwanie (a czas obliczony na 2 sekundy) a potem już działa ok.<br /><br />Jakieś pomysły?<br /><br />UPDATE: źle się wyraziłem. TImer w tym przypadku wskakuje do przerwania zaraz po pierwszym ustawieniu bitu CEN czyli po pierwszym wciśnięciu przycisku a nie po resecie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10260">Arni</a> — 19 lis 2016, o 11:50</p><hr />
]]></content>
</entry>
</feed>