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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=14385&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-03T22:09:19+01:00</updated>
<published>2016-02-03T22:09:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152587#p152587</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152587#p152587"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152587#p152587"><![CDATA[
<div class="quotetitle">lorddran napisał(a):</div><div class="quotecontent"><br />Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. Ja natomiast chcę by zaraz po pomiarze (który wykonuje się w przerwaniu) odbywało się liczenie nowej wartości dla PWM.<br /></div><br />Dlatego panie kolego proponuję ci zacząć naukę technik programowania np z tej książki:<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 />wtedy zrozumiesz, że to co piszesz<br /><div class="quotetitle">lorddran napisał(a):</div><div class="quotecontent"><br />Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. .<br /></div><br />jest po prostu jakąś totalną niedorzecznością ....<br /><br />Mówię ci warto poznać podstawowe techniki programowania - nawet najprostszy mechanizm flagi o której wspomina wyżej jeden z kolegów.... I szybko przestaniesz mówić, że program gdzieś tam indziej wraca niż ty tego oczekujesz... To ty programujesz i program działa tak jak chce programista - a nie tak jak mu się akurat wyda za stosowne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 lut 2016, o 22:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lorddran]]></name></author>
<updated>2016-02-03T21:06:09+01:00</updated>
<published>2016-02-03T21:06:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152576#p152576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152576#p152576"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152576#p152576"><![CDATA[
Tak, jednak wtedy program wraca do miejsca, w którym był gdy zaczynało się przerwanie, a nie do miejsca w którym rozpoczyna się algorytm regulatora. Ja natomiast chcę by zaraz po pomiarze (który wykonuje się w przerwaniu) odbywało się liczenie nowej wartości dla PWM.<br /><br />Czy jest możliwość, żeby po przerwaniu zacząć realizować pętle główną od wybranego przeze mnie miejsca?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8931">lorddran</a> — 3 lut 2016, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ps19]]></name></author>
<updated>2016-02-03T20:51:55+01:00</updated>
<published>2016-02-03T20:51:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152572#p152572</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152572#p152572"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152572#p152572"><![CDATA[
W przerwaniu możesz zmieniać tylko flagę xor`em i odczytywać ją w pętli while.<br /><br />Np.<br /><br />[syntax=c]ISR(cos){<br />flaga_pid ^= 1;<br />}<br /><br />int main(void) {<br />while(1) {<br />if(flaga_pid) pid_func();<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=230">ps19</a> — 3 lut 2016, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lorddran]]></name></author>
<updated>2016-02-03T20:50:28+01:00</updated>
<published>2016-02-03T20:50:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152571#p152571</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152571#p152571"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152571#p152571"><![CDATA[
Źle się wyraziłem. Prawdą jest, że nie trzeba wykonywać algorytmu regulatora w przerwaniu. W wersji programu gdzie funkcja regulatora jest w pętli głównej, a w przerwaniu tylko pomiar - wszystko działa i ma się świetnie. Jednak chciałbym mieć pewność, że dla każdego pomiaru wyliczona będzie odpowiednia wartość z regulatora. Chcę też, by obliczanie wykonywane było zaraz po wykonaniu pomiaru. Tak więc nie musi, ale jednak &quot;chcę i to bardzo&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8931">lorddran</a> — 3 lut 2016, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-03T20:19:45+01:00</updated>
<published>2016-02-03T20:19:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152568#p152568</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152568#p152568"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152568#p152568"><![CDATA[
<div class="quotetitle">lorddran napisał(a):</div><div class="quotecontent"><br />Dlaczego musi być w przerwaniu? Dlatego, że jest to regulator PI<br /></div><br />No to sobie kolega powód wymyślił - tak jak myślałem ..... Więc jeszcze raz na spokojnie ci powiem - to nie musi być w przerwaniu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 lut 2016, o 20:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lorddran]]></name></author>
<updated>2016-02-03T18:52:33+01:00</updated>
<published>2016-02-03T18:52:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152557#p152557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152557#p152557"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152557#p152557"><![CDATA[
Dlaczego musi być w przerwaniu? Dlatego, że jest to regulator PI i ważne jest dla mnie by obliczenia i wysyłanie wartości dla PWM odbywały się w tym samym czasie. A dlaczego nie można przeskalować? Cóż, albo robię coś źle, albo nie można bo regulator przestaje działać gdy próbuję przemnożyć wszystkie wartości...<br />[syntax=c]//zmienne<br />volatile float tmp = 0;<br />volatile float tmp2 = 0;<br />volatile float tmp3 = 0;<br />struct Struktura4 {<br />float Kp;<br />float prad_zadany;<br />float prad_zmierzony;<br />float ei;<br />float czlon_I;<br />float ei_suma;<br />float reg;<br />float Ti;<br />float Ts;<br />};<br />struct Struktura4 REG;[/syntax]<br />[syntax=c]//ten fragment chciałbym umieścić w przerwaniu<br />if(reg_flag == 1){<br />REG.Kp = 0.1;<br />REG.Ti = 0.001;<br />REG.ei_suma = REG.ei_suma + (REG.Ts * REG.ei);<br />REG.Ts = 0.001;<br />REG.prad_zadany = 0.7;<br />PORTD |= (1&lt;&lt;PD3) | (1&lt;&lt;PD6); // Odblokowanie mostka<br />REG.prad_zmierzony = (-0.014*pomiar1) + 7.154;<br />REG.ei = REG.prad_zadany - REG.prad_zmierzony;<br />REG.reg = REG.Kp * REG.ei;<br />REG.czlon_I = (REG.Kp/REG.Ti) * REG.ei_suma;<br />tmp = (REG.reg + REG.czlon_I);<br />if (tmp &gt; 1)<br />{<br />tmp = 1;<br />PORTD |= (1&lt;&lt;PD2); // obroty w prawo<br />PORTD &amp;= ~(1&lt;&lt;PD7);<br />}<br />if (tmp &lt; 0)<br />{<br />tmp = 0;<br />}<br />OCR1A = tmp * 511;<br />}[/syntax]<br /><br />Wykorzystuje przerwanie TIMER1_OVF_vect do wykonania pomiaru wartości prądu i w tym przerwaniu chciałbym dodać cały algorytm regulatora PI.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8931">lorddran</a> — 3 lut 2016, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KoreX]]></name></author>
<updated>2016-02-03T00:37:21+01:00</updated>
<published>2016-02-03T00:37:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152504#p152504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152504#p152504"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152504#p152504"><![CDATA[
A moze zdarzymy policzyc jakis zmiennyprzecinek w przerwaniu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=229">KoreX</a> — 3 lut 2016, o 00:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2016-02-03T00:02:47+01:00</updated>
<published>2016-02-03T00:02:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152502#p152502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152502#p152502"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152502#p152502"><![CDATA[
Hmmm, też próbuję ogarnąć co to za obliczenia, że nie można ich rozbić na liczby całkowite i robić poza przerwaniem... chętnie zapoznam się z problemem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 3 lut 2016, o 00:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-02T23:22:26+01:00</updated>
<published>2016-02-02T23:22:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152500#p152500</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152500#p152500"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152500#p152500"><![CDATA[
<div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />...a tak z ciekawości - o które linijki kodu jest ta sprzeczka?<br /></div><br />To jest najciekawsze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... bo jak na razie nikt nie wie o jakie linijki kodu chodzi ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lut 2016, o 23:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-02-02T23:12:22+01:00</updated>
<published>2016-02-02T23:12:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152497#p152497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152497#p152497"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152497#p152497"><![CDATA[
<div class="quotetitle">lorddran napisał(a):</div><div class="quotecontent"><br />obliczenia muszą być koniecznie wykonywane w przerwaniu<br /></div><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />A ja ci mówię, że nie muszą być koniecznie w przerwaniu.<br /></div><br />...a tak z ciekawości - o które linijki kodu jest ta sprzeczka?  <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 lut 2016, o 23:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-02T22:33:30+01:00</updated>
<published>2016-02-02T22:33:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152493#p152493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152493#p152493"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152493#p152493"><![CDATA[
A ja ci mówię, że nie muszą być koniecznie w przerwaniu. To że tak mówisz pokazuje tylko jedno - że nie widzisz innych rozwiązań i to jest twój problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lut 2016, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lorddran]]></name></author>
<updated>2016-02-02T22:02:57+01:00</updated>
<published>2016-02-02T22:02:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152490#p152490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152490#p152490"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152490#p152490"><![CDATA[
cóż, niestety obliczenia muszą być koniecznie wykonywane w przerwaniu i niestety przeskalowanie wszystkiego na liczby całkowite też nie zdaje egzaminu...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8931">lorddran</a> — 2 lut 2016, o 22:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-02T20:47:38+01:00</updated>
<published>2016-02-02T20:47:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152482#p152482</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152482#p152482"/>
<title type="html"><![CDATA[Re: Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152482#p152482"><![CDATA[
Tak jest taki trik i bardzo prosty, wystarczy dwa punkty zastosować<br /><br />1. przenieść obliczenia do programu poza przerwania (jeśli już muszą być zmiennoprzecinkowe)<br />2. zastosować obliczenia w oparciu o liczby całkowite - też się da<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 lut 2016, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lorddran]]></name></author>
<updated>2016-02-02T20:18:04+01:00</updated>
<published>2016-02-02T20:18:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152478#p152478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152478#p152478"/>
<title type="html"><![CDATA[Przerwania a wartości ułamkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14385&amp;p=152478#p152478"><![CDATA[
Witam,<br />czy jest jakiś sposób by w przerwaniu wykonać operacje na  zmiennych niecałkowitych? Może jest jakiś trik który to umożliwia?<br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8931">lorddran</a> — 2 lut 2016, o 20:18</p><hr />
]]></content>
</entry>
</feed>