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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-30T17:04:25+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13395&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-30T17:04:25+01:00</updated>
<published>2015-10-30T17:04:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143819#p143819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143819#p143819"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143819#p143819"><![CDATA[
<div class="quotetitle">drewpol napisał(a):</div><div class="quotecontent"><br />Kiedy robię tak jak Pan mówi Panie Mirku dostaję kolejne błędy.<br /></div><br />a jak ty to robisz ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> pewnie źle <br /><br />Pokaż kod .... chyba nie robisz tego tak przypadkiem co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]pwm1 = GAMMAR(i)++;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 paź 2015, o 17:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2015-10-30T16:58:01+01:00</updated>
<published>2015-10-30T16:58:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143818#p143818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143818#p143818"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143818#p143818"><![CDATA[
Nie wiedziałem, że w tym przypadku jest to traktowane jako funkcja. Kiedy robię tak jak Pan mówi Panie Mirku dostaję kolejne błędy. Więc zostawię po prostu to makro w pliku .c i będzie traktowane jako funkcja lub stworze sobie po prostu funkcję, która będzie pełniła tą samą rolę. Myślę, że traktowanie tego makra jako funkcji nie będzie miało jakiś poważnych konsekwencji ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 30 paź 2015, o 16:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-30T16:33:41+01:00</updated>
<published>2015-10-30T16:33:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143815#p143815</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143815#p143815"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143815#p143815"><![CDATA[
Bo teraz panie to próbujesz wykorzystywać tę makrodefinicję nie jako makro ale jako funkcję. Dlatego kompilator nie widzi ciała funkcji w pliku *.c i wymiotuje warningami <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />wywal te ++ i -- poza nawiasy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i wtedy makro będzie działać jak makro a nie funkcja<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 paź 2015, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2015-10-30T16:19:19+01:00</updated>
<published>2015-10-30T16:19:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143814#p143814</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143814#p143814"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143814#p143814"><![CDATA[
Ok, rozumiem. Utworzyłem sobie taka funkcję do zmiany pwm:<br />[syntax=c]void Red_LED(void)<br />{<br />if(!flag &amp;&amp; !dioda)<br />{<br />if(GAMMAR(i) &lt; 255) pwm1 = GAMMAR(i++);<br />else flag = 1;<br />}<br />else if(flag &amp;&amp; !dioda)<br />{<br />if(GAMMAR(i) &gt; 0) pwm1 = GAMMAR(i--);<br />else<br />{<br />flag = 0;<br />dioda = 1;<br />}<br />}<br /><br />}[/syntax]<br />Teraz pojawiaja się pytanie:<br /><br />Kiedy makrodefinicja GAMMAR(a) znajduje się w pliku nagłówkowym .h to pojawia się warning taki jak poniżej:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">warning: implicit declaration of function 'GAMMAR' &#91;-Wimplicit-function-declaration&#93;<br />   if(GAMMAR(i) &lt; 255) pwm1 = GAMMAR(i++);</div><br />Kiedy przeniosę makrodefinicje do pliku .c z z tą funkcją to wszystko jest ok. Dlaczego tak jest i w jaki sposób mogę skompilować to bez warningu z makrodefinicją w pliku nagłówkowym?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 30 paź 2015, o 16:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-30T14:42:36+01:00</updated>
<published>2015-10-30T14:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143804#p143804</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143804#p143804"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143804#p143804"><![CDATA[
Nie sprawdzisz - w C dla danych binarnych podaje się długość tablicy jako argument funkcji. Natomiast dla danych ASCII (czyli stringów oczywiście się sprawdzi koniec <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo końcem jest zawsze zero )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 paź 2015, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2015-10-30T13:52:59+01:00</updated>
<published>2015-10-30T13:52:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143797#p143797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143797#p143797"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143797#p143797"><![CDATA[
Dziękuję bardzo za odpowiedź. Mam jeszcze pytanie. W jaki sposób mogę sprawdzać czy liczby w tablicy się skończyły? Napisałem coś takiego, że jeśli wskaźnik jest większy od 255 czyli maksymalnej wartości w tej tablicy to ma ustawić flagę i wtedy nie wykona się już zmiana pwm:<br />[syntax=c]if(!flag &amp;&amp; !dioda)<br />{<br />pwm1 = korekcja_pwm(wsk++);<br />if(*wsk &gt;255) flag = 1;<br />}[/syntax]<br />Lecz niestety dioda rozjaśnia się od 0 do maksymalnej wartości i zaczyna bardzo szybko migać. Czy powodem tego jest jakiś błąd w powyższym kodzie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 30 paź 2015, o 13:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-30T10:46:33+01:00</updated>
<published>2015-10-30T10:46:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143780#p143780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143780#p143780"/>
<title type="html"><![CDATA[Re: Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143780#p143780"><![CDATA[
<div class="quotetitle">drewpol napisał(a):</div><div class="quotecontent"><br />tab++<br /></div><br />Poczytaj sobie o zmiennych lokalnych w funkcji, jak myślisz co tutaj da to ++ ? .... Co to ma zrobić ? To działanie na zmiennej lokalnej, więc po wyjściu z funkcji Quniec. Dawaj to ++ do argumentu, który przekazujesz do funkcji a musi on być wtedy wskaźnikiem na tą tablicę, a nie nazwą tablicy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 paź 2015, o 10:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2015-10-30T10:37:35+01:00</updated>
<published>2015-10-30T10:37:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143778#p143778</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143778#p143778"/>
<title type="html"><![CDATA[Zwracanie wartości przez funkcję.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13395&amp;p=143778#p143778"><![CDATA[
Witam. Piszę sobie taki kod do zabawy z PWM, gdzie w głównym pliku mam:<br />[syntax=c]const uint8_t gamma_correctionR&#91;&#93; PROGMEM = {<br />  0,  1,  1,  1,  2,  4,  6,  8, 11, 14, 18, 22, 27, 32, 38, 45, 52, 61,<br /> 69, 79, 89,100,112,124,138,152,167,183,199,217,236,255<br />};[/syntax]<br />i gdzieś dalej chce przekazać znak z tej tablicy do zmiennej o nazwie pwm1 w jakiejś pętli:<br />[syntax=c]const uint8_t *tab;<br />tab = gamma_correctionR;<br />pwm1 = pgm_read_byte(tab++);[/syntax]<br />I w ten sposób wszystko działa ok, lampka się rozjaśnia. Ale kiedy próbuje to &quot;ubrać&quot; w funkcję pojawia się problem:<br />w main.c:<br />[syntax=c]pwm1 = korekcja_pwm(gamma_correctionR);[/syntax]<br />pozniej w pliku ogolne.c :<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br />uint8_t korekcja_pwm(const uint8_t *tab)<br />{<br />return pgm_read_byte(tab++);<br />}[/syntax]<br />oraz plik nagłówkowy ogolne.h:<br />[syntax=c]#ifndef OGOLNE_H_<br />#define OGOLNE_H_<br /><br />uint8_t korekcja_pwm(const uint8_t *tab);<br /><br />#endif /* OGOLNE_H_ */[/syntax]<br /><br />Ma ktoś pomysł dlaczego w pierwszym przypadku wszystko działa ok, a w drugim nic się nie dzieje tak jak by do zmiennej pwm1 nie była zwracana żadna wartość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 30 paź 2015, o 10:37</p><hr />
]]></content>
</entry>
</feed>