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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-03T20:23:08+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=9328&amp;mode</id>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2014-12-03T20:23:08+01:00</updated>
<published>2014-12-03T20:23:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107271#p107271</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107271#p107271"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107271#p107271"><![CDATA[
Jest już Github Atnela ale nie jest używany.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 3 gru 2014, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-12-03T19:02:41+01:00</updated>
<published>2014-12-03T19:02:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107246#p107246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107246#p107246"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107246#p107246"><![CDATA[
Czy to oddzielny wątek czy github według mnie będzie super.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 3 gru 2014, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pikczu]]></name></author>
<updated>2014-12-03T18:57:01+01:00</updated>
<published>2014-12-03T18:57:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107243#p107243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107243#p107243"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107243#p107243"><![CDATA[
A może byś my tak założyli wątek w którym będziemy umieszczać takie gotowe rozwiązania jak Funkcje i suby jako $include <br />warunek muszą mieć nagłówek:<br />Z autorem, adresem email, wersją, znanymi bugami lub nie itp. <br /><br />Jeśli to jakiś scalak to dodatkow link do PDF-a <br />I koniecznie komentarze w języku angielskim.<br />Co wy na to ??<br /><br />Paweł<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Chyba że zrobimy githuba ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=154">pikczu</a> — 3 gru 2014, o 18:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-03T11:30:07+01:00</updated>
<published>2014-12-03T11:30:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107165#p107165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107165#p107165"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107165#p107165"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Drugie bo nie rezerwuje RAM`u dla wszystkich dni<br /></div><br />Słuszna uwaga! - przeoczyłem, bo i tak moim ulubionym sposobem były linie data i lookup toteż nie zwróciłem w tym wypadku uwagi na ram.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 3 gru 2014, o 11:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-12-03T11:32:40+01:00</updated>
<published>2014-12-03T11:28:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107164#p107164</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107164#p107164"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107164#p107164"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Drugie bo nie rezerwuje RAM`u dla wszystkich dni. I jedno i drugie musi zapisać we Flash bo do tego RAM`u też musi to skądś wziąć. Nie buduje się dużych tablic w pamięci.<br /></div><br />Więc zastosuje to drugie rozwiązanie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Zrób test, który kod mniej zajmuje i wszystko będzie jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jak mam wątpliwości to tak robię.<br /></div><br />Akurat jedno i drugie rozwiązanie zajmuje u mnie tyle samo pamieci  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Miłego dnia.<br /></div><br />Również życzę miłego dnia <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=5834">pimowo</a> — 3 gru 2014, o 11:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-12-03T11:22:14+01:00</updated>
<published>2014-12-03T11:22:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107162#p107162</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107162#p107162"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107162#p107162"><![CDATA[
Zrób test, który kod mniej zajmuje i wszystko będzie jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jak mam wątpliwości to tak robię.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 3 gru 2014, o 11:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-12-03T11:10:24+01:00</updated>
<published>2014-12-03T11:10:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107160#p107160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107160#p107160"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107160#p107160"><![CDATA[
Tak sobie jeszcze dumam...<br />Które rozwiązanie wyświetlania dnia tygodnia jest lepsze/mądrzejsze?<br />1.<br />[syntax=basic4gl]Dim Nazwa_dnia(7) As String * 12<br /><br />Nazwa_dnia(1) = &quot;poniedzialek&quot;<br />Nazwa_dnia(2) = &quot;   wtorek   &quot;<br />Nazwa_dnia(3) = &quot;   sroda    &quot;<br />Nazwa_dnia(4) = &quot;  czwartek  &quot;<br />Nazwa_dnia(5) = &quot;   piatek   &quot;<br />Nazwa_dnia(6) = &quot;   sobota   &quot;<br />Nazwa_dnia(7) = &quot; niedziela  &quot;<br /><br />Do<br />Loop<br /><br />Zegar:<br />(...)<br />  Locate 4 , 1<br />    Lcd Nazwa_dnia(dzien_tygodnia)<br /><br /><br />Return[/syntax]<br />2.<br />[syntax=basic4gl]Zegar:<br />(...)<br />  locate 4 , 1<br />    Lcd Lookupstr(dzien_tygodnia , Nazwa_dnia)<br /><br />Return<br /><br />Nazwa_dnia:<br /><br />Data &quot;poniedzialek&quot;<br />Data &quot;   wtorek   &quot;<br />Data &quot;   sroda    &quot;<br />Data &quot;  czwartek  &quot;<br />Data &quot;   piatek   &quot;<br />Data &quot;   sobota   &quot;<br />Data &quot; niedziela  &quot;[/syntax]<br />Jedno i drugie oczywiście działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 3 gru 2014, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-12-02T23:42:33+01:00</updated>
<published>2014-12-02T23:42:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107097#p107097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107097#p107097"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107097#p107097"><![CDATA[
Kolego @Niveasoft, WIELKI szacun za cierpliwość do takiej marudy jak ja <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=5834">pimowo</a> — 2 gru 2014, o 23:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-12-02T22:41:32+01:00</updated>
<published>2014-12-02T22:41:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107076#p107076</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107076#p107076"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=107076#p107076"><![CDATA[
Już mam mętlik w głowie z tym sterowaniem...<br />[syntax=basic4gl]Dim Odczyt(2) As Byte , T As Integer , T1 As Single , H As Byte , Wynik As String * 5<br />Dim Piec_flaga As Bit , Tryb_pieca As Byte , Termostat As Byte<br /><br />Temperatura:<br /><br />  1wreset<br />  1wwrite &amp;HCC<br />  1wwrite &amp;HBE<br />    Odczyt(1) = 1wread(2)<br />    T = Odczyt(2)<br />    Shift T , Left , 8<br />    T = T + Odczyt(1)<br />    T1 = T * 0.0625<br />    H = T1<br />    Wynik = Fusing(t1 , &quot;#.#&quot;)<br /><br />  Locate 4 , 14<br />    Lcd Chr(124) ; Wynik ; Chr(223) ; &quot;C&quot;<br /><br />  Locate 2 , 16<br />    If Piec_flaga = 1 Then<br />      Lcd &quot;zal.&quot;<br />      Termostat = 21<br />    Else<br />      Lcd &quot;wyl.&quot;<br />      Termostat = 18<br />    End If<br /><br />  Locate 3 , 15<br />    If H &lt; Termostat Then<br />      Set Piec<br />      Lcd &quot; **** &quot;<br />    End If<br /><br />    If H &gt; Termostat Then<br />      Reset Piec<br />      Lcd Spc(6)<br />    End If<br /><br />'tu DS przygotowuje nowy odczyt<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;H44<br /><br />Return[/syntax]<br />Teraz, gdy piec_flaga=1 czyli piec włączony to:<br />-osiąga temperaturę 22st przekaźnik się wyłącza<br />-przy  temperaturze 20.9st przekaźnik się włącza<br />Czyli (teoretycznie) jest OK.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 2 gru 2014, o 22:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-12-02T13:00:56+01:00</updated>
<published>2014-12-02T13:00:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106994#p106994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106994#p106994"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106994#p106994"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />To nieskomplikowane<br /></div><br />Ja mam zawsze pod górkę <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Nie mogłem sobie poradzić z dodawaniem, odejmowaniem danych itp. <br />Zrobiłem coś takiego:<br />[syntax=basic4gl]Temperatura:<br /><br />'tu czytasz temperature<br />  1wreset<br />  1wwrite &amp;HCC<br />  1wwrite &amp;HBE<br />    Odczyt(1) = 1wread(2)<br />    T = Odczyt(2)<br />    Shift T , Left , 8<br />    T = T + Odczyt(1)<br />    T1 = T * 0.0625<br />  Wynik = Fusing(t1 , &quot;#.#&quot;)<br /><br />  Locate 2 , 16<br />    If Piec_flaga = 1 Then<br />      Lcd &quot;zal.&quot;<br />      Termostat1 = &quot;21&quot;<br />      Termostat2 = &quot;22&quot;<br />    Else<br />      Lcd &quot;wyl.&quot;<br />      Termostat1 = &quot;18&quot;<br />      Termostat2 = &quot;19&quot;<br />    End If<br /><br />  Locate 3 , 15<br />    If Wynik &lt;= Termostat1 Then<br />      Set Piec<br />      Lcd &quot; **** &quot;<br />    End If<br /><br />    If Wynik &gt;= Termostat2 Then<br />      Reset Piec<br />      Lcd Spc(6)<br />    End If<br /><br />  Locate 4 , 14<br />    Lcd Chr(124) ; Wynik ; Chr(223) ; &quot;C&quot;<br /><br />'tu DS przygotowuje nowy odczyt<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;H44<br /><br />Return[/syntax]<br />Pewnie to będzie nie tak, ale tylko coś takiego udało mi się tylko wymyślić, że zadziałało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 2 gru 2014, o 13:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-30T18:29:17+01:00</updated>
<published>2014-11-30T18:29:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106808#p106808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106808#p106808"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106808#p106808"><![CDATA[
Panowie, podłączyłem swój moduło-pająko-układ pod piec i pojawił się problem dokładności. Moduł jest za bardzo dokładny-piec co chwila się włącza i przekaźnik głupieje przy temperaturze zadanej 21.0, a 20.9 stopnia. Przez chwilę jak temperatura się &quot;stabilizuje&quot; to przekaźnik mi się włącza i wyłącza <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Czy dobrze myślę, że przydałaby się jakaś histereza czy coś?<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zaczynałem C kilka razy bez powodzenia, ale dopiero Mirka książka pozwoliła mi bezboleśnie przejść granicę...<br /></div><br />Właśnie zbieram pieniążki na tę książkę i jak zakupię to w tedy mam zamiar przysiąść do C.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Ja tylko mam jedną uwagę odnośnie schematu. Z tego co pamiętam i chyba w nocie układu DS1307 też napisane że wyjście SQW (pin 7) też należy podciągnąć do +5V za pomocą rezystora 4k7.<br /></div><br />Dzięki. Rezystor dodany. Już gdzieś o tym czytałem, ale całkowicie o nim zapomniałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 30 lis 2014, o 18:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-11-30T13:34:57+01:00</updated>
<published>2014-11-30T13:34:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106737#p106737</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106737#p106737"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106737#p106737"><![CDATA[
Ja tylko mam jedną uwagę odnośnie schematu. Z tego co pamiętam i chyba w nocie układu DS1307 też napisane że wyjście SQW (pin 7) też należy podciągnąć do +5V za pomocą rezystora 4k7.<br />Nawet na mojej płytce z PROPOXU pin 7 jest podciągnięty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 30 lis 2014, o 13:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-30T13:31:55+01:00</updated>
<published>2014-11-30T13:31:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106736#p106736</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106736#p106736"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106736#p106736"><![CDATA[
Żadna tam wojna <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Po prostu przychodzi taki czas, że zaczyna czegoś brakować w bascomie, a to zazwyczaj dlatego, że <strong>poważnie myślimy o programowaniu</strong> i wtedy zamiast tracić czas na szukanie protez lepiej od razu zainteresować się C <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jak przeglądniecie moje projekty na elektrodzie to niemal w każdym gdzie padało pytanie dlaczego bascom a nie C , to wszędzie stanowczo odpowiadałem, że mi to wystarczy... Wystarczało do czasu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Zaczynałem C kilka razy bez powodzenia, ale dopiero Mirka książka pozwoliła mi bezboleśnie przejść granicę... <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> — 30 lis 2014, o 13:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-30T13:19:28+01:00</updated>
<published>2014-11-30T13:19:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106731#p106731</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106731#p106731"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106731#p106731"><![CDATA[
A myślałem, że chociaż raz nie będzie wojny BASCOM vs C <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Pisząc wcześniej swoją wypowiedź miałem namyśli tylko to, że w większości ludzie piszą (różne fora)  BASCOM jest be, C jest super. Zamiast porozmawiać na temat problemu/projektu, to zawsze się kończy to wojną-podobnie jak Windows vs Linux... <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Ja już zostałem całkowicie przekonany, że warto się zainteresować C-teraz tylko kwestia czasu i będę go poznawał.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 30 lis 2014, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-30T13:00:18+01:00</updated>
<published>2014-11-30T13:00:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106727#p106727</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106727#p106727"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106727#p106727"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Negowanie Bascom w miejscu gdzie ktoś pisząc w nim program prosi o pomoc uważam za niemerytoryczne i pozbawione taktu. I domyślam się czym jest podyktowane, ale to przemilczę.<br /></div><br />Czy to do mnie ?? Jeśli tak to ktoś tu chyba nie zrozumiał mojej wypowiedzi <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=1922">SylwekK</a> — 30 lis 2014, o 13:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-30T12:10:24+01:00</updated>
<published>2014-11-30T12:10:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106718#p106718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106718#p106718"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106718#p106718"><![CDATA[
No projekcik nabrał rumieńców i całkiem zgrabnie wygląda <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br /><div class="quotetitle">pimowo napisał(a):</div><div class="quotecontent"><br />Widziałem tego konia już wcześniej i od razu sobie pomyślałem o ludziach którzy cały czas negują BASCOM'a, że BASCOM jest be i nic ciekawego w nim nie da się zrobić.<br /></div><br /><br />Ech, musiałem to zacytować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Kiedyś pisałem dokładnie to co Ty teraz chociaż nadal twierdzę, że w bascomie da się naprawdę skomplikowane projekty zrobić, bo sam kilka dość poważnych zdziałałem. Jednak gdy teraz zacząłem praktykować z C, dopiero mi się oczy otworzyły o ile prościej (mimo częstego braku gotowych instrukcji!) da się rozwiązać pewne problemy i połączyć funkcjonalność wielu bloków, aby sobie wzajemnie nie przeszkadzały, a o wydajności już nie wspomnę. Przykładowo gdy przerobiłem sobie bibliotekę od LCD na buforowaną, mogę bez najmniejszych przeszkód wykonywać dość skomplikowane obliczenia w pętli głównej z jednoczesnym ich natychmiastowym wyświetleniem na ekranie nie spowalniając tych obliczeń (ich blokowanie przez zwykłe wyświetlanie spowodowało, by w moim przypadku baaaardzo rwany ruch silnikiem, który dyskwalifikuje takie rozwiązanie) - w bascomie efekt niestety nie do zrealizowania. Wiele by pisać na ten temat, dlatego jeśli jeszcze nie przesiąkłeś do końca bascomem polecam zainteresować się C, bo czym później to nastąpi tym ciężej się przestawić (wiem z autopsji).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 30 lis 2014, o 12:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-30T10:18:11+01:00</updated>
<published>2014-11-30T10:18:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106698#p106698</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106698#p106698"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106698#p106698"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Przy wyjściu z menu po CLS spróbuj dopisac &quot;Flaga_1s = 10&quot; zeby nie czekac sekundy.<br /></div><br />Oczywiście działa. Po wyjściu z ustawień natychmiast mam &quot;ekran główny&quot;<br />Całe to menu ustawień to w sumie i tak nie będzie zbyt często używane, bo ile razy ustawiamy czas/datę? ale działa jak należy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Zapomnialem pochwalić że naprawde ładne cacko<br /></div><br />Dziękuję, ale to tak naprawdę w dużej mierze Twoja zasługa-podsuwasz takie ciekawe pomysły, kody, że moje szare komórki, aż się gotują <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Koń biegnie po wyświetlaczu<br /></div><br />Widziałem tego konia już wcześniej i od razu sobie pomyślałem o ludziach którzy cały czas negują BASCOM'a, że BASCOM jest be i nic ciekawego w nim nie da się zrobić.<br /><div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Wymaga to trochę pomyślunku jeśli chodzi o wspólne wyświetlanie dużych cyfr i ogonków ale nie jest nie do zrobienia.<br /></div><br />Nad tym muszę jeszcze pomyśleć, ponieważ troszkę brakuje mi naszych polskich ogonków.<br /><br />Możesz mi jeszcze powiedzieć co sądzisz o schemacie jaki &quot;namalowałem&quot;?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 30 lis 2014, o 10:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-29T22:19:33+01:00</updated>
<published>2014-11-29T22:19:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106649#p106649</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106649#p106649"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=106649#p106649"><![CDATA[
Posiedziałem troszkę nad swoim sterownikiem i mam jeszcze mały problem z kodem. <br />Na moje (nie)szczęście na stronie Kolegi @Niveasoft znalazłem sposób na wyświetlanie dużych cyfr na wyświetlaczu. Postanowiłem u siebie wyświetlać zegar w dużych cyfrach. <br /><a href="http://forum.atnel.pl/_obrazki/o/5834/286279dfc43fd2137282a93bb80a8444.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5834/286279dfc43fd2137282a93bb80a8444.jpg" alt="Obrazek" /></a><br />Wszystko działa, ale jak wejdę w &quot;menu&quot; ustawień czasu/daty, wszystko sobie ustawie (tu jest OK) ale gdy chcę wyjść to dłuższą chwilę mam czysty LCD i dopiero później wszystko wraca do normy. Co robię nie tak? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />[syntax=basic4gl]$regfile = &quot;m32def.dat&quot;<br />$crystal = 11059200<br />$baud = 115200<br />$hwstack = 128<br />$swstack = 64<br />$framesize = 64<br /><br />Config Lcd = 20 * 4<br />Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7<br /><br />Config Porta = Input<br />Porta = &amp;B11111111<br />Config Portb = Output<br />Portb = &amp;B00000000<br />Outputs Alias Portb<br /><br />Config Print0 = Portd.3 , Mode = Set<br />Config Portd.3 = Output<br />Config Portd.4 = Output : Portd.4 = 0 : Piec Alias Portd.4<br />Config Portd.5 = Output : Portd.5 = 0 : Led Alias Portd.5<br />Config Portd.6 = Output : Portd.6 = 1 : Led_buzzer Alias Portd.6<br /><br />Config Timer2 = Timer , Prescale = 256 , Compare = Disconnect , Clear Timer = 1<br />Enable Compare2 : On Compare2 Timer2_isr : Compare2 = 215<br /><br />On Urxc Przerwanie_od_rxd<br />On Int0 Rc5<br />Config Int0 = Falling<br /><br />Declare Sub Czekaj<br />Declare Sub Set_clock(byval Numer_b As Byte , Byval Wartosc As Byte)<br /><br />Dim Sekunda As Byte , Minuta As Byte , Godzina As Byte<br />Dim Dzien_tygodnia As Byte , Nazwa_dnia(7) As String * 12<br />Dim Dzien As Byte , Miesiac As Byte , Rok As Byte<br />Dim Flaga_5ms As Byte , Flaga_100ms As Byte , Minelo_400ms As Byte , Flaga_1s As Byte , Timerek As Byte , Timerek2 As Byte<br />Dim Odczyt(2) As Byte , T As Integer , T1 As Single , Wynik As String * 5<br />Dim Piec_flaga As Bit , Termostat As String * 5<br />Dim Adress As Byte , Kod As Byte , Odebrany_kod As Bit<br />Dim Bufor(10) As Byte , Dana As Byte , A As Byte , B As Byte , C As Byte<br />Dim Opoznienie As Byte , Adres As Byte , Karta As Byte , Urzadzenie As Byte , Stan As Byte<br />Dim Pik As Byte<br />Dim Pk As Byte , N As Byte<br />Dim Tryb As Byte , Index As Byte<br />Dim Przyciski_port As Byte , Wyjscia_port As Byte , Bufor_port As Byte<br />Dim Mig As Bit , Temp_b As Byte , Offset As Byte , Flaga_grzanie As Byte<br />Dim Pierwsza As Byte , Druga As Byte , Trzecia As Byte , Czwarta As Byte<br />Dim Linia_g(10) As String * 3 , Linia_d(10) As String * 3<br />Dim Flaga_big_zegar As Bit<br /><br />Nazwa_dnia(1) = &quot;poniedzialek&quot;<br />Nazwa_dnia(2) = &quot;   wtorek   &quot;<br />Nazwa_dnia(3) = &quot;   sroda    &quot;<br />Nazwa_dnia(4) = &quot;  czwartek  &quot;<br />Nazwa_dnia(5) = &quot;   piatek   &quot;<br />Nazwa_dnia(6) = &quot;   sobota   &quot;<br />Nazwa_dnia(7) = &quot; niedziela  &quot;<br /><br />'--- deklaracja znakow<br />Deflcdchar 0 , 32 , 32 , 4 , 14 , 14 , 4 , 32 , 32          ' dwukropek<br />Deflcdchar 1 , 28 , 24 , 32 , 32 , 32 , 32 , 24 , 28        ' prawy naroznik<br />Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' gorna kreseczka<br />Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31        ' dolna kreseczka<br />Deflcdchar 4 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31        ' dwie kreseczki<br />Deflcdchar 5 , 28 , 30 , 30 , 30 , 30 , 30 , 30 , 28        ' prawa belka<br />Deflcdchar 6 , 7 , 15 , 15 , 15 , 15 , 15 , 15 , 7          ' lewa belka<br />Deflcdchar 7 , 7 , 3 , 32 , 32 , 32 , 32 , 3 , 7            ' lewy naroznik<br /><br /><br />'--- tablica na duze cyfry<br />'Cyfra 0<br />Linia_g(10) = Chr(6) + Chr(2) + Chr(5)<br />Linia_d(10) = Chr(6) + Chr(3) + Chr(5)<br /><br />'Cyfra 1<br />Linia_g(1) = &quot; &quot; + Chr(5) + &quot; &quot;<br />Linia_d(1) = &quot; &quot; + Chr(5) + &quot; &quot;<br /><br />'Cyfra 2<br />Linia_g(2) = Chr(7) + Chr(4) + Chr(5)<br />Linia_d(2) = Chr(6) + Chr(3) + Chr(3)<br /><br />'Cyfra 3<br />Linia_g(3) = Chr(2) + Chr(4) + Chr(5)<br />Linia_d(3) = Chr(3) + Chr(3) + Chr(5)<br /><br />'Cyfra 4<br />Linia_g(4) = Chr(6) + Chr(3) + Chr(5)<br />Linia_d(4) = &quot;  &quot; + Chr(5)<br /><br />'Cyfra 5<br />Linia_g(5) = Chr(6) + Chr(4) + Chr(1)<br />Linia_d(5) = Chr(3) + Chr(3) + Chr(5)<br /><br />'Cyfra 6<br />Linia_g(6) = Chr(6) + Chr(4) + Chr(1)<br />Linia_d(6) = Chr(6) + Chr(3) + Chr(5)<br /><br />'Cyfra 7<br />Linia_g(7) = Chr(6) + Chr(2) + Chr(5)<br />Linia_d(7) = &quot;  &quot; + Chr(5)<br /><br />'Cyfra 8<br />Linia_g(8) = Chr(6) + Chr(4) + Chr(5)<br />Linia_d(8) = Chr(6) + Chr(3) + Chr(5)<br /><br />'Cyfra 9<br />Linia_g(9) = Chr(6) + Chr(4) + Chr(5)<br />Linia_d(9) = Chr(3) + Chr(3) + Chr(5)<br /><br />Config Rc5 = Pind.2 , Wait = 2000<br /><br />Config Sda = Portc.1<br />Config Scl = Portc.0<br />Const Ds1307w = 208<br />Const Ds1307r = 209<br /><br />Config 1wire = Portd.7<br /> 1wreset<br /> 1wwrite &amp;HCC<br /> 1wwrite &amp;H44<br /><br />Adres = 01<br />A = 1<br />Piec_flaga = 0<br />Flaga_big_zegar = 1<br /><br />Cursor Off<br />Cls<br /><br />Lcd &quot;jakies powitanie      bla,bla,bla...&quot;<br /><br />Call Czekaj<br />  Print &quot;Karta nr: &quot; ; Adres<br />Wait 3<br />Cls<br /><br />Enable Interrupts<br />Enable Urxc<br />Enable Int0<br /><br />'*** START ***<br />Do<br /><br /><br />'---<br />If Odebrany_kod = 1 Then<br />  If Adress = 0 Then<br /><br />    Select Case Tryb<br /><br />      Case 0<br />         N = Kod - 1<br />        Select Case Kod<br />          Case 1 To 8<br />           Toggle Outputs.n<br /><br />          Case 9 : Toggle Piec_flaga<br /><br />          Case 13 : Gosub Wczytaj_dane<br />                      Tryb = 1<br /><br />          Case 32 : Print &quot;S0610&quot;<br /><br />          Case 33 : Print &quot;S0611&quot;<br />        End Select<br />          Pik = 2<br /><br />      Case 1<br />        If Kod = 13 Then<br />        Gosub Wczytaj_dane<br />          Incr Index<br />            If Index = 7 Then<br />              Index = 0<br />              Flaga_big_zegar = 1<br />              Tryb = 0<br />              Cls<br />            End If<br />          End If<br /><br />        If Kod = 16 Then<br />          Select Case Index<br />            Case 0<br />              Incr Godzina<br />                If Godzina &gt; 23 Then Godzina = 1<br />                Call Set_clock(2 , Godzina)<br />            Case 1<br />              Incr Minuta<br />                If Minuta &gt; 59 Then Minuta = 0<br />                Call Set_clock(1 , Minuta)<br />            Case 2<br />              Incr Sekunda<br />                If Sekunda &gt; 59 Then Sekunda = 0<br />                Call Set_clock(0 , Sekunda)<br />            Case 3<br />              Incr Dzien<br />                If Dzien &gt; 31 Then Dzien = 1<br />                Call Set_clock(4 , Dzien)<br />            Case 4<br />              Incr Miesiac<br />                If Miesiac &gt; 12 Then Miesiac = 1<br />                Call Set_clock(5 , Miesiac)<br />            Case 5<br />              Incr Rok<br />                If Rok &gt; 99 Then Rok = 00<br />                Call Set_clock(6 , Rok)<br />            Case 6<br />              Incr Dzien_tygodnia<br />                If Dzien_tygodnia &gt; 7 Then Dzien_tygodnia = 1<br />                Call Set_clock(3 , Dzien_tygodnia)<br />          End Select<br />        End If<br /><br />        If Kod = 17 Then<br />          Select Case Index<br />            Case 0<br />              Decr Godzina<br />                If Godzina &gt; 23 Then Godzina = 1<br />                Call Set_clock(2 , Godzina)<br />            Case 1<br />              Decr Minuta<br />                If Minuta &gt; 59 Then Minuta = 0<br />                Call Set_clock(1 , Minuta)<br />            Case 2<br />              Decr Sekunda<br />                If Sekunda &gt; 59 Then Sekunda = 0<br />                Call Set_clock(0 , Sekunda)<br />            Case 3<br />              Decr Dzien<br />                If Dzien &gt; 31 Then Dzien = 1<br />                Call Set_clock(4 , Dzien)<br />            Case 4<br />              Decr Miesiac<br />                If Miesiac &gt; 12 Then Miesiac = 1<br />                Call Set_clock(5 , Miesiac)<br />            Case 5<br />              Decr Rok<br />                If Rok &gt; 99 Then Rok = 00<br />                Call Set_clock(6 , Rok)<br />            Case 6<br />              Decr Dzien_tygodnia<br />                If Dzien_tygodnia &gt; 7 Then Dzien_tygodnia = 1<br />                Call Set_clock(3 , Dzien_tygodnia)<br />          End Select<br />        End If<br /><br />    End Select<br />  End If<br />    Odebrany_kod = 0<br />  End If<br />'---<br /><br />'--- co 5ms<br />  If Flaga_5ms = 1 Then<br />    Flaga_5ms = 0<br />      Incr Timerek<br />      Incr Timerek2<br />      Gosub Przyciski<br />    If Timerek = 20 Then<br />      Timerek = 0<br />        Flaga_100ms = 1<br />      End If<br />    If Timerek2 = 80 Then<br />      Timerek2 = 0<br />        Minelo_400ms = 1<br />      End If<br />  End If<br />'---<br /><br />'---<br />  If Minelo_400ms = 1 Then<br />    Minelo_400ms = 0<br />    If Tryb = 1 Then Gosub Miganie<br />  End If<br />'---<br /><br />'--- pikanie<br />  If Flaga_100ms = 1 Then<br />    Flaga_100ms = 0<br />      Incr Flaga_1s<br />    If Pik &gt; 0 Then<br />      Decr Pik<br />      Toggle Led_buzzer<br />      Set Led<br />    Else<br />      Reset Led<br />    End If<br />  End If<br />'--- koniec pikania<br /><br />'--- co sekunde<br />  If Flaga_1s = 10 Then<br />  If Flaga_big_zegar = 1 Then<br />    Flaga_1s = 0<br />      Gosub Temperatura<br />      Gosub Zegarek<br />      Gosub Miganie_dwukropek<br />    End If<br />  End If<br />'---<br /><br />Loop<br />'*** KONIEC ***<br />End<br />'---<br /><br />'---<br />Sub Czekaj<br /><br />  For Opoznienie = 1 To Adres<br />    Waitms 100<br />      Next Opoznienie<br />    End Sub<br />'---<br /><br />'---<br />'*** obsluga DS18B20 ***<br />Temperatura:<br /><br />'--- tu czytasz temperature<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;HBE<br />      Odczyt(1) = 1wread(2)<br />      T = Odczyt(2)<br />    Shift T , Left , 8<br />      T = T + Odczyt(1)<br />      T1 = T * 0.0625<br /><br />    Wynik = Fusing(t1 , &quot;#.#&quot;)<br />    Locate 4 , 14<br />    Lcd Chr(124) ; Wynik ; Chr(223) ; &quot;C&quot;<br /><br />'--- sterowanie piecem<br />  Locate 2 , 16<br /><br />    If Piec_flaga = 1 Then<br />      Lcd &quot;zal.&quot;<br />      Termostat = &quot;23&quot;<br />    Else<br />      Lcd &quot;wyl.&quot;<br />      Termostat = &quot;19&quot;<br />    End If<br /><br />  Locate 3 , 15<br /><br />    If Wynik &lt; Termostat Then<br />      Set Piec<br />      Flaga_grzanie = 1<br />      Lcd &quot; **** &quot;<br />    Else<br />      Reset Piec<br />      Flaga_grzanie = 0<br />      Lcd Spc(6)<br />    End If<br /><br />'--- tu kazesz DS`owi przygotowaa nowy odczyt<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;H44<br /><br />Return<br />'---<br /><br />'---<br />Timer2_isr:<br /><br />  Flaga_5ms = 1<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga pilota ***<br />Rc5:<br /><br />  Disable Int0<br />    Gifr.intf0 = 1<br />      Enable Interrupts<br /><br />  Getrc5(adress , Kod)<br />    Kod = Kod And &amp;B01111111<br />      Odebrany_kod = 1<br /><br />  Disable Interrupts<br />    Enable Int0<br />      Gifr.intf0 = 1<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga RS485 ***<br />Przerwanie_od_rxd:<br /><br />  Inputbin Dana<br />    Bufor(a) = Dana<br />      Incr A<br /><br />    If A = 6 Then<br />      If Bufor(1) = 83 Then<br /><br />        Karta = Bufor(2) - 48<br />        Karta = Karta * 10<br />        Karta = Karta + Bufor(3)<br />        Karta = Karta - 48<br />        Urzadzenie = Bufor(4) - 48<br />        Stan = Bufor(5) - 48<br /><br />      If Karta = Adres Then<br /><br />          N = Urzadzenie - 1<br />           Select Case Urzadzenie<br />         Case 1 To 8<br />          Select Case Stan<br />           Case 0 To 1<br />            Outputs.n = Stan<br />           Case 2<br />            If Outputs.n = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />           End Select<br />          Case 9<br />           Select Case Stan<br />             Case 0 To 1<br />               Piec_flaga = Stan<br />              Case 2<br />               If Piec = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />           End Select<br />          End Select<br /><br />      A = 1<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br /><br />    End If<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga przyciskow ***<br />Przyciski:<br /><br />  Przyciski_port = Pina And &amp;B11111111<br /><br />  If Przyciski_port &lt;&gt; 255 Then<br />    Bufor_port = Przyciski_port<br /><br />    If Pk &lt; 255 Then Incr Pk<br />    If Pk = 100 Then<br />      Select Case Przyciski_port<br />        Case 254 : Print &quot;S0611&quot;<br />        Case 253 : Print &quot;S0610&quot;<br />        Case 251 : Print &quot;S0621&quot;<br />        Case 247 : Print &quot;S0620&quot;<br />        Case 239 : Toggle Piec_flaga<br />        Case 223 : Print &quot;test1&quot;<br />        Case 191 : Print &quot;test2&quot;<br />        Case 127 : Print &quot;test3&quot;<br />      End Select<br />    Pik = 2<br />  End If<br />Else<br />  If Pk &gt; 1 Then<br />    If Pk &lt; 100 Then<br />      Bufor_port = Not Bufor_port<br />      Wyjscia_port = Pinb<br />      Wyjscia_port = Wyjscia_port Xor Bufor_port<br />      Portb = Wyjscia_port<br />      Pik = 2<br />    End If<br />      Pk = 0<br />    End If<br />  End If<br /><br />Return<br />'---<br /><br />Zegarek:<br /><br />  I2cstart<br />  I2cwbyte Ds1307w<br />  I2cwbyte 0<br />  I2cstart<br />  I2cwbyte Ds1307r<br />  I2crbyte Sekunda , Ack<br />  I2crbyte Minuta , Ack<br />  I2crbyte Godzina , Ack<br />  I2crbyte Dzien_tygodnia , Ack<br />  I2crbyte Dzien , Ack<br />  I2crbyte Miesiac , Ack<br />  I2crbyte Rok , Nack<br />  I2cstop<br /><br />  Sekunda = Makedec(sekunda) : Minuta = Makedec(minuta) : Godzina = Makedec(godzina)<br />  Dzien_tygodnia = Makedec(dzien_tygodnia) : Dzien = Makedec(dzien) : Miesiac = Makedec(miesiac) : Rok = Makedec(rok)<br /><br />Pierwsza = Godzina / 10<br />If Pierwsza = 0 Then Pierwsza = 10<br />Druga = Godzina Mod 10<br />If Druga = 0 Then Druga = 10<br />Trzecia = Minuta / 10<br />If Trzecia = 0 Then Trzecia = 10<br />Czwarta = Minuta Mod 10<br />If Czwarta = 0 Then Czwarta = 10<br /><br />  Locate 1 , 1<br />  Lcd Linia_g(pierwsza) ; Linia_g(druga) ; Chr(0) ; Linia_g(trzecia) ; Linia_g(czwarta) ; Chr(124) ; Spc(1) ; &quot;piec&quot;<br /><br /><br /><br />  Locate 2 , 1<br /><br />  Lcd Linia_d(pierwsza) ; Linia_d(druga) ; Chr(0) ; Linia_d(trzecia) ; Linia_d(czwarta) ; Chr(124)<br /><br /><br />  Locate 3 , 2<br /><br />    If Dzien &lt; 10 Then<br />      Lcd &quot;0&quot; ; Dzien<br />    Else<br />      Lcd Dzien<br />    End If<br /><br />    If Miesiac &lt; 10 Then<br />      Lcd &quot;/0&quot; ; Miesiac<br />    Else<br />      Lcd &quot;/&quot; ; Miesiac<br />    End If<br /><br />    Lcd &quot;/20&quot; ; Rok ; Spc(2) ; Chr(124)<br /><br />  Locate 4 , 1<br /><br />    Lcd Nazwa_dnia(dzien_tygodnia)<br /><br /><br />Return<br /><br /><br />'---<br />Miganie:<br /><br />  Mig = Not Mig<br /><br />  Select Case Index<br />    Case 0<br />      Offset = 1<br />      Temp_b = Godzina<br />    Case 1<br />      Offset = 4<br />      Temp_b = Minuta<br />    Case 2<br />      Offset = 7<br />      Temp_b = Sekunda<br />    Case 3<br />      Offset = 11<br />      Temp_b = Dzien<br />    Case 4<br />      Offset = 14<br />      Temp_b = Miesiac<br />    Case 5<br />      Offset = 19<br />      Temp_b = Rok<br />  End Select<br /><br />  Select Case Index<br />    Case 0 To 5<br />      Locate 1 , Offset<br />        If Mig = 1 Then<br />          If Temp_b &gt; 9 Then Lcd Temp_b Else Lcd &quot;0&quot; ; Temp_b<br />        Else<br />          Lcd Spc(2)<br />        End If<br />    Case 6<br />      Locate 2 , 2<br />        If Mig = 1 Then<br />          Lcd &quot;dzis&quot; ; Spc(1) ; Nazwa_dnia(dzien_tygodnia)<br />        Else<br />          Lcd &quot;dzis&quot; ; Spc(13)<br />        End If<br />  End Select<br /><br />Return<br />'---<br /><br />'---<br />Sub Set_clock(byval Numer_b As Byte , Byval Wartosc As Byte)<br /><br />  Wartosc = Makebcd(wartosc)<br />    I2cstart<br />    I2cwbyte Ds1307w<br />    I2cwbyte Numer_b<br />    I2cwbyte Wartosc<br />    I2cstop<br /><br />End Sub<br /><br /><br />'---<br />Miganie_dwukropek:<br /><br />  Mig = Not Mig<br /><br />  Locate 1 , 7<br />  If Mig = 1 Then<br />          Lcd Chr(0)<br />        Else<br />          Lcd Spc(1)<br />        End If<br /><br />   Locate 2 , 7<br />  If Mig = 1 Then<br />          Lcd Chr(0)<br />        Else<br />          Lcd Spc(1)<br />        End If<br /><br />Return<br /><br /><br />Wczytaj_dane:<br /><br />Flaga_big_zegar = 0<br />Cls<br />  Locate 1 , 1<br /><br />    If Godzina &lt; 10 Then<br />      Lcd &quot;0&quot; ; Godzina ; &quot;:&quot; ;<br />    Else<br />      Lcd Godzina ; &quot;:&quot; ;<br />    End If<br /><br />    If Minuta &lt; 10 Then<br />      Lcd &quot;0&quot; ; Minuta ; &quot;:&quot; ;<br />    Else<br />      Lcd Minuta ; &quot;:&quot; ;<br />    End If<br /><br />    If Sekunda &lt; 10 Then<br />      Lcd &quot;0&quot; ; Sekunda<br />    Else<br />      Lcd Sekunda<br />    End If<br /><br />  Locate 1 , 11<br /><br />    If Dzien &lt; 10 Then<br />      Lcd &quot;0&quot; ; Dzien<br />    Else<br />      Lcd Dzien<br />    End If<br /><br />    If Miesiac &lt; 10 Then<br />      Lcd &quot;/0&quot; ; Miesiac<br />    Else<br />      Lcd &quot;/&quot; ; Miesiac<br />    End If<br /><br />    Lcd &quot;/20&quot; ; Rok<br /><br />  Locate 2 , 1<br /><br />    Lcd &quot; dzis&quot; ; Spc(1) ; Nazwa_dnia(dzien_tygodnia)<br /><br />Return[/syntax]<br />Dziś siedziałem pól dnia nad schematem w Eagle i wyszło mi coś takiego:<br /><a href="http://forum.atnel.pl/_obrazki/o/5834/7a5cc28dc09e120d352467b84eddb06b.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5834/7a5cc28dc09e120d352467b84eddb06b.png" alt="Obrazek" /></a><br />Czy takie połączenie wszystkiego będzie OK?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 29 lis 2014, o 22:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-25T13:59:00+01:00</updated>
<published>2014-11-25T13:59:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105894#p105894</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105894#p105894"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105894#p105894"><![CDATA[
Właśnie miałem taki plan, na jednej stronie laminatu przyciski (8x) mają wymiary 33x38mm(jeden sensor dotykowy) między nimi masa. Na drugiej stronie potrzebna elektronika i przylutowane ledy, a reszta zalana masą. Cały panel za 1-2mm pexi lub szkłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 25 lis 2014, o 13:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-25T13:48:13+01:00</updated>
<published>2014-11-25T13:48:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105891#p105891</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105891#p105891"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105891#p105891"><![CDATA[
Pewnie, że by się dało, tylko najpierw sprawdź jak Ci te przyciski będą reagować. To była taka moja wariacja na temat przycisków trochę odbiegająca od standardów publikowanych w sieci i kod owszem działa, ale najlepsze efekty uzyskuje się kiedy przycisk jest na laminacie dwustronnym gdzie spód to masa, a przyciski (czym większe tym lepiej) od góry. Na takim pasku laminatu około 3x1cm reagowało przez pleksę gr 2mm. Trzeba też pamiętać o dobraniu liczby NOP jak już się wszystko podłączy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 25 lis 2014, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-25T13:32:34+01:00</updated>
<published>2014-11-25T13:32:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105888#p105888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105888#p105888"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105888#p105888"><![CDATA[
<div class="quotetitle">pimowo napisał(a):</div><div class="quotecontent"><br />Jak więc widzę że to Ty robisz coś dziesięć razy zamiast procesor to trochę mnie to irytuje<br /></div><br />Przepraszam  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Druga sprawa.. znów widze Pik = 2 , Pik = 2, Pik = 2 a czy nie można na końcu, po End select, napisac raz? (Chyba że chodzi o zawężenie tego do kilku przycisków ale wtedy lepiej zadeklarować stałą &quot;Const Krotki_pik = 2&quot; i pisac Pik = Krotki_pik).<br /></div><br />Tak, chodziło o to, że chciałem wykorzystać trochę więcej przycisków pilota i nie wszystkie miały &quot;pikać&quot; Zrobiłem tak jak mówisz-po End Select dałem &quot;Pik=2&quot; czyli dla wszystkich.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Trzecia sprawa. O co chodzi z tymi przerwaniami, tam w obsłudze RC5? Takie zamieszanie, że ja nie wiem kiedy one są włączane z powrotem. Jakaś kolejność, albo coś tam chyba jest zatracone. Moim zdaniem, jak już tak to masz rozwiązane. To po wejściu do przerwania mógłbyś je wyłaczyć, odczytać komende i kod, skasować flagę przerwania, włączyć je z powrotem i wyjść<br /></div><br />Kiedyś, jak poszukiwałem jak obsłużyć pilota w BASCOM'ie to duża część ludzi mówiła, że należy to robić tylko i wyłącznie w przerwaniu.<br />To jest kod o którym mówię i na nim się wzorowałem:<br />[syntax=basic4gl]'kody rc5 w przerwaniu int0<br /> <br />$regfile = &quot;m8def.dat&quot;<br />$crystal = 8000000<br /> <br />$hwstack = 64<br />$swstack = 32<br />$framesize = 32<br /> <br />Config Lcd = 16 * 2<br />Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portc.0       'konfiguracja linii<br /> <br /> <br />Dim Adres As Byte , Kod As Byte , Odebr_kod As Bit<br />Dim Flaga As Bit<br /> <br /> <br />Config Rc5 = Pind.2 , Wait = 2000<br /> <br /> <br />On Int0 Rc5<br />Config Int0 = Falling<br />Enable Int0<br />Enable Interrupts<br /> <br />   Cls<br />   Cursor Off<br />   Locate 1 , 1<br />   Lcd &quot;kod RC5&quot;<br /> <br />Do<br /> <br />   If Odebr_kod = 1 Then<br />      If Adres &lt;&gt; 255 And Kod &lt;&gt; 127 Then<br />         Locate 2 , 1<br />         Lcd &quot;adr: &quot; ; Adres ; &quot; kod: &quot; ; Kod ; &quot;  &quot;<br />      End If<br />      Reset Odebr_kod<br />   End If<br /> <br /> <br />Loop<br />End<br /> <br /> <br />Rc5:<br /> <br />   Disable Int0                                             ' wyłącz przerwanie INT0<br />   Gifr.intf0 = 1                                           ' skasuj żądanie przerwania z INT0, UWAGA!!! to nie jest błąd, żeby zgasić ten bit należy wpisać 1<br />   Enable Interrupts                                        ' SEI<br /> <br /> <br />   Getrc5(adres , Kod)<br />   Kod = Kod And &amp;B01111111<br />   Set Odebr_kod<br /> <br />   Disable Interrupts                                       ' CLI<br />   Enable Int0                                              ' włącz przerwanie INT0<br />   Gifr.intf0 = 1                                           ' skasuj żądanie przerwania z INT0 , UWAGA!!! to nie jest błąd, żeby zgasić ten bit należy wpisać 1<br />                         ' drugi raz tak na wszelki wypadek ;)<br />Return[/syntax]<br /><div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />...wyniki każdy może sobie zinterpretować jak chce.<br /></div><br />Przyznaję się bez bicia. Nie bardzo się znam na AVR, programowaniu itp. Rzuciłem się na dużą (ogromną) wodę i próbuję uczyć się pływać.<br /><br />Dzięki Wam drodzy Koledzy wszystko już u mnie działa.<br />[syntax=basic4gl]$regfile = &quot;m32def.dat&quot;<br />$crystal = 11059200<br />$baud = 115200<br />$hwstack = 128<br />$swstack = 64<br />$framesize = 64<br /><br />Config Lcd = 20 * 4<br />Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7<br /><br />Config Porta = Input<br />Porta = &amp;B11111111<br /><br />Config Portb.0 = Output : Portb.0 = 0 : Out1 Alias Portb.0<br />Config Portb.1 = Output : Portb.1 = 0 : Out2 Alias Portb.1<br />Config Portb.2 = Output : Portb.2 = 0 : Out3 Alias Portb.2<br />Config Portb.3 = Output : Portb.3 = 0 : Out4 Alias Portb.3<br />Config Portb.4 = Output : Portb.4 = 0 : Out5 Alias Portb.4<br />Config Portb.5 = Output : Portb.5 = 0 : Out6 Alias Portb.5<br />Config Portb.6 = Output : Portb.6 = 0 : Out7 Alias Portb.6<br />Config Portb.7 = Output : Portb.7 = 0 : Out8 Alias Portb.7<br /><br />Config Portd.3 = Output<br />Config Print0 = Portd.3 , Mode = Set<br />Config Portd.4 = Output : Portd.4 = 0 : Piec Alias Portd.4<br />Config Portd.5 = Output : Portd.5 = 0 : Led Alias Portd.5<br />Config Portd.6 = Output : Portd.6 = 1 : Led_buzzer Alias Portd.6<br /><br />Config Timer2 = Timer , Prescale = 256 , Compare = Disconnect , Clear Timer = 1<br />Enable Compare2 : On Compare2 Timer2_isr : Compare2 = 215<br /><br />On Urxc Przerwanie_od_rxd<br />On Int0 Rc5<br />Config Int0 = Falling<br /><br />Declare Sub Czekaj<br />Declare Sub Set_clock(byval Numer_b As Byte , Byval Wartosc As Byte)<br /><br />Dim Sekunda As Byte , Minuta As Byte , Godzina As Byte<br />Dim Dzien_tygodnia As Byte , Nazwa_dnia(7) As String * 12<br />Dim Dzien As Byte , Miesiac As Byte , Rok As Byte<br />Dim Flaga_5ms As Byte , Flaga_100ms As Byte , Minelo_400ms As Byte , Flaga_1s As Byte , Timerek As Byte , Timerek2 As Byte<br />Dim Odczyt(2) As Byte , T As Integer , T1 As Single , Wynik As String * 5<br />Dim Piec_flaga As Bit , Termostat As String * 5<br />Dim Adress As Byte , Kod As Byte , Odebrany_kod As Bit<br />Dim Bufor(10) As Byte , Dana As Byte , A As Byte , B As Byte , C As Byte<br />Dim Opoznienie As Byte , Adres As Byte , Karta As Byte , Urzadzenie As Byte , Stan As Byte<br />Dim Pik As Byte<br />Dim Pk As Byte<br />Dim Tryb As Byte , Index As Byte<br />Dim Przyciski_port As Byte , Wyjscia_port As Byte , Bufor_port As Byte<br />Dim Mig As Bit , Temp_b As Byte , Offset As Byte<br /><br />Nazwa_dnia(1) = &quot;poniedzialek&quot;<br />Nazwa_dnia(2) = &quot;wtorek      &quot;<br />Nazwa_dnia(3) = &quot;sroda       &quot;<br />Nazwa_dnia(4) = &quot;czwartek    &quot;<br />Nazwa_dnia(5) = &quot;piatek      &quot;<br />Nazwa_dnia(6) = &quot;sobota      &quot;<br />Nazwa_dnia(7) = &quot;niedziela   &quot;<br /><br />'--- deklaracja znaków<br />Deflcdchar 0 , 4 , 10 , 10 , 10 , 27 , 17 , 17 , 14         'znak termometru<br />Deflcdchar 1 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            'znak stopnia<br />Deflcdchar 2 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32           'znak &quot;&quot;<br />Deflcdchar 3 , 12 , 4 , 6 , 12 , 4 , 4 , 14 , 32            'znak &quot;³&quot;<br />Deflcdchar 4 , 32 , 32 , 14 , 1 , 15 , 17 , 14 , 1          'znak &quot;¹&quot;<br />Deflcdchar 5 , 32 , 32 , 21 , 14 , 27 , 14 , 21 , 32        'znak &quot;*&quot; grzanie<br />Deflcdchar 6 , 31 , 27 , 27 , 27 , 27 , 31 , 27 , 31        'znak &quot;!&quot; negatyw<br /><br />Config Rc5 = Pind.2 , Wait = 2000<br />Config Sda = Portc.1<br />Config Scl = Portc.0<br /><br />Const Ds1307w = 208<br />Const Ds1307r = 209<br /><br />Config 1wire = Portd.7<br /> 1wreset<br /> 1wwrite &amp;HCC<br /> 1wwrite &amp;H44<br /><br />Adres = 01<br />A = 1<br />Piec_flaga = 0<br /><br />Cursor Off<br />Cls<br /><br />Lcd &quot;jakies powitanie      bla,bla,bla...&quot;<br /><br />Call Czekaj<br />  Print &quot;Karta nr: &quot; ; Adres<br />Wait 3<br />Cls<br /><br />Enable Interrupts<br />Enable Urxc<br />Enable Int0<br /><br />'*** START ***<br />Do<br /><br /><br />'---<br />If Odebrany_kod = 1 Then<br />  If Adress = 0 Then<br /><br />    Select Case Tryb<br /><br />      Case 0<br />        Select Case Kod<br />          Case 1 : Toggle Out1<br /><br />          Case 2 : Toggle Out2<br /><br />          Case 3 : Toggle Out3<br /><br />          Case 4 : Toggle Out4<br /><br />          Case 5 : Toggle Out5<br /><br />          Case 6 : Toggle Out6<br /><br />          Case 7 : Toggle Out7<br /><br />          Case 8 : Toggle Out8<br /><br />          Case 9 : Toggle Piec_flaga<br /><br />          Case 13 : Cls<br />                      Tryb = 1<br /><br />          Case 32 : Print &quot;S0610&quot;<br /><br />          Case 33 : Print &quot;S0611&quot;<br />        End Select<br />          Pik = 2<br /><br />      Case 1<br />        If Kod = 13 Then<br />          Incr Index<br />            If Index = 6 Then<br />              Index = 0<br />            Cls<br />            Tryb = 0<br />          End If<br />        End If<br /><br />        If Kod = 16 Then<br />          Select Case Index<br />            Case 0<br />              Incr Godzina<br />                If Godzina &gt; 23 Then Godzina = 1<br />                Call Set_clock(2 , Godzina)<br />            Case 1<br />              Incr Minuta<br />                If Minuta &gt; 59 Then Minuta = 0<br />                Call Set_clock(1 , Minuta)<br />            Case 2<br />              Incr Dzien<br />                If Dzien &gt; 31 Then Dzien = 1<br />                Call Set_clock(4 , Dzien)<br />            Case 3<br />              Incr Miesiac<br />                If Miesiac &gt; 12 Then Miesiac = 1<br />                Call Set_clock(5 , Miesiac)<br />            Case 4<br />              Incr Rok<br />                If Rok &gt; 99 Then Rok = 00<br />                Call Set_clock(6 , Rok)<br />            Case 5<br />              Incr Dzien_tygodnia<br />                If Dzien_tygodnia &gt; 7 Then Dzien_tygodnia = 1<br />                Call Set_clock(3 , Dzien_tygodnia)<br />          End Select<br />        End If<br /><br />    End Select<br />  End If<br />    Odebrany_kod = 0<br />  End If<br />'---<br /><br />'--- co 5ms<br />  If Flaga_5ms = 1 Then<br />    Flaga_5ms = 0<br />      Incr Timerek<br />      Incr Timerek2<br />      Gosub Przyciski<br />    If Timerek = 20 Then<br />      Timerek = 0<br />        Flaga_100ms = 1<br />      End If<br />    If Timerek2 = 80 Then<br />      Timerek2 = 0<br />        Minelo_400ms = 1<br />      End If<br />  End If<br />'---<br /><br />'---<br />  If Minelo_400ms = 1 Then<br />    Minelo_400ms = 0<br />    If Tryb = 1 Then Gosub Miganie<br />  End If<br />'---<br /><br />'--- pikanie<br />  If Flaga_100ms = 1 Then<br />    Flaga_100ms = 0<br />      Incr Flaga_1s<br />    If Pik &gt; 0 Then<br />      Decr Pik<br />      Toggle Led_buzzer<br />      Set Led<br />    Else<br />      Reset Led<br />    End If<br />  End If<br />'--- koniec pikania<br /><br />'--- co sekunde<br />  If Flaga_1s = 10 Then<br />    Flaga_1s = 0<br />      Gosub Temperatura<br />      Gosub Zegarek<br />    End If<br />'---<br /><br />Loop<br />'*** KONIEC ***<br />End<br />'---<br /><br />'---<br />Sub Czekaj<br /><br />  For Opoznienie = 1 To Adres<br />    Waitms 100<br />      Next Opoznienie<br />    End Sub<br />'---<br /><br />'---<br />'*** obsluga DS18B20 ***<br />Temperatura:<br /><br />'--- tu czytasz temperature<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;HBE<br />      Odczyt(1) = 1wread(2)<br />      T = Odczyt(2)<br />    Shift T , Left , 8<br />      T = T + Odczyt(1)<br />      T1 = T * 0.0625<br /><br />    Wynik = Fusing(t1 , &quot;#.#&quot;)<br />    Locate 3 , 14<br />    Lcd Chr(0) ; Wynik ; Chr(1) ; &quot;C&quot;<br /><br />'--- sterowanie piecem<br />  Locate 4 , 1<br /><br />    If Piec_flaga = 1 Then<br />      Lcd &quot;piec jest w&quot; ; Chr(3) ; Chr(4) ; &quot;czony &quot;<br />      Termostat = &quot;24&quot;<br />    Else<br />      Lcd &quot;piec jest wy&quot; ; Chr(3) ; Chr(4) ; &quot;czony&quot;<br />      Termostat = &quot;18&quot;<br />    End If<br /><br />  Locate 3 , 1<br /><br />    If Wynik &lt; Termostat Then<br />      Set Piec<br />      Lcd Chr(5) ; Spc(1) ; &quot;grzanie &quot; ; Chr(5)<br />    Else<br />      Reset Piec<br />      Lcd Spc(13)<br />    End If<br />'---<br /><br />'--- tu kazesz DS`owi przygotowaæ nowy odczyt<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;H44<br /><br />Return<br />'---<br /><br />'---<br />Timer2_isr:<br /><br />  Flaga_5ms = 1<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga pilota ***<br />Rc5:<br /><br />  Disable Int0<br />    Gifr.intf0 = 1<br />      Enable Interrupts<br /><br />  Getrc5(adress , Kod)<br />    Kod = Kod And &amp;B01111111<br />      Odebrany_kod = 1<br /><br />  Disable Interrupts<br />    Enable Int0<br />      Gifr.intf0 = 1<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga RS485 ***<br />Przerwanie_od_rxd:<br /><br />  Inputbin Dana<br />    Bufor(a) = Dana<br />      Incr A<br /><br />    If A = 6 Then<br />      If Bufor(1) = 83 Then<br /><br />        Karta = Bufor(2) - 48<br />        Karta = Karta * 10<br />        Karta = Karta + Bufor(3)<br />        Karta = Karta - 48<br />        Urzadzenie = Bufor(4) - 48<br />        Stan = Bufor(5) - 48<br /><br />      If Karta = Adres Then<br /><br />        If Stan = 0 Then<br />          Select Case Urzadzenie<br />            Case 1 : Reset Out1<br />            Case 2 : Reset Out2<br />            Case 3 : Reset Out3<br />            Case 4 : Reset Out4<br />            Case 5 : Reset Out5<br />            Case 6 : Reset Out6<br />            Case 7 : Reset Out7<br />            Case 8 : Reset Out8<br />            Case 9 : Reset Piec_flaga<br />          End Select<br />        End If<br /><br /><br />        If Stan = 1 Then<br />          Select Case Urzadzenie<br />            Case 1 : Set Out1<br />            Case 2 : Set Out2<br />            Case 3 : Set Out3<br />            Case 4 : Set Out4<br />            Case 5 : Set Out5<br />            Case 6 : Set Out6<br />            Case 7 : Set Out7<br />            Case 8 : Set Out8<br />            Case 9 : Set Piec_flaga<br />          End Select<br />        End If<br /><br />        If Stan = 2 Then<br />          Select Case Urzadzenie<br />            Case 1 : If Out1 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 2 : If Out2 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 3 : If Out3 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 4 : If Out4 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 5 : If Out5 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 6 : If Out6 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 7 : If Out7 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 8 : If Out8 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 9 : If Piec = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />          End Select<br />        End If<br /><br />      A = 1<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br /><br />    End If<br /><br />Return<br />'---<br /><br />'---<br />'*** obsluga przyciskow ***<br />Przyciski:<br /><br />  Przyciski_port = Pina And &amp;B11111111<br /><br />  If Przyciski_port &lt;&gt; 255 Then<br />    Bufor_port = Przyciski_port<br /><br />    If Pk &lt; 255 Then Incr Pk<br />    If Pk = 100 Then<br />      Select Case Przyciski_port<br />        Case 254 : Print &quot;S0611&quot;<br />        Case 253 : Print &quot;S0610&quot;<br />        Case 251 : Print &quot;S0621&quot;<br />        Case 247 : Print &quot;S0620&quot;<br />        Case 239 : Toggle Piec_flaga<br />        Case 223 : Print &quot;test1&quot;<br />        Case 191 : Print &quot;test2&quot;<br />        Case 127 : Print &quot;test3&quot;<br />      End Select<br />    Pik = 2<br />  End If<br />Else<br />  If Pk &gt; 1 Then<br />    If Pk &lt; 100 Then<br />      Bufor_port = Not Bufor_port<br />      Wyjscia_port = Pinb<br />      Wyjscia_port = Wyjscia_port Xor Bufor_port<br />      Portb = Wyjscia_port<br />      Pik = 2<br />    End If<br />      Pk = 0<br />    End If<br />  End If<br /><br />Return<br />'---<br /><br />'---<br />'*** wyswietlanie czasu i daty ***<br />Zegarek:<br /><br />  I2cstart<br />  I2cwbyte Ds1307w<br />  I2cwbyte 0<br />  I2cstart<br />  I2cwbyte Ds1307r<br />  I2crbyte Sekunda , Ack<br />  I2crbyte Minuta , Ack<br />  I2crbyte Godzina , Ack<br />  I2crbyte Dzien_tygodnia , Ack<br />  I2crbyte Dzien , Ack<br />  I2crbyte Miesiac , Ack<br />  I2crbyte Rok , Nack<br />  I2cstop<br /><br />  Sekunda = Makedec(sekunda) : Minuta = Makedec(minuta) : Godzina = Makedec(godzina)<br />  Dzien_tygodnia = Makedec(dzien_tygodnia) : Dzien = Makedec(dzien) : Miesiac = Makedec(miesiac) : Rok = Makedec(rok)<br /><br />  Locate 1 , 1<br /><br />    If Godzina &lt; 10 Then<br />      Lcd &quot;0&quot; ; Godzina ; &quot;:&quot; ;<br />    Else<br />      Lcd Godzina ; &quot;:&quot; ;<br />    End If<br /><br />    If Minuta &lt; 10 Then<br />      Lcd &quot;0&quot; ; Minuta ; &quot;:&quot; ;<br />    Else<br />      Lcd Minuta ; &quot;:&quot; ;<br />    End If<br /><br />    If Sekunda &lt; 10 Then<br />      Lcd &quot;0&quot; ; Sekunda<br />    Else<br />      Lcd Sekunda<br />    End If<br /><br />  Locate 1 , 11<br /><br />    If Dzien &lt; 10 Then<br />      Lcd &quot;0&quot; ; Dzien<br />    Else<br />      Lcd Dzien<br />    End If<br /><br />    If Miesiac &lt; 10 Then<br />      Lcd &quot;/0&quot; ; Miesiac<br />    Else<br />      Lcd &quot;/&quot; ; Miesiac<br />    End If<br /><br />    Lcd &quot;/20&quot; ; Rok<br /><br />  Locate 2 , 1<br /><br />    Lcd &quot; dzi&quot; ; Chr(2) ; Spc(1) ; Nazwa_dnia(dzien_tygodnia)<br /><br />Return<br />'---<br /><br />'---<br />Miganie:<br /><br />  Mig = Not Mig<br /><br />  Select Case Index<br />    Case 0<br />      Offset = 1<br />      Temp_b = Godzina<br />    Case 1<br />      Offset = 4<br />      Temp_b = Minuta<br />    Case 2<br />      Offset = 11<br />      Temp_b = Dzien<br />    Case 3<br />      Offset = 14<br />      Temp_b = Miesiac<br />    Case 4<br />      Offset = 19<br />      Temp_b = Rok<br />  End Select<br /><br />  Select Case Index<br />    Case 0 To 4<br />      Locate 1 , Offset<br />        If Mig = 1 Then<br />          If Temp_b &gt; 9 Then Lcd Temp_b Else Lcd &quot;0&quot; ; Temp_b<br />        Else<br />          Lcd Spc(2)<br />        End If<br />    Case 5<br />      Locate 2 , 2<br />        If Mig = 1 Then<br />          Lcd &quot;dzi&quot; ; Chr(2) ; Spc(1) ; Nazwa_dnia(dzien_tygodnia)<br />        Else<br />          Lcd &quot;dzi&quot; ; Chr(2) ; Spc(13)<br />        End If<br />  End Select<br /><br />Return<br />'---<br /><br />'---<br />Sub Set_clock(byval Numer_b As Byte , Byval Wartosc As Byte)<br /><br />  Wartosc = Makebcd(wartosc)<br />    I2cstart<br />    I2cwbyte Ds1307w<br />    I2cwbyte Numer_b<br />    I2cwbyte Wartosc<br />    I2cstop<br /><br />End Sub<br />'---[/syntax]<br />Sterownik w sumie już działa, płytka stykowa wygląda jak przerośnięty pająk-mutant  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br />Teraz będę próbował stworzyć schemat, PCB<br />Muszę jeszcze jakoś posprzątać ten kod, a przede wszystkim opisać sobie go w komentarzach bo za jakiś czas to nie będę wiedział sam o co chodzi.<br /><br />Jeszcze zostało tylko znaleźć jakiś dobry sposób na przyciski dotykowe.<br />Czy do mojej ATmegi da się jeszcze dorzucić obsługę przycisków dotykowych czy to już byłoby za dużo i lepiej to zrobić na osobnym układzie?<br />Pozwolę sobie pokazać kod Kolegi @SylwekK<br />[syntax=basic4gl]'---------------------------------------------<br />'         Przycisk dotykowy V1<br />'<br />' Sylwek Kuna<br />' 2013.08.13<br />'<br />'---------------------------------------------<br />$regfile &quot;m32adef.dat&quot;<br />$crystal = 8000000<br />$hwstack = 64<br />$swstack = 64<br />$framesize = 128<br />'- konfig LCD --------------------------------<br />Config Lcd = 16 * 2<br />Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5<br />Cursor Off Noblink<br />Cls<br /> <br /> <br />'---------------------------------------------<br />'---------------------------------------------<br />Dim A As Bit<br /> <br />Ddrd = &amp;B00001000<br />Portd = 0<br /> <br />'-------------------<br />Do<br />   Config Portd.6 = Output<br />   Reset Portd.6<br />   Waitus 200                 'czas na rozładowanie pojemności<br />   Config Portd.6 = Input<br />   Set Portd.6<br />   nop                        'opóźnienie - przy większej pojemności (zbliżony palec) napięcie podciągające<br />   nop                        'nie zdąży naładować pojemności przez co odczyt z pinu da w efekcie &quot;0&quot;<br />'   nop<br />'   nop<br />'   nop<br />'   nop<br />'   nop<br />'   nop<br />'   nop<br />'   nop<br />   A = Pind.6<br />   Portd.3 = A<br />   Home : Lcd &quot;Stan:&quot; ; A<br /> <br /> <br /> <br /> <br />Loop<br />End[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 25 lis 2014, o 13:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-25T08:39:23+01:00</updated>
<published>2014-11-25T08:39:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105862#p105862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105862#p105862"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105862#p105862"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Programista ktory zna Assemblera, C i Bascom i na codzień programuje dla swojej firmy urządzenia zrobił na innym forum porównanie &quot;Czasochłonności&quot; pisania i testowania programu który czyta dane z Serial Portu i ustawia serwo do żądanej pozycji.<br />Cytuj:<br />The Assembler version took about 40 hours to write and test <br />The C version took about 8 hours to write and test <br />The Bascom version took about 2 hours to write and test<br /><br />...wyniki każdy może sobie zinterpretować jak chce. Mogę i ja po swojemu - kiedy ktoś będzie jeszcze pisał to ja będę już robił coś innego.<br /></div><br />Powiem przewrotnie - kiedy ja będę się cieszył, że program wyrabia mi w przerwaniach i mieści się w procku, a przy tym nic się ze sobą nie gryzie - ktoś kiedyś będzie jeszcze szukał większego procka i wciąż próbował zoptymalizować algorytmy. - To mówiłem ja, kiedyś zatwardziały bascomowiec, który kijem nie chciał tknąć C. <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=1922">SylwekK</a> — 25 lis 2014, o 08:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-24T20:36:52+01:00</updated>
<published>2014-11-24T20:36:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105807#p105807</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105807#p105807"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105807#p105807"><![CDATA[
<div class="quotetitle">pimowo napisał(a):</div><div class="quotecontent"><br />Nie wiem jak zrobić, aby cyfry które chcę ustawić/zmienić ładnie sobie mrugały.<br /></div><br />Takie rzeczy najfajniej sie robi z wykorzystaniem timera programowego, którym w pętli głównej zarządzasz, np tak:<br /><br />[syntax=basic4gl]if timer_p=0 then<br />  timer_p=50 'jeśli przerwania chodzą na 10ms to co 0,5s będzie zmiana stanu zmiennej<br />  toggle miga 'zmienna bitowa<br />end if[/syntax]<br /><br />powyższe umieszczasz gdzieś pod koniec pętli głównej niech sobie działa cały czas, a mogą z tego korzystać różne fragmenty programu. I dalej samo miganie to już formalność:<br /><br />[syntax=basic4gl]locate 0,0 'jakieś współrzędne napisu<br />if miga=1 then lcd &quot;napis&quot; else lcd &quot;     &quot;[/syntax]<br /><br />a timer w przerwaniach po prostu tak wygląda:<br /><br />[syntax=basic4gl]if timer_p&gt;0 then decr timer_p[/syntax]<br /><br />Dodam, że w teraz kiedy piszę w C i działam na lcd buforowanym przykładowe miganie jest jeszcze prostsze, bo po else nie potrzebne są te puste spacje <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> — 24 lis 2014, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pimowo]]></name></author>
<updated>2014-11-24T19:43:45+01:00</updated>
<published>2014-11-24T19:43:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105791#p105791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105791#p105791"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105791#p105791"><![CDATA[
Dopiero dziś znalazła się chwila, aby usiąść sobie przy mojej zabawce...<br /><br />Kombinuję  i już prawie wszystko mam, no właśnie prawie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Nie wiem jak zrobić, aby cyfry które chcę ustawić/zmienić ładnie sobie mrugały. Próbuję zaadoptować kod @Niveasoft, ale nie bardzo potrafię to zrobić <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Zrobiłem, że cyfry (1-8) na pilocie zmieniają mi stan wyjść (Out1-Out8) <br />Guzik 9 włącza/wyłącza piec<br />Guzik MUTE przechodzi w stan ustawień i każde następne naciśnięcie zmienia co ma ustawiać(godziny, minuty, dzień, miesiąc, rok, dzień tygodnia), a guzik-strzałka w górę-to zmienia.<br />Kod teraz wygląda tak:<br />[syntax=basic4gl]﻿$regfile = &quot;m32def.dat&quot;<br />$crystal = 11059200<br />$baud = 115200<br />$hwstack = 128<br />$swstack = 64<br />$framesize = 64<br /><br />Config Lcd = 20 * 4<br />Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7<br /><br />Config Porta = Input<br />Porta = &amp;B11111111<br /><br />Config Portb.0 = Output : Portb.0 = 0 : Out1 Alias Portb.0<br />Config Portb.1 = Output : Portb.1 = 0 : Out2 Alias Portb.1<br />Config Portb.2 = Output : Portb.2 = 0 : Out3 Alias Portb.2<br />Config Portb.3 = Output : Portb.3 = 0 : Out4 Alias Portb.3<br />Config Portb.4 = Output : Portb.4 = 0 : Out5 Alias Portb.4<br />Config Portb.5 = Output : Portb.5 = 0 : Out6 Alias Portb.5<br />Config Portb.6 = Output : Portb.6 = 0 : Out7 Alias Portb.6<br />Config Portb.7 = Output : Portb.7 = 0 : Out8 Alias Portb.7<br /><br />Config Portd.3 = Output<br />Config Print0 = Portd.3 , Mode = Set<br />Config Portd.4 = Output : Portd.4 = 0 : Piec Alias Portd.4<br />Config Portd.5 = Output : Portd.5 = 0 : Led Alias Portd.5<br />Config Portd.6 = Output : Portd.6 = 1 : Led_buzzer Alias Portd.6<br /><br />Config Timer2 = Timer , Prescale = 256 , Compare = Disconnect , Clear Timer = 1<br />Enable Compare2 : On Compare2 Timer2_isr : Compare2 = 215<br /><br />On Urxc Przerwanie_od_rxd<br />On Int0 Rc5<br />Config Int0 = Falling<br /><br />Declare Sub Czekaj<br /><br />Dim Sekunda As Byte , Minuta As Byte , Godzina As Byte<br />Dim Dzien_tygodnia As Byte , Nazwa_dnia(7) As String * 12<br />Dim Dzien As Byte , Miesiac As Byte , Rok As Byte<br />Dim Flaga_5ms As Byte , Flaga_100ms As Byte , Flaga_1s As Byte , Timerek As Byte<br />Dim Odczyt(2) As Byte , T As Integer , T1 As Single , Wynik As String * 5<br />Dim Piec_flaga As Bit , Termostat As String * 5<br />Dim Adress As Byte , Kod As Byte , Odebrany_kod As Bit<br />Dim Bufor(10) As Byte , Dana As Byte , A As Byte , B As Byte , C As Byte<br />Dim Opoznienie As Byte , Adres As Byte , Karta As Byte , Urzadzenie As Byte , Stan As Byte<br />Dim Pik As Byte<br />Dim Pk As Byte<br />Dim Tryb As Byte , Index As Byte<br />Dim Przyciski_port As Byte , Wyjscia_port As Byte , Bufor_port As Byte<br /><br />Nazwa_dnia(1) = &quot;poniedzialek&quot;<br />Nazwa_dnia(2) = &quot;wtorek      &quot;<br />Nazwa_dnia(3) = &quot;sroda       &quot;<br />Nazwa_dnia(4) = &quot;czwartek    &quot;<br />Nazwa_dnia(5) = &quot;piatek      &quot;<br />Nazwa_dnia(6) = &quot;sobota      &quot;<br />Nazwa_dnia(7) = &quot;niedziela   &quot;<br /><br />'----- deklaracja znaków -----<br />Deflcdchar 0 , 4 , 10 , 10 , 10 , 27 , 17 , 17 , 14         'znak termometru<br />Deflcdchar 1 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32            'znak stopnia<br />Deflcdchar 2 , 2 , 4 , 14 , 16 , 14 , 1 , 30 , 32           'znak &quot;ś&quot;<br />Deflcdchar 3 , 12 , 4 , 6 , 12 , 4 , 4 , 14 , 32            'znak &quot;ł&quot;<br />Deflcdchar 4 , 32 , 32 , 14 , 1 , 15 , 17 , 14 , 1          'znak &quot;ą&quot;<br />Deflcdchar 5 , 32 , 32 , 21 , 14 , 27 , 14 , 21 , 32        'znak &quot;*&quot; grzanie<br /><br />Config Rc5 = Pind.2 , Wait = 2000<br />Config Sda = Portc.1<br />Config Scl = Portc.0<br /><br />Const Ds1307w = 208<br />Const Ds1307r = 209<br /><br />Config 1wire = Portd.7<br /> 1wreset<br /> 1wwrite &amp;HCC<br /> 1wwrite &amp;H44<br /><br />Adres = 01<br />A = 1<br />Piec_flaga = 0<br /><br />Cursor Off<br />Cls<br /><br />Lcd &quot;jakies powitanie      bla,bla,bla...&quot;<br /><br />Call Czekaj<br />  Print &quot;Karta nr: &quot; ; Adres<br />Wait 3<br />Cls<br /><br />Enable Interrupts<br />Enable Urxc<br />Enable Int0<br /><br />'*** START ***<br />Do<br /><br /><br />If Odebrany_kod = 1 Then<br />  If Adress = 0 Then<br /><br />    Select Case Tryb<br /><br />      Case 0<br />        Select Case Kod<br />          Case 1 : Toggle Out1<br />                     Pik = 2<br />          Case 2 : Toggle Out2<br />                     Pik = 2<br />          Case 3 : Toggle Out3<br />                     Pik = 2<br />          Case 4 : Toggle Out4<br />                     Pik = 2<br />          Case 5 : Toggle Out5<br />                     Pik = 2<br />          Case 6 : Toggle Out6<br />                     Pik = 2<br />          Case 7 : Toggle Out7<br />                     Pik = 2<br />          Case 8 : Toggle Out8<br />                     Pik = 2<br />          Case 9 : Toggle Piec_flaga<br />                     Pik = 2<br />          Case 13 : Tryb = 1<br /><br />          Case 16 :<br /><br />          Case 17 :<br /><br />          Case 32 : Print &quot;S0610&quot;<br />                      Pik = 2<br />          Case 33 : Print &quot;S0611&quot;<br />                      Pik = 2<br />        End Select<br /><br />      Case 1<br />        If Kod = 13 Then<br />          Incr Index<br />            If Index = 6 Then<br />              Index = 0<br />              Cls<br />              Tryb = 0<br />            End If<br />          End If<br />        If Kod = 16 Then<br />          Select Case Index<br />            Case 0<br />              Incr Godzina<br />                If Godzina &gt; 23 Then Godzina = 1<br />                  Godzina = Makebcd(godzina)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 2<br />                  I2cwbyte Godzina<br />                  I2cstop<br />            Case 1<br />              Incr Minuta<br />                If Minuta &gt; 59 Then Minuta = 0<br />                  Minuta = Makebcd(minuta)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 1<br />                  I2cwbyte Minuta<br />                  I2cstop<br />            Case 2<br />              Incr Dzien<br />               If Dzien &gt; 31 Then Dzien = 1<br />                  Dzien = Makebcd(dzien)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 4<br />                  I2cwbyte Dzien<br />                  I2cstop<br />            Case 3<br />              Incr Miesiac<br />                If Miesiac &gt; 12 Then Miesiac = 1<br />                  Miesiac = Makebcd(miesiac)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 5<br />                  I2cwbyte Miesiac<br />                  I2cstop<br />            Case 4<br />              Incr Rok<br />                If Rok &gt; 99 Then Rok = 00<br />                  Rok = Makebcd(rok)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 6<br />                  I2cwbyte Rok<br />                  I2cstop<br />            Case 5<br />              Incr Dzien_tygodnia<br />                If Dzien_tygodnia &gt; 6 Then Dzien_tygodnia = 1<br />                  Dzien_tygodnia = Makebcd(dzien_tygodnia)<br />                  I2cstart<br />                  I2cwbyte Ds1307w<br />                  I2cwbyte 3<br />                  I2cwbyte Dzien_tygodnia<br />                  I2cstop<br /><br />            End Select<br />          End If<br />        End Select<br />      End If<br />    Odebrany_kod = 0<br />  End If<br /><br />'co 5ms<br />  If Flaga_5ms = 1 Then<br />    Flaga_5ms = 0<br />    Incr Timerek<br />    Gosub Przyciski<br />    If Timerek = 20 Then<br />      Timerek = 0<br />      Flaga_100ms = 1<br />    End If<br />  End If<br /><br />'----------- pikanie --------------<br />  If Flaga_100ms = 1 Then<br />    Flaga_100ms = 0<br />      Incr Flaga_1s<br />    If Pik &gt; 0 Then<br />      Decr Pik<br />      Toggle Led_buzzer<br />      Set Led<br />    Else<br />      Reset Led<br />    End If<br />  End If<br />'--------- koniec pikania ---------<br /><br />' co sekunde<br />  If Flaga_1s = 10 Then<br />    Flaga_1s = 0<br />      Gosub Temperatura<br />      Gosub Zegarek<br />    End If<br /><br /><br />Loop<br />'*** KONIEC ***<br />End<br /><br />Sub Czekaj<br /><br />  For Opoznienie = 1 To Adres<br />    Waitms 100<br />      Next Opoznienie<br />    End Sub<br /><br />'*** obsluga DS18B20 ***<br />Temperatura:<br /><br />'tu czytasz temperature<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;HBE<br />      Odczyt(1) = 1wread(2)<br />      T = Odczyt(2)<br />    Shift T , Left , 8<br />      T = T + Odczyt(1)<br />      T1 = T * 0.0625<br /><br />    Wynik = Fusing(t1 , &quot;#.#&quot;)<br />    Locate 3 , 14<br />    Lcd Chr(0) ; Wynik ; Chr(1) ; &quot;C&quot;<br /><br />'----- sterowanie piecem<br />  Locate 4 , 1<br /><br />    If Piec_flaga = 1 Then<br />      Lcd &quot;piec jest w&quot; ; Chr(3) ; Chr(4) ; &quot;czony &quot;<br />      Termostat = &quot;21&quot;<br />    Else<br />      Lcd &quot;piec jest wy&quot; ; Chr(3) ; Chr(4) ; &quot;czony  &quot;<br />      Termostat = &quot;18&quot;<br />    End If<br /><br />  Locate 3 , 1<br /><br />    If Wynik &lt; Termostat Then<br />      Lcd Chr(5) ; &quot; grzanie &quot; ; Chr(5)<br />      Set Piec<br />    Else<br />      Lcd &quot;           &quot;<br />      Reset Piec<br />    End If<br /><br />'tu kazesz DS`owi przygotować nowy odczyt<br />  1wreset<br />    1wwrite &amp;HCC<br />    1wwrite &amp;H44<br /><br />Return<br /><br /><br />Timer2_isr:<br /><br />  Flaga_5ms = 1<br /><br />Return<br /><br />'*** obsluga pilota ***<br />Rc5:<br /><br />  Disable Int0<br />    Gifr.intf0 = 1<br />      Enable Interrupts<br /><br />  Getrc5(adress , Kod)<br />    Kod = Kod And &amp;B01111111<br />      Odebrany_kod = 1<br /><br />  Disable Interrupts<br />    Enable Int0<br />      Gifr.intf0 = 1<br /><br />Return<br /><br />'*** obsluga RS485 ***<br />Przerwanie_od_rxd:<br /><br />  Inputbin Dana<br />    Bufor(a) = Dana<br />      Incr A<br /><br />    If A = 6 Then<br />      If Bufor(1) = 83 Then<br /><br />        Karta = Bufor(2) - 48<br />        Karta = Karta * 10<br />        Karta = Karta + Bufor(3)<br />        Karta = Karta - 48<br />        Urzadzenie = Bufor(4) - 48<br />        Stan = Bufor(5) - 48<br /><br />      If Karta = Adres Then<br /><br />        If Stan = 0 Then<br />          Select Case Urzadzenie<br />            Case 1 : Reset Out1<br />            Case 2 : Reset Out2<br />            Case 3 : Reset Out3<br />            Case 4 : Reset Out4<br />            Case 5 : Reset Out5<br />            Case 6 : Reset Out6<br />            Case 7 : Reset Out7<br />            Case 8 : Reset Out8<br />            Case 9 : Reset Piec_flaga<br />          End Select<br />        End If<br /><br /><br />        If Stan = 1 Then<br />          Select Case Urzadzenie<br />            Case 1 : Set Out1<br />            Case 2 : Set Out2<br />            Case 3 : Set Out3<br />            Case 4 : Set Out4<br />            Case 5 : Set Out5<br />            Case 6 : Set Out6<br />            Case 7 : Set Out7<br />            Case 8 : Set Out8<br />            Case 9 : Set Piec_flaga<br />          End Select<br />        End If<br /><br />        If Stan = 2 Then<br />          Select Case Urzadzenie<br />            Case 1 : If Out1 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 2 : If Out2 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 3 : If Out3 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 4 : If Out4 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 5 : If Out5 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 6 : If Out6 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 7 : If Out7 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 8 : If Out8 = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />            Case 9 : If Piec = 0 Then Print &quot;off&quot; Else Print &quot;on&quot;<br />          End Select<br />        End If<br /><br />      A = 1<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br />    Else<br />      A = 5<br />        For B = 1 To 4<br />        C = B<br />        Incr C<br />        Bufor(b) = Bufor(c)<br />        Next<br />      End If<br /><br />    End If<br /><br />Return<br /><br />'*** obsluga przyciskow ***<br />Przyciski:<br /><br />  Przyciski_port = Pina And &amp;B11111111                      'Bajt= Cały portB And 111111111<br /><br />  If Przyciski_port &lt;&gt; 255 Then                             'przykład: jesli różne od 11111111 i jest 11110111<br />    Bufor_port = Przyciski_port<br /><br />    If Pk &lt; 255 Then Incr Pk<br />    If Pk = 100 Then<br />      Select Case Przyciski_port<br />        Case 254 : Print &quot;S0611&quot;<br />        Case 253 : Print &quot;S0610&quot;<br />        Case 251 : Print &quot;S0621&quot;<br />        Case 247 : Print &quot;S0620&quot;<br />        Case 239 : Toggle Piec_flaga<br />        Case 223 : Print &quot;test1&quot;<br />        Case 191 : Print &quot;test2&quot;<br />        Case 127 : Print &quot;test3&quot;<br />      End Select<br />    Pik = 4<br />  End If<br />Else<br />  If Pk &gt; 1 Then<br />    If Pk &lt; 100 Then<br />      Bufor_port = Not Bufor_port                           'to 11110111 odwracamy na 00001000<br />      Wyjscia_port = Pinb                                   'odczytujemy port WYJŚĆ i zmieniamy tylko jeden pin<br />      Wyjscia_port = Wyjscia_port Xor Bufor_port            'przykład: 11110111 Xor 00001000 = 11111111<br />      Portb = Wyjscia_port                                  'i przepisujemy wartosc do portu<br />      Pik = 2<br />    End If<br />      Pk = 0<br />    End If<br />  End If<br /><br />Return<br /><br /><br />'*** wyswietlanie czasu i daty ***<br />Zegarek:<br /><br />  I2cstart<br />  I2cwbyte Ds1307w<br />  I2cwbyte 0<br />  I2cstart<br />  I2cwbyte Ds1307r<br />  I2crbyte Sekunda , Ack<br />  I2crbyte Minuta , Ack<br />  I2crbyte Godzina , Ack<br />  I2crbyte Dzien_tygodnia , Ack<br />  I2crbyte Dzien , Ack<br />  I2crbyte Miesiac , Ack<br />  I2crbyte Rok , Nack<br />  I2cstop<br /><br />  Sekunda = Makedec(sekunda) : Minuta = Makedec(minuta) : Godzina = Makedec(godzina)<br />  Dzien_tygodnia = Makedec(dzien_tygodnia) : Dzien = Makedec(dzien) : Miesiac = Makedec(miesiac) : Rok = Makedec(rok)<br /><br />  Locate 1 , 1<br /><br />    If Godzina &lt; 10 Then<br />      Lcd &quot;0&quot; ; Godzina ; &quot;:&quot; ;<br />    Else<br />      Lcd Godzina ; &quot;:&quot; ;<br />    End If<br /><br />    If Minuta &lt; 10 Then<br />      Lcd &quot;0&quot; ; Minuta ; &quot;:&quot; ;<br />    Else<br />      Lcd Minuta ; &quot;:&quot; ;<br />    End If<br /><br />    If Sekunda &lt; 10 Then<br />      Lcd &quot;0&quot; ; Sekunda<br />    Else<br />      Lcd Sekunda<br />    End If<br /><br />  Locate 1 , 11<br /><br />    If Dzien &lt; 10 Then<br />      Lcd &quot;0&quot; ; Dzien<br />    Else<br />      Lcd Dzien<br />    End If<br /><br />    If Miesiac &lt; 10 Then<br />      Lcd &quot;/0&quot; ; Miesiac<br />    Else<br />      Lcd &quot;/&quot; ; Miesiac<br />    End If<br /><br />    Lcd &quot;/20&quot; ; Rok<br /><br />  Locate 2 , 1<br /><br />    Lcd &quot; dzi&quot; ; Chr(2) ; Spc(1) ; Nazwa_dnia(dzien_tygodnia)<br /><br />Return[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5834">pimowo</a> — 24 lis 2014, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-23T11:20:37+01:00</updated>
<published>2014-11-23T11:20:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105562#p105562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105562#p105562"/>
<title type="html"><![CDATA[Re: ATmega32 BASCOM-Sterownik domowy/pokojowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9328&amp;p=105562#p105562"><![CDATA[
<div class="quotetitle">Niveasoft napisał(a):</div><div class="quotecontent"><br />Pamiętam że Sylwkowi się nie podobało że użyłem dwóch Timerów w urządzeniu do generowania  sygnału prędkości.<br /></div><br />Sytuacji niestety nie pamiętam wiem natomiast jedno, że jeśli od początku nie zacznie się prawidłowo programować to czym większy projekt tym większe problemy, które będą się nawarstwiać i nagle się okaże, że duże możliwości sprzętowe okażą się nie wystarczające, żeby zamigać jeszcze jedną diodką (oczywiście przejaskrawiam z tą diodą - chodzi o istotę)...  A dwa timery do generowania prędkości jak by to nie miało wyglądać to przynajmniej o jeden za dużo <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=1922">SylwekK</a> — 23 lis 2014, o 11:20</p><hr />
]]></content>
</entry>
</feed>