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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13094&amp;mode</id>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-10-04T09:44:46+01:00</updated>
<published>2015-10-04T09:44:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141373#p141373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141373#p141373"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141373#p141373"><![CDATA[
<div class="codetitle"><b>Code:</b></div><div class="codecontent">00000080 &lt;__vector_24&gt;:<br />  80:   1f 92          push   r1<br />  82:   0f 92          push   r0<br />  84:   0f b6          in   r0, 0x3f   ; 63<br />  86:   0f 92          push   r0<br />  88:   11 24          eor   r1, r1<br />  8a:   2f 93          push   r18<br />  8c:   3f 93          push   r19<br />  8e:   4f 93          push   r20<br />  90:   5f 93          push   r21<br />  92:   6f 93          push   r22<br />  94:   7f 93          push   r23<br />  96:   8f 93          push   r24<br />  98:   9f 93          push   r25<br />  9a:   af 93          push   r26<br />  9c:   bf 93          push   r27<br />  9e:   ef 93          push   r30<br />  a0:   ff 93          push   r31<br />  a2:   ec df          rcall   .-40        ; 0x7c &lt;ledblink&gt;<br />  a4:   ff 91          pop   r31<br />  a6:   ef 91          pop   r30<br />  a8:   bf 91          pop   r27<br />  aa:   af 91          pop   r26<br />  ac:   9f 91          pop   r25<br />  ae:   8f 91          pop   r24<br />  b0:   7f 91          pop   r23<br />  b2:   6f 91          pop   r22<br />  b4:   5f 91          pop   r21<br />  b6:   4f 91          pop   r20<br />  b8:   3f 91          pop   r19<br />  ba:   2f 91          pop   r18<br />  bc:   0f 90          pop   r0<br />  be:   0f be          out   0x3f, r0   ; 63<br />  c0:   0f 90          pop   r0<br />  c2:   1f 90          pop   r1<br />  c4:   18 95          reti<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 4 paź 2015, o 09:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-10-03T20:58:52+01:00</updated>
<published>2015-10-03T20:58:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141347#p141347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141347#p141347"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141347#p141347"><![CDATA[
Spłaszczanie kodu wychodzi ładnie jedynie w obrębie funkcji głównej oraz kod niezależny od ABI .<br />Wystarczy jedno odwołanie do jakiejkolwiek funkcji w przerwaniu i kompilator zrzuca  &quot;R0, R1 i R18 do R31&quot; mimo że np. żaden z nich nie zostanie użyty, i to ma być spłaszczanie ? <br /><br />1. GCC 4.8.1 ma zabugowane -flto, nie wiem czy w nowszych działa. A -fwhole-program to nie jest coś co się używa tak łatwo jak np. -O2<br />2. callbacki da się używać nawet bez żadnych rejestracji. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />3. Zastanówmy się raczej do czego właściwie dążył autor wątku z bezpośrednim doklejaniem bibliotek do innych i do czego by to ostatecznie doprowadziło.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Pomijam już, sam fakt, że podlinkowywanie innych modułów do bibliotek LCD czy UART może kompletnie nie mieć sensu, bo zwykle robi się to inaczej, aż ciekaw jestem po co ci podlinkować tę bibliotekę do bibliotek<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 3 paź 2015, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-10-01T21:52:59+01:00</updated>
<published>2015-10-01T21:52:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141202#p141202</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141202#p141202"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141202#p141202"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">jnk0le napisał(a):</div><div class="quotecontent">..Najgorsze co można zrobić to wywołanie zewnętrznej funkcji w przerwaniu.<br /></div><br />??? że jak???<br /></div><br /><br />Zobacz sobie co się dzieje w pliku .lss gdy w przerwaniu mamy bezpośrednio wklepany kod (np. miganie ledem), a co kiedy wywołujemy równoznaczną zewnętrzną funkcję (najlepiej żeby jeszcze pochodziła z innego pliku .c)<br /><br /><!-- m --><a class="postlink" href="http://www.elektroda.pl/rtvforum/viewtopic.php?p=14930328#14930328" >http://www.elektroda.pl/rtvforum/viewto ... 8#14930328</a><!-- m --><br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">jnk0le napisał(a):</div><div class="quotecontent">Sytuacja gdzie jakieś konkretne biblioteki wymagają includowania jakiejś innej zupełnie z nimi nie związanej nie powinna mieć miejsca. Jeśli już jakieś zewnętrze funkcje mają być wykonywane to przez callbacki.<br /></div><br />??? jeszcze raz ... <br />Albo nie rozumiem skrótu myślowego albo ... to bzdury jakieś...</div><br />Osoba A dostarcza bibliotekę A', osoba B - B'; C żeby skorzystać z funkcjonalności B' musiał zaincludować B' w nagłówku A' co oznacza że osoba A kompletnie nie przemyślała konstrukcji swojej biblioteki. A od takiego includowania mamy krótką drogę do zależności kołowych.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zobrazuję o co mi chodzi. Do głównego programu importuję bibliotekę #include &quot;Math_Conv.h&quot; zawarte w niej procedury i funkcje będę chciał używać z innych importowanych bibliotek programu głównego np: #include &quot;Lcd.h&quot; i np #include &quot;Uart.h&quot;.<br /></div><br /><br />Inna sytuacja jest gdy biblioteki mają jakąś ściśle określoną hierarchię względem siebie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 1 paź 2015, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-10-01T20:40:14+01:00</updated>
<published>2015-10-01T20:40:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141196#p141196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141196#p141196"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141196#p141196"><![CDATA[
plików .c nie includuje się nigdy gdy nie kombinujesz z flagami '-fwhole-program'<br /><br />a .h muszą być zawsze zabezpieczone przez coś takiego:<br />[syntax=cpp]#ifndef _BIBLIOTEKA_KTORA_JEST_KOMPILOWANA RAZ NA PROJEKT<br />#define  _BIBLIOTEKA_KTORA_JEST_KOMPILOWANA RAZ NA PROJEKT<br />//...//<br />#endif[/syntax]<br /><br />A rozrastanie się kodu wynikowego w przypadku dzielenia źródeł na oddzielne pliki wynika z tego że gcc kompiluje każdy plik .c w oddzielnej jednostce kompilacji i nie wie że np. procedura foo() jest używana tylko raz z argumentem znanym w czasie kompilacji i nie może zostać właśnie przez to zoptymalizowana. Najgorsze co można zrobić to wywołanie zewnętrznej funkcji w przerwaniu.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 7 minutach ]</span></strong><br /><br />Sytuacja gdzie jakieś konkretne biblioteki wymagają includowania jakiejś innej zupełnie z nimi nie związanej nie powinna mieć miejsca. Jeśli już jakieś zewnętrze funkcje mają być wykonywane to przez callbacki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 1 paź 2015, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-01T10:58:00+01:00</updated>
<published>2015-10-01T10:58:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141157#p141157</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141157#p141157"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141157#p141157"><![CDATA[
<div class="quotetitle">zbynex napisał(a):</div><div class="quotecontent"><br />Jeżeli importujemy bibliotekę &quot;C&quot; do obu bibliotek &quot;A&quot; i &quot;B&quot; kod wynikowy potężnie się rozrasta.<br /></div><br />Nic się nie rozrasta ... jeśli się wszystko prawidłowo inkluduje to jedna biblioteka jest dołączana TYLKO JEDEN RAZ do całego projektu ..... Więc jeśli tobie się rozrasta to :<br /><br />1. albo w jakiś przedziwny sposób inkludujesz pliki źródłowe *.c .... zamiast tylko *.h<br />2. albo w jakiś dziwny sposób definiujesz i deklarujesz zmienne, że w każdym pliku ci się tworzą - jak pisałeś wyżej. A gdyby ci się nawet tworzyły to kompilator by krzyczał i tak stadem warningów i błędów że masz powielone definicje jakichś tam zmiennych i kompilacja by ci nie przeszła<br /><br />więc zrozum .... albo odniesiesz się do jakiejś konkretnej sytuacji np pokażesz fragmenty kodu jak ty to robisz to wtedy będzie można coś pomóc ... bo na 100% robisz coś bardzo bardzo źle<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 paź 2015, o 10:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2015-10-01T10:21:12+01:00</updated>
<published>2015-10-01T10:21:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141154#p141154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141154#p141154"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141154#p141154"><![CDATA[
Widzę że się nie do końca zrozumieliśmy ale to moja wina bo nie potrzebnie użyłem jako przykładu nazw bibliotek LCD i UART a powinienem użyć określenia biblioteka &quot;A&quot; i biblioteka &quot;B&quot; oraz biblioteka która ma być widoczna w obu wcześniejszych &quot;C&quot;. Co do deklaracji i definicji błąd wynikł z pośpiechu w pisaniu. Opisany problem nie ma nic wspólnego z Pana bibliotekami z BB a wynika ze specyfiki moich projektów a konkretnie z uniwersalności szybkiego dołączania ich do kolejnych projektów. Biblioteka &quot;C&quot; zawiera dużo  procedur arytmetycznych i funkcji które są używane praktycznie wszystkie w bibliotekach &quot;A&quot; i &quot;B&quot;. Jeżeli importujemy bibliotekę &quot;C&quot; do obu bibliotek &quot;A&quot; i &quot;B&quot; kod wynikowy potężnie się rozrasta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 1 paź 2015, o 10:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-01T09:54:34+01:00</updated>
<published>2015-10-01T09:54:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141151#p141151</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141151#p141151"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141151#p141151"><![CDATA[
Bo coś STRASZNIE ale to strasznie kręcisz .... robisz wręcz jakąś masakrę ...<br /><br />Pomijam już, sam fakt, że podlinkowywanie innych modułów do bibliotek LCD czy UART może kompletnie nie mieć sensu, bo zwykle robi się to inaczej, aż ciekaw jestem po co ci podlinkować tę bibliotekę do bibliotek - (mógłbym się prawie założyć- że już na tym etapie popełniasz błąd jeśli chodzi o samą ideę tworzenia projektu) .... To jeszcze na dodatek nie rozumiesz całkowicie co to znaczy DEKLARACJA a co DEFINICJA zmiennych ...<br /><br />Masz Bluebooka ? Bo w nim dokładnie opisuję nie tylko różnice pomiędzy tak PODSTAWOWYMI pojęciami w C jak Deklaracja i Definicja (bez zrozumienia których) każdy wciąż kręci się jak bączek w kółko - z takimi problemami jakie ty teraz dokładnie opisujesz - to jeszcze w tej książce opisuję zasady jak się dzieli projekt na pliki - jak i co w jakiej kolejności się inkluduje itp itd<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 paź 2015, o 09:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2015-10-01T08:53:26+01:00</updated>
<published>2015-10-01T08:53:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141146#p141146</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141146#p141146"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141146#p141146"><![CDATA[
Importowanie jej jest trochę problematyczne ponieważ w tej bibliotece muszę mieć zadeklarowaną tablicę static char 32 znakową i jak importuję tą bibliotekę do kilku innych to mi za każdym importem biblioteki tworzy nową tablicę i automatycznie zmniejsza się RAM dodatkowo każdy import korzysta ze swojej tablicy a potrzeba jest aby tablica była jedna. Wiem że można tablicę zadeklarować w głównym programie i problem rozwiązany ale trzeba za każdym razem gdy ją importujemy w innym programie pamiętać aby dodać tablicę w głównym programie. Może jest jakiś sposób aby obejść ten powiedzmy problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 1 paź 2015, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-01T06:57:03+01:00</updated>
<published>2015-10-01T06:57:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141140#p141140</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141140#p141140"/>
<title type="html"><![CDATA[Re: Moja biblioteka widoczna dla wszystkich importowanych pl]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141140#p141140"><![CDATA[
Nie ma żadnego extern, za to jest <br /><br />#include i tym się musisz posłużyć w każdym z plików gdzie chcesz mieć ją dostępną<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 paź 2015, o 06:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zbynex]]></name></author>
<updated>2015-10-01T06:32:14+01:00</updated>
<published>2015-10-01T06:32:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141136#p141136</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141136#p141136"/>
<title type="html"><![CDATA[Moja biblioteka widoczna dla wszystkich importowanych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13094&amp;p=141136#p141136"><![CDATA[
Środowisko Eclipse i AVRToolchain<br /><br />Witam<br /><br />Chciałbym zapytać czy jest jakiś sposób zaimportowania mojej biblioteki tak aby była widoczna z wszystkich pozostałych zaimportowanych bibliotek.<br /><br />Zobrazuję o co mi chodzi. Do głównego programu importuję bibliotekę #include &quot;Math_Conv.h&quot; zawarte w niej procedury i funkcje będę chciał używać z innych importowanych bibliotek programu głównego np: #include &quot;Lcd.h&quot; i np #include &quot;Uart.h&quot;.<br /><br />I teraz jest problem jak uzyskać funkcjonalność bibliotek z &quot;Math_Conv.h&quot; tak aby były widoczne z bibliotek &quot;Lcd.h&quot; i &quot;Uart.h&quot; coś w stylu Extern dla procedur. <br />Czy konieczne jest importowanie biblioteki &quot;Math_Conv.h&quot; do każdej z pozostałych bibliotek ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11125">zbynex</a> — 1 paź 2015, o 06:32</p><hr />
]]></content>
</entry>
</feed>