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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-21T23:35:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=16031&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-08-21T23:35:07+01:00</updated>
<published>2016-08-21T23:35:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166727#p166727</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166727#p166727"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166727#p166727"><![CDATA[
witam,<br />Jeżeli jesteś w stanie ustawić timer wystawiający flagę co 1sek.- to proszę.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />[syntax=c]int main(void){<br />uint8_t flag_sek, start_zap=1,start_zgas=0, cz_m, cz_s, przepisz_zmienne=1;<br /> /*********w moim przykladzie jest wyjscie, stan niski na PC2********/<br />    DDRC |=(1&lt;&lt;PC2);<br />    PORTC |=(1&lt;&lt;PC2);<br />#define zgas PORTC |=(1&lt;&lt;PC2)<br />#define zapal PORTC &amp;=~(1&lt;&lt;PC2)<br /><br />/***********funkcje do czasowego zalaczania i rozlaczania*******************/<br /><br />uint8_t wlacz(uint8_t min, uint8_t sek)<br />{<br />zapal;<br /><br />if (przepisz_zmienne) /*jednorazowe zezwolenie na przypisanie wartosci*/<br />{<br />cz_m = min;<br />cz_s = sek;<br />przepisz_zmienne = 0; /*blokada przypisywania*/<br />}<br /><br />if (flag_sek) /*co sekunde*/<br />{<br />if (cz_s) /*jezeli sa sekundy*/<br />{<br />cz_s--;/*odejmuj*/<br />} else<br />if (cz_m) /*jezeli sekundy=0 a sa minuty, to */<br />{<br />cz_m--; /*odejmij minuty*/<br />cz_s = 59;/*sekundy ustaw na 59*/<br />} else /*a jezeli nie ma sekund ani minut, */<br />{<br /><br />start_zgas = 1; /*zezwolenie na wykonywanie funkcji zgas*/<br />start_zap = 0;/*wylacz zezwolenie na wykonywanie funkcji zapal w petli glownej*/<br />przepisz_zmienne = 1;/*zezwol na przypisanie zmiennych*/<br />}<br /><br />flag_sek = 0; /*zeruj co sek */<br />}<br />return cz_m, cz_s; /*zapisz dekrementowane wartosci */<br />}<br /><br />uint8_t wylacz(uint8_t min, uint8_t sek)<br />{<br />zgas;<br /><br />if (przepisz_zmienne) /*jednorazowe zezwolenie na przypisanie wartosci*/<br />{<br />cz_m = min;<br />cz_s = sek;<br />przepisz_zmienne = 0; /*blokada przypisywania*/<br />}<br /><br />if (flag_sek) /*co sekunde*/<br />{<br />if (cz_s) /*jezeli sa sekundy*/<br />{<br />cz_s--;/*odejmuj*/<br />} else<br />if (cz_m) /*jezeli sekundy=0 a sa minuty, to */<br />{<br />cz_m--; /*odejmij minuty*/<br />cz_s = 59;/*sekundy ustaw na 59*/<br />} else /*a jezeli nie ma sekund ani minut, */<br />{<br /><br />start_zap = 1; /*zezwolenie na wykonywanie funkcjizapal w petli glownej*/<br />start_zgas = 0;/*wylacz zezwolenie na wykonywanie funkcji zgas w petli glownej*/<br />przepisz_zmienne = 1;/*zezwol na przypisanie zmiennych*/<br />}<br /><br />flag_sek = 0; /*zeruj co sek */<br />}<br />return cz_m, cz_s; /*zapisz dekrementowane wartosci */<br />}[/syntax]<br />a w pętli głównej można:<br />[syntax=c]if(start_zap)<br />   {<br />    if(adc15sek) wlacz(0,15); /*zero minut,pietnascie sekund swiecenia*/<br />    if(adc3min_30) wlacz(3,30);<br />/*.........cd.........*/<br />/*...................*/<br />   }<br />if(start_zgas)<br />   {<br />    if(adc30sek) wylacz(0,30);<br />    if(adc5m15) wylacz(5,15);<br />    /*.......cd..........*/<br />   }[/syntax]<br />może jeszcze coś w tym stylu do wyłączania i włączania dopisać.<br />[syntax=c]if(adc_stop){start_zap=0;start_zgas=0;} else if((!start_zap) &amp;&amp; (!start_zgas)) start_zap=1;[/syntax]<br /><br />może jakoś tak  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />na pewno są lepsze sposoby, ale taki mi przyszedł do głowy. <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=11549">Daro69</a> — 21 sie 2016, o 23:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2016-08-21T19:51:02+01:00</updated>
<published>2016-08-21T19:51:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166715#p166715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166715#p166715"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166715#p166715"><![CDATA[
jak rtc nie moźe już być a dokładniść co do sek. nie jest istotna to napisz kod bez delay bo on blokuje procek a powolaj do zycia timer ktory ustaw na 1 sek. i w nim odliczaj sekundy-- jak sekundy dojdą do 0 to sprawdz czy minuty == 0 jeżeli tak to zgas swiatlo jezeli nie to minuty-- a sekundy =59 i tak do skutku aż otrzymasz minuty = 0 i sekundy = 0<br /><br />a waryościami adc ustawiaj zmienne minuty sekundy<br /><br />Wysłane z mojego Tab2A7-10F przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 21 sie 2016, o 19:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2016-08-21T19:17:41+01:00</updated>
<published>2016-08-21T19:17:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166712#p166712</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166712#p166712"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166712#p166712"><![CDATA[
Pomysł z timerem liczącym jakiś interwał jak najbardziej ok i teraz zrób sobie tabelę zakresów adc połączoną z odpowiednią wartością dla licznika, który bęczie odliczał Twój zadany czas. Dodatkowo aby zawsze prawidłowo zaczął odliczać zapamiętuj ostanie wartości adc i gdy będzie znacząca zmiana na tym wejściu to zeruj głowną zmienną licznika (tą która zwiększa się co odliczony interwał).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 21 sie 2016, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lancia]]></name></author>
<updated>2016-08-21T17:00:16+01:00</updated>
<published>2016-08-21T17:00:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166691#p166691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166691#p166691"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166691#p166691"><![CDATA[
RTC niestety odpada - cały układ jest już poskładany, na szczęście czas nie musi być dokładny co do sekundy. Jeszcze dodam że wykorzystany uC to atmega88 taktowany 8 MHz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14094">lancia</a> — 21 sie 2016, o 17:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2016-08-21T16:04:43+01:00</updated>
<published>2016-08-21T16:04:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166682#p166682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166682#p166682"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166682#p166682"><![CDATA[
wszystko zależy od tego czy potrzebne tobie jest dokładne 20 cz 30 minut czy różnica kilki / kilkunastu sekund nie robi różnicy.<br /><br />Jeżeli ma być dokładne to najlepiej użyć np rtc i z niego brac dokładną sekundę wtedy pokusić się można o jego tryb alarm. Rozwiązanie czysto programowe też jest dobre ale musisz liczyć się z tym że timer programowy nie jest dokładny i temperatura otoczenia kwarca również wpływa na jego dokładność.<br /><br />Wysłane z mojego Tab2A7-10F przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 21 sie 2016, o 16:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bartek123]]></name></author>
<updated>2016-08-21T15:14:51+01:00</updated>
<published>2016-08-21T15:14:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166679#p166679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166679#p166679"/>
<title type="html"><![CDATA[Re: Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166679#p166679"><![CDATA[
Mam pomysł <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  zrób sobie timer 100hz i zmienną time_ms time_s i time_min i poprostu dodawaj do tych zmiennych <br /><br />jakoś tak to powinno wyglądać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />[syntax=c]time_ms++;<br />if(time_ms == 100)<br />{<br />    time_ms = 0;<br />    time_s++;<br />}<br />if(time_s == 60)<br />{<br />      time_s = 0;<br />     time_min ++;<br />}[/syntax]<br />być może jest tu jakiś błąd, ale to pewnie dasz radę ogarnąć.. To co tu jest powinno być w przerwaniu 100hz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. I w pętli sprawdzaj czy zmienna time_m jest równa ustawiony twój czas jak tak to wyzeruj timer zrób co trzeba i dalej będzie sobie tykać  <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=10617">Bartek123</a> — 21 sie 2016, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lancia]]></name></author>
<updated>2016-08-21T15:02:24+01:00</updated>
<published>2016-08-21T15:02:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166677#p166677</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166677#p166677"/>
<title type="html"><![CDATA[Delay czy timer jak to ugryźć opóźnienia do 30min]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16031&amp;p=166677#p166677"><![CDATA[
Witam, proszę o radę jak podejść do tematu sterowania czasowego żarówką przez przekaźnik. Potrzebuję regulować czas świecenia oraz czas przerwy w świeceniu. Realizowane jest to poprzez dwa przełączniki wieloobrotowe (12 trybów) ze zrobioną drabinką rezystorową na ADC z tą częścią sobie poradziłem (odczyt konkretnych wartości ADC) natomiast nie wiem jak zabrać się za ustawienie czasów jak niżej.<br /><br />1)  0s - sterownik wyłączony<br />2)  15s<br />3)  30s<br />4)  45s<br />5)  1min<br />6)  3min<br />7)  5min<br />8)  10min<br />9)  15min<br />10) 20min<br />11) 25min<br />12) 30min<br /><br />Czy da się w jakiś sposób regulować czasem timera sprzętowego od zadanej wartości ADC lub wartości zmiennej? może ktoś przerabiał podobny temat.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14094">lancia</a> — 21 sie 2016, o 15:02</p><hr />
]]></content>
</entry>
</feed>