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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-25T08:46:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19057&amp;mode</id>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2017-08-25T08:46:14+01:00</updated>
<published>2017-08-25T08:46:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193906#p193906</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193906#p193906"/>
<title type="html"><![CDATA[Re: Zapobieganie przeskokom zmiennej.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193906#p193906"><![CDATA[
A jak sobie poradziłeś?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 25 sie 2017, o 08:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[trimix75]]></name></author>
<updated>2017-08-24T20:47:20+01:00</updated>
<published>2017-08-24T20:47:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193883#p193883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193883#p193883"/>
<title type="html"><![CDATA[Re: Zapobieganie przeskokom zmiennej.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193883#p193883"><![CDATA[
Nie było tematu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Poradziłem sobie &quot;jakoś&quot; <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=4812">trimix75</a> — 24 sie 2017, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[trimix75]]></name></author>
<updated>2017-08-24T19:42:36+01:00</updated>
<published>2017-08-24T19:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193878#p193878</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193878#p193878"/>
<title type="html"><![CDATA[Zapobieganie przeskokom zmiennej.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19057&amp;p=193878#p193878"><![CDATA[
Witam szanownych forumowiczów, mam taki drobny problem na który brakuje mi wyobraźni i może ktoś z Was otworzy mi oczy prostym rozwiązaniem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Co 1s dostaje wartości od 1 do 5, która informuje mnie o tym który przekaźnik należy włączyć, zależy mi na tym, żeby przekaźniki nie trzaskały jak wściekłe tylko miały powiedzmy aktualizację stanu co 20s ale tylko w dół, w górę muszą mieć jak najszybszą reakcję.<br />Wszystko gra dopóki zmiany wartości są stabilne i następują po sobie w jakimś ( dłuższym odstępie czasu ) jeżeli natomiast mam stan &quot;niestabilny&quot; czyli zmieniają się co sekundę wartości np. z 5 na 4 i znowu z 4 na 5 to przekaźniki szaleją.<br /><br />Zrobiłem sobie taki o to kawałek kodu, który mniej więcej robi to o co mi chodzi, czyli opóźnia o xx sekund wysterowanie przekaźnika w dół i o xx sekund wysterowanie przekaźnika w górę (20s i 1s).  <br /><br />w <em>sectionNo</em> dostaje wartość do sterowania, w <em>unitControl.activeSection</em> poprzednią wartość<br />holdTimeUpDelay, holdTimeDnDelay opoźnienie wysterowania przekaźnika<br /><br />[syntax=c]int main(void) {<br /> (reszta kodu)<br /><br />if (millis() &gt; holdTimeDnCnt) {<br />holdValueDn = 0;<br />}<br />if (millis() &gt; holdTimeUpCnt) {<br />holdValueUp = 0;<br />}<br />}<br />uint8_t holdValueUp = 0;<br />uint8_t holdValueDn = 0;<br /><br />volatile uint8_t delayedControl ( uint8_t sectionNo ) {<br />if ( unitControl.activeSection &lt; sectionNo) {<br />if ( holdValueUp == 0 ) {<br />holdValueUp = 1;<br />holdTimeUpCnt = millis() + holdTimeUpDelay;<br />return (turnOnSection ( sectionNo ));<br />}<br />} else if ( unitControl.activeSection == sectionNo) {<br />return 0;<br />} else {<br />if ( holdValueDn == 0 ) {<br />holdValueDn = 1;<br />holdTimeDnCnt = millis() + holdTimeDnDelay;<br />return turnOnSection ( sectionNo );<br />} else {<br />return 0;<br />}<br />}<br />return 0;<br />}[/syntax]<br /><br />Może macie jakieś pomysły jak ograniczyć tak szybkie zmiany stanu przekaźników, zachowując jednocześnie szybki czas reakcji w przypadku otrzymania większej wartości?<br /><br />Chris<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4812">trimix75</a> — 24 sie 2017, o 19:42</p><hr />
]]></content>
</entry>
</feed>