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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-11-13T20:23:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=21558&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-11-13T20:23:16+01:00</updated>
<published>2018-11-13T20:23:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213709#p213709</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213709#p213709"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213709#p213709"><![CDATA[
<div class="quotetitle">jez2000 napisał(a):</div><div class="quotecontent"><br />te const mogę zignorować jeżeli np bym porównywał dwa bufory<br /></div><br />To jest pytanie czy stwierdzenie ?<br /><br />Jeśli pytanie to TAK - jeśli stwierdzenie to pewnie że tak można - tylko coś skopałeś w definicjach tych buforów. Toż napisz to poprawnie np: <br /><br />[syntax=c]char buf1&#91;5&#93;;<br />char buf2&#91;5&#93;;[/syntax]<br /><br />wtedy możesz porównać<br /><br />[syntax=c]if( !strcmp( buf1, buf2) ) PORTA = 1;[/syntax]<br /><br />i zajrzyj wyżej do mojego opisu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 lis 2018, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-11-13T20:18:19+01:00</updated>
<published>2018-11-13T20:18:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213707#p213707</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213707#p213707"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213707#p213707"><![CDATA[
No tak jest np w funkcji strcmp operującej na RAM<br /><br />[syntax=c]int  strcmp (const char *, const char *) __ATTR_PURE__[/syntax]<br /><br />te const mogę zignorować jeżeli np bym porównywał dwa bufory<br /> [syntax=c]char buf1&#91;&#93;<br />char buf2<br /><br />strcmp (buf1, buf2)&#91;&#93;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 13 lis 2018, o 20:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-11-13T20:17:50+01:00</updated>
<published>2018-11-13T20:17:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213706#p213706</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213706#p213706"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213706#p213706"><![CDATA[
Tak faktycznie specyfikator const nie zawsze wskazuje na to czy ma on być z Flash czy RAM<br /><br />ale no przecież są opisy do funkcji - nawet w pliku nagłówkowym:<br /><br /><img src="https://obrazkiforum.atnel.pl/54/2fe00f6eb3a781b2d4e31c78f4720948.png" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 lis 2018, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-11-13T19:47:39+01:00</updated>
<published>2018-11-13T19:47:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213702#p213702</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213702#p213702"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213702#p213702"><![CDATA[
Czyli w fukcjach z _P pierwszy argument jest z pamięci RAM a drógi z Flash, zródłowy to ten drugi?? (już znalazłem w avr-libc więc OK)<br /><br />Nie rozumię dlaczego obie funkcje jako argument wymagają wskaźnika na stałą typu char. Czemu ta stała skoro podajemy argument z RAM i nie musi to być stała.<br /><br />[syntax=c]extern int strcmp(const char *, const char *) __ATTR_PURE__;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 13 lis 2018, o 19:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-11-12T22:33:56+01:00</updated>
<published>2018-11-12T22:33:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213669#p213669</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213669#p213669"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213669#p213669"><![CDATA[
<div class="quotetitle">jez2000 napisał(a):</div><div class="quotecontent"><br />wiem (lub się mylę) że jedne działają na pamięci ram a inne odczytują z pamięci flash ale nie wiem do końca o co chodzi.<br /></div><br />Nie mylisz się, a nie wiesz dokładnie bo pewnie nie doczytałeś w Bluebooku (a masz go przecież jak widzę) .... że adresowanie pamięci RAM, Flash i EEPROM jest w tym samym zakresie adresowym, a zatem dostęp programowo musi być inaczej zorganizowany do każdej z nich.<br /><br />I właśnie po to są te funkcje z tzw &quot;suffix'em&quot; <strong><span style="color: #0080FF"><span style="font-size: 200%; line-height: normal">_P</span></span></strong> .... Wtedy też wskaźnik do źródłowych danych musi pochodzić z pamięci Flash a nie RAM<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />krótko mówiąc jeśli masz dwa stringi<br /><br />[syntax=c]char napis_ram&#91;&#93; = &quot;Napis w pamięci RAM&quot;;<br /><br />const char napis_flash&#91;&#93; PROGMEM = &quot;Tekst w pamięci FLASH&quot;;[/syntax]<br /><br /><br />to jeśli masz jakiś bufor w pamięci RAM<br /><br />[syntax=c]char bufor&#91;100&#93;;[/syntax]<br /><br />i chcesz do niego skopiować raz jeden napis z RAM a później z Flash to musisz użyć różnych funkcji, np:<br /><br />[syntax=c]memcpy( bufor, napis_ram, strlen( napis_ram ) ); // skopiowanie do bufora napisu ze stringa w RAM<br /><br />memcpy_P( bufor, napis_flash, strlen_P( napis_flash ) ); // skopiowanie do bufora napisu ze stringa we Flashu[/syntax]<br /><br />zauważ, że nawet funkcja strlen, musiała zostać zaopatrzona w suffix '<strong><span style="color: #0080FF">_P</span></strong>' <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=54">mirekk36</a> — 12 lis 2018, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danny]]></name></author>
<updated>2018-11-12T21:44:56+01:00</updated>
<published>2018-11-12T21:44:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213663#p213663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213663#p213663"/>
<title type="html"><![CDATA[Re: Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213663#p213663"><![CDATA[
W skrócie te z _P operują na argumentach z pamięci programu (pamięci flash), te bez _P na argumentach w pamięci RAM<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1505">danny</a> — 12 lis 2018, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2018-11-12T20:25:51+01:00</updated>
<published>2018-11-12T20:25:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213654#p213654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213654#p213654"/>
<title type="html"><![CDATA[Funkcje z _P na końcu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21558&amp;p=213654#p213654"><![CDATA[
Cześć.<br /><br />Jak to jest z tymi funkcjami z _P na końcu np strcmp i strcmp_P<br /><br />[syntax=c]extern int strcmp(const char *, const char *) __ATTR_PURE__;[/syntax]<br />[syntax=c]extern int strcmp_P(const char *, const char *) __ATTR_PURE__;[/syntax]<br /><br />Obie wymagają tych samych argumentów, wiem (lub się mylę) że jedne działają na pamięci ram a inne odczytują z pamięci flash ale nie wiem do końca o co chodzi.<br /><br />pozdrawiam<br />Dawid<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 12 lis 2018, o 20:25</p><hr />
]]></content>
</entry>
</feed>