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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-12T17:15:10+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5515&amp;mode</id>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T17:15:10+01:00</updated>
<published>2014-01-12T17:15:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64793#p64793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64793#p64793"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64793#p64793"><![CDATA[
W sumie niczym innym się ona nie różni do lcd_locate() <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Dzięki za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 sty 2014, o 17:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-12T17:04:14+01:00</updated>
<published>2014-01-12T17:04:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64791#p64791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64791#p64791"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64791#p64791"><![CDATA[
A odwolujesz sie do niej tak:<br /><br />wyswietl(0,3);<br /><br />Cyfry 0 i 3 zostana podstawione w miejsce lcd_locate(0,3);<br /><br />Wysłane z telefonu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 12 sty 2014, o 17:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-12T16:53:29+01:00</updated>
<published>2014-01-12T16:53:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64788#p64788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64788#p64788"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64788#p64788"><![CDATA[
Funkcje z argumentami w zasadzie nie wiele się różnią od funkcji bez argumentów<br />tylko argumentami  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br /><br />Taki żarcik<br /><br />W Twoim przykładzie ciężko użyć takich funkcji choć nie żeby to było nie możliwe<br />ale przy bardziej rozwiniętym projekcie zaoszczędzisz troszkę bitów pamięci <br /><br />Na siłę (zaznaczam na siłę) tak dla przykładu  można by napisać funkcję wyświetl()<br />z argumentem<br />[syntax=c]void wyswietl (uint8_t pozX, uint8_t pozY)<br />{<br />   lcd_locate(pozX,pozY);<br />   .......... //dalsza część funkcji<br />}[/syntax]<br /><br />może coś ci to pomoże w zrozumieniu argumentów ale uwierz mi<br />to samo przychodzi z czasem (i przy analizie kodów innych ) sam się tak uczę <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=1044">Zaba</a> — 12 sty 2014, o 16:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T16:30:16+01:00</updated>
<published>2014-01-12T16:30:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64785#p64785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64785#p64785"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64785#p64785"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />O ile dobrze rozumiem funkcja zmien() służy do obsługi przycisków,<br />jeśli tak to musiałbyś zadbać o drgania styków przed<br />zwiększaniem zmiennych w niej zawartych.<br /></div><br />Tak, to jest tylko &quot;pokazowo&quot;, gdyż głównie zależało mi na ukazaniu jak piszę funkcje, a nie co się w nich znajduje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />Godziny i minuty tak samo bo bedzie ci zle liczylo czas<br /></div><br />Ok <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jeszcze jedno. Czy można tu gdzieś zastosować funkcję z argumentem? Bo niestety nie za bardzo rozumiem jak takie funkcję robić.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 sty 2014, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2014-01-12T14:34:11+01:00</updated>
<published>2014-01-12T14:34:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64767#p64767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64767#p64767"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64767#p64767"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br />Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?<br /><br />[syntax=c]if (sekundy &gt; 59)<br />{<br />             sekundy = 0;<br />             minuty++;<br />}[/syntax]<br /></div><br /><br />Dokładnie tak. Będziesz miał 100% pewność że nigdy nie przekroczy zakresu. Co do drgań styków na przyciskach to zależy, ja nigdy nie stosowałem eliminacji i zawsze dobrze mi chodziło. Ale oczywiście możesz zamontować ta obsługę. Na blogu Pana Mirka masz projekt gdzie można na kilka sposobów to wyeliminować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 12 sty 2014, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-01-12T14:29:56+01:00</updated>
<published>2014-01-12T14:29:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64765#p64765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64765#p64765"/>
<title type="html"><![CDATA[Re: Odp: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64765#p64765"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br />Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?<br /><br />[syntax=c]if (sekundy &gt; 59)<br />{<br />             sekundy = 0;<br />             minuty++;<br />}[/syntax]<br /></div><br /><br />Godziny i minuty tak samo bo bedzie ci zle liczylo czas<br /><br />Wysłane z telefonu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 12 sty 2014, o 14:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-12T14:24:32+01:00</updated>
<published>2014-01-12T14:24:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64763#p64763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64763#p64763"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64763#p64763"><![CDATA[
O ile dobrze rozumiem funkcja zmien() służy do obsługi przycisków,<br />jeśli tak to musiałbyś zadbać o drgania styków przed<br />zwiększaniem zmiennych w niej zawartych.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 12 sty 2014, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T13:56:50+01:00</updated>
<published>2014-01-12T13:56:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64760#p64760</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64760#p64760"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64760#p64760"><![CDATA[
Zapewne lepszym wyjściem będzie zrobienie czegoś takiego?<br /><br />[syntax=c]if (sekundy &gt; 59)<br />{<br />             sekundy = 0;<br />             minuty++;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 sty 2014, o 13:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2014-01-12T11:47:05+01:00</updated>
<published>2014-01-12T11:47:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64717#p64717</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64717#p64717"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64717#p64717"><![CDATA[
Użycie funkcji jak najbardziej, ale to co w jednej jest to już niekoniecznie, <br />dokładnie chodzi mi o tą:<br /><br />[syntax=c]void liczydlo(void)<br />{<br />        if (sekundy==60)<br />        {<br />                sekundy = 0;<br />                minuty++;<br />        }<br />        if (minuty == 60)<br />        {<br />                minuty = 0;<br />                godziny++;<br />        }<br />        if (godziny == 24)<br />        {<br />                godziny = 0;<br />        }<br /> <br />}[/syntax]<br />a bardziej dokładnie chodzi mi o jeden warunek <br />[syntax=c]if (sekundy==60)<br />        {<br />                sekundy = 0;<br />                minuty++;<br />        }[/syntax]<br />Skąd kolega przyjął założenie że przerwanie timera będzie się wykonywać minimalnie 1 raz na obrót pętli while? gdyby wystąpiło 2 razu przerwanie na jednym cyklu pętli while to zmienna &quot;sekundy&quot; mogłaby przyjąć wartość 61 i żaden warunek się nie wykona. Wtedy ta zmienna musiała by być doliczona do 255 i od nowa liczona. Jeśli byś rozbudował program w pętli while to takie coś zdarzało by się częściej. Jeśli program był by docelowo taki jak jest teraz to ok, chociaż wciśnięcie przycisku też może spowalniać pętlę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 12 sty 2014, o 11:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T10:37:16+01:00</updated>
<published>2014-01-12T10:37:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64705#p64705</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64705#p64705"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64705#p64705"><![CDATA[
Dzięki bardzo. O to właśnie mi chodziło <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=889">kaka0204</a> — 12 sty 2014, o 10:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-12T10:25:57+01:00</updated>
<published>2014-01-12T10:25:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64703#p64703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64703#p64703"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64703#p64703"><![CDATA[
Jeśli chodzi o posługiwanie się  funkcjami to jest OK<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 12 sty 2014, o 10:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T09:56:32+01:00</updated>
<published>2014-01-12T09:56:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64701#p64701</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64701#p64701"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64701#p64701"><![CDATA[
Teraz jest ok? Ale bardziej interesuje mnie to, czy dobrze używam funkcji. <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 27-12-2013<br /> *      Author: Damian<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;lcd44780.h&quot;<br /><br />#define key1 (1&lt;&lt;PB0)<br />#define key2 (1&lt;&lt;PB1)<br />#define gora_minuty !(key1 &amp; PINB)<br />#define gora_godziny !(key2 &amp; PINB)<br /><br /><br />volatile uint8_t sekundy;<br />uint8_t minuty;<br />uint8_t godziny;<br /><br />void liczydlo(void);<br />void wyswietl(void);<br />void zmien(void);<br /><br /><br />int main(void)<br />{<br />DDRB &amp;= ~(key1)|(key2);<br />PORTB |= key1 | key2;<br /><br /><br />lcd_init();<br /><br />TCCR1B |= (1&lt;&lt;WGM12);   //tryb CTC<br />TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12);  //preskaler 1024<br />OCR1A= 15625; //załadowanie do OCR1A<br />TIMSK1 |= (1&lt;&lt;OCIE1B);<br /><br />sei();<br /><br /><br />while(1)<br />{<br />lcd_cls();<br />liczydlo();<br />wyswietl();<br />zmien();<br />_delay_ms(50);<br />}<br />}<br /><br />ISR(TIMER1_COMPB_vect)<br />{<br />sekundy++;<br />}<br /><br />void liczydlo(void)<br />{<br />if (sekundy==60)<br />{<br />sekundy = 0;<br />minuty++;<br />}<br />if (minuty == 60)<br />{<br />minuty = 0;<br />godziny++;<br />}<br />if (godziny == 24)<br />{<br />godziny = 0;<br />}<br /><br />}<br /><br />void wyswietl(void)<br />{<br />lcd_locate(0,0);<br /><br />lcd_int(godziny);<br /><br />lcd_str(&quot;:&quot;);<br /><br />if (minuty &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br /><br />lcd_str(&quot;:&quot;);<br /><br />if (sekundy &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br /><br />}<br /><br />void zmien(void)<br />{<br />if (gora_minuty)<br />{<br />minuty++;<br />}<br /><br />if (gora_godziny)<br />{<br />godziny++;<br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 sty 2014, o 09:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-01-12T02:28:42+01:00</updated>
<published>2014-01-12T02:28:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64692#p64692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64692#p64692"/>
<title type="html"><![CDATA[Re: Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64692#p64692"><![CDATA[
Witam<br /><br />Poprzedź zmienne które używasz w przerwaniu i funkcjach<br />specyfikatorem volatile<br />np.<br />[syntax=c]volatile uint8_t sekundy;[/syntax]<br /><br />inaczej możesz mieć kłopoty  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 12 sty 2014, o 02:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-01-12T01:32:32+01:00</updated>
<published>2014-01-12T01:32:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64691#p64691</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64691#p64691"/>
<title type="html"><![CDATA[Funkcje, czy tak jest ok?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5515&amp;p=64691#p64691"><![CDATA[
Witam.<br />Napisałem prosty programik do zegarka. Moje pytanie brzmi- czy dobrze wykorzystuje mechanizm jakim są funkcje, czy robię jakiś karygodny błąd?<br />Oto program<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 27-12-2013<br /> *      Author: Damian<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;lcd44780.h&quot;<br /><br />#define key1 (1&lt;&lt;PB0)<br />#define key2 (1&lt;&lt;PB1)<br />#define gora_minuty !(key1 &amp; PINB)<br />#define gora_godziny !(key2 &amp; PINB)<br /><br /><br />uint8_t sekundy;<br />uint8_t minuty;<br />uint8_t godziny;<br /><br />void liczydlo(void);<br />void wyswietl(void);<br />void zmien(void);<br /><br /><br />int main(void)<br />{<br />DDRB &amp;= ~(key1)|(key2);<br />PORTB |= key1 | key2;<br /><br /><br />lcd_init();<br /><br />TCCR1B |= (1&lt;&lt;WGM12);   //tryb CTC<br />TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12);  //preskaler 1024<br />OCR1A= 15625; //załadowanie do OCR1A<br />TIMSK1 |= (1&lt;&lt;OCIE1B);<br /><br />sei();<br /><br /><br />while(1)<br />{<br />lcd_cls();<br />liczydlo();<br />wyswietl();<br />zmien();<br />_delay_ms(50);<br />}<br />}<br /><br />ISR(TIMER1_COMPB_vect)<br />{<br />sekundy++;<br />}<br /><br />void liczydlo(void)<br />{<br />if (sekundy==60)<br />{<br />sekundy = 0;<br />minuty++;<br />}<br />if (minuty == 60)<br />{<br />minuty = 0;<br />godziny++;<br />}<br />if (godziny == 24)<br />{<br />godziny = 0;<br />}<br /><br />}<br /><br />void wyswietl(void)<br />{<br />lcd_locate(0,0);<br /><br />lcd_int(godziny);<br /><br />lcd_str(&quot;:&quot;);<br /><br />if (minuty &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br /><br />lcd_str(&quot;:&quot;);<br /><br />if (sekundy &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br /><br />}<br /><br />void zmien(void)<br />{<br />if (gora_minuty)<br />{<br />minuty++;<br />}<br /><br />if (gora_godziny)<br />{<br />godziny++;<br />}<br /><br />}[/syntax]<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 sty 2014, o 01:32</p><hr />
]]></content>
</entry>
</feed>