<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=12389&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-20T17:45:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=12389&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-20T17:45:23+01:00</updated>
<published>2015-07-20T17:45:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135020#p135020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135020#p135020"/>
<title type="html"><![CDATA[Re: LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135020#p135020"><![CDATA[
<div class="quotetitle">moscow18-1990 napisał(a):</div><div class="quotecontent"><br />Chodzi mi o przekazywanie argumentu funkcji i o to czy przy takim wywoływaniu jest tworzona &quot;kopia kopii&quot; zmiennej.<br /></div><br />Wziąwszy to jako pytanie to podobnie jak w Bluebooku - odpowiem - TAK jeśli przekazujesz &quot;przez wartość&quot; a nie przez wskaźnik to oczywiście, że tworzy się kopia zmiennej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie ma innego wyjścia - a jak się tworzy i gdzie się tworzy ? ... no właśnie warto zajrzeć do BB tam to DOKŁADNIE opisuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lip 2015, o 17:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-07-20T16:58:33+01:00</updated>
<published>2015-07-20T16:58:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135018#p135018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135018#p135018"/>
<title type="html"><![CDATA[Re: LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135018#p135018"><![CDATA[
Tak czułem że trochę &quot;zamotam&quot; ale nic... Tak posiadam bluebooka doczytam jeszcze o tych funkcjach bo chcę to bardzo dobrze zrozumieć...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 20 lip 2015, o 16:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-20T16:41:10+01:00</updated>
<published>2015-07-20T16:41:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135017#p135017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135017#p135017"/>
<title type="html"><![CDATA[Re: LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135017#p135017"><![CDATA[
sorki ale uprość może to o co pytasz do jakiegoś symbolicznego kodu a nie tylu linii akurat o LCD bo teraz to sorki - już nie za bardzo wiem o co chodzi ?<br /><br />Przy okazji zapytam tylko czy może masz Bluebooka? bo jeśli tak to masz tam opisany cykl życia funkcji i DOKŁADNIE co się dzieje z argumentami itp<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lip 2015, o 16:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-07-20T12:18:04+01:00</updated>
<published>2015-07-20T12:18:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135002#p135002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135002#p135002"/>
<title type="html"><![CDATA[Re: LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=135002#p135002"><![CDATA[
Chodzi mi o przekazywanie argumentu funkcji i o to czy przy takim wywoływaniu jest tworzona &quot;kopia kopii&quot; zmiennej. Mianowicie: <br /><br />Tutaj w funkcji odpowiadającej za inicjalizację wywołuję Wczytywanie_komendy i argumentem jest 0x04:<br /><br />[syntax=c]void LCD_inicjalizacja()<br />{<br />// tu trzba skorzystać z funkcji LCD_SendChar<br />// żeby przesłać komendę RS w stanie niskim<br /><br />LCD_DDR = (0xF0)|(1&lt;&lt;LCD_RS)|1&lt;&lt;(LCD_EN);<br />LCD_PORT = 0; <br /><br /><br />        Wczytywanie_komendy( 0x04 ); // 0b0000 0110<br />//okreslenie trybu pracy kursora/okna wyswietlacza<br />//na D2 domyslnie 1<br />//na D1 I/D gdy równe 1 przesuwa się w prawo gdy zero to w lewo<br />//na D0 jest S ale zostało już ustawione wczeniej w przesuwaniu kursora<br />}[/syntax]<br /><br />Następnie przekazuję &quot;kopie&quot; do funkcji Wczytywanie_komendy<br /><br />[syntax=c]void Wczytywanie_komendy(uint8_t komenda)<br />{<br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS); <br />LCD_Wysylanie_znaku_na_raty(komenda); <br />}[/syntax]<br /><br />i czy w wyniku dalszych wywołań powstają kolejne &quot;kopie&quot; zmiennych?<br /><br />A druga sprawa to przekazywanie argumentu... w ciele funkcji Wczytywanie_komendy  nie mam zdefiniowanych żadnych zmiennych i mam tylko ustawianie stanu niskiego na RS i wywołanie LCD_Wysylanie_znaku_na_raty i mianowicie moje pytanie brzmi czy argument formalny funkcji Wczytywanie_komendy  czyli :<br /><br />[syntax=c](uint8_t komenda)[/syntax]<br /><br />jest tak jakby &quot;automatycznie&quot; przekazywany każdej nowo wywoływanej funkcji znajdującej się w ciele funkcji Wczytywanie_komendy?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 20 lip 2015, o 12:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-20T11:36:48+01:00</updated>
<published>2015-07-20T11:36:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134998#p134998</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134998#p134998"/>
<title type="html"><![CDATA[Re: LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134998#p134998"><![CDATA[
No ale gdybyś mógł bardziej precyzyjnie wyjaśnić czego nie rozumiesz ? toż język C oparty jest na funkcjach i wywołuje się bardzo często jakąś funkcję wewnątrz innej ... ba nawet bardziej jest to pozagnieżdżane <br /><br />[syntax=c]void fun3() {<br /><br />   fun4();<br /><br />}<br /><br />void fun2() {<br /><br />    fun3();<br /><br />}<br /><br /><br />void fun1() {<br /><br />    fun2();<br /><br />}[/syntax]<br /><br />w czym ty tutaj upatrujesz problemów ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ot jedna funkcja wywołuje inną funkcję, a kolejna wywołuje jeszcze inną - w czym kłopot jeśli chodzi o zrozumienie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 lip 2015, o 11:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-07-20T11:18:27+01:00</updated>
<published>2015-07-20T11:18:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134995#p134995</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134995#p134995"/>
<title type="html"><![CDATA[LCD kod - &quot;funkcja w funkcji&quot; pytanie początkującego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12389&amp;p=134995#p134995"><![CDATA[
Dzień Dobry. Mam pytanie odnośnie programu do obsługi LCD. Program który przedstawię jest stopniowo rozbudowywany w oparciu o niebieską książkę i materiały dostępne w internecie... ale cały dotychczasowy program jak i zasada działania LCD jest dla mnie jasna poza jednym małym szczegółem a mianowicie:<br /><br />lcd.c:<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;string.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include&quot;lcd.h&quot;<br /><br />// asm volatile (&quot;nop&quot;); // co to?<br /><br />void LCD_Wysylanie_znaku_na_raty(uint8_t bajt)<br />{<br />// _BV(LCD_EN) odpowiada 1&lt;&lt;LCD_EN<br /><br />LCD_PORT |= (1&lt;&lt;LCD_EN);<br />        LCD_PORT = (bajt &amp; 0xF0)|(LCD_PORT &amp; 0x0F);<br />        LCD_PORT &amp;= ~(1&lt;&lt;LCD_EN);<br /><br />//asm volatile(&quot;nop&quot;); // bez tego działa<br /><br />LCD_PORT |= (1&lt;&lt;LCD_EN); <br />LCD_PORT =((bajt &amp; 0x0F)&lt;&lt;4)|(LCD_PORT &amp; 0x0F);<br />        LCD_PORT &amp;= ~(1&lt;&lt;LCD_EN); <br /><br />_delay_us(40); // bez tego pojawiają sie kolejne litery H, WAZNE<br /><br />// odczekanie niezbędnej długości czasu na potwierdzenie wprowadzenia danych<br /><br />}<br /><br />void Wczytywanie_komendy(uint8_t komenda)<br />{<br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS); <br />LCD_Wysylanie_znaku_na_raty(komenda); <br /><br />}<br /><br />void LCD_czyszczenie_wyswietlacza()<br />{<br /><br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS); <br /><br />LCD_Wysylanie_znaku_na_raty(1); <br /><br />LCD_PORT |= (1&lt;&lt;LCD_RS);<br /><br />_delay_ms(1.64); // po co? WAZNE<br />}<br /><br />void LCD_inicjalizacja()<br />{<br /><br />LCD_DDR = (0xF0)|(1&lt;&lt;LCD_RS)|1&lt;&lt;(LCD_EN);<br />LCD_PORT = 0; <br /><br /><br />        Wczytywanie_komendy( 0x04 );<br /><br /><br />Wczytywanie_komendy( 0x0C ); <br /><br /><br />Wczytywanie_komendy( 0x16 ); <br /><br /><br />Wczytywanie_komendy( 0x28 ); <br /><br /><br />LCD_czyszczenie_wyswietlacza();<br />}<br /><br />// Funkcja do wysyłania ciągu znaków<br /><br />/*void Ciag_znakow()<br />{<br /><br /><br />}*/[/syntax]<br /><br /><br />chodzi mi o tą część:<br />[syntax=c]void Wczytywanie_komendy(uint8_t komenda)<br />{<br />LCD_PORT &amp;= ~(1&lt;&lt;LCD_RS); <br />LCD_Wysylanie_znaku_na_raty(komenda); <br /><br />}[/syntax]<br /><br />a dokładnie o tą:<br />[syntax=c]LCD_Wysylanie_znaku_na_raty(komenda);[/syntax]<br /><br />a mianowicie jest tutaj wywołana tak jakby funkcja w funkcji i nie za bardzo rozumiem na jakiej zasadzie to się odbywa... Czy byłby w stanie ktoś objaśnić mi dokładnie jak to działa. Czuję że w dalszej rozbudowie programu będę musiał użyć podobnego mechanizmu ale chciałbym to dokładnie zrozumieć więc proszę o radę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 20 lip 2015, o 11:18</p><hr />
]]></content>
</entry>
</feed>