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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-06-30T10:51:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20928&amp;mode</id>
<entry>
<author><name><![CDATA[baryla92]]></name></author>
<updated>2018-06-30T10:51:12+01:00</updated>
<published>2018-06-30T10:51:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209407#p209407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209407#p209407"/>
<title type="html"><![CDATA[Re: Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209407#p209407"><![CDATA[
Wszystko zależy od tego jaką dokładność chcesz uzyskać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Ok już znalazłem rozwiązanie, być może komuś się przyda ta konwersja:<br />[syntax=c]int integer, fractional;<br />integer = (int)xPost2&#91;0&#93;;<br />fractional =1000*(xPost2&#91;0&#93;-integer);[/syntax]<br />Teraz tylko obie wartości wystarczy wysłać prze UART jako integer i po sprawie. Dzięki za podpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3155">baryla92</a> — 30 cze 2018, o 10:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-06-29T21:20:26+01:00</updated>
<published>2018-06-29T21:20:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209397#p209397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209397#p209397"/>
<title type="html"><![CDATA[Re: Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209397#p209397"><![CDATA[
A nie możesz pomnożyć liczb z przecinkiem razy 10^x, tak, żeby pozbyć się przecinka?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 29 cze 2018, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[baryla92]]></name></author>
<updated>2018-06-29T20:18:20+01:00</updated>
<published>2018-06-29T20:18:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209395#p209395</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209395#p209395"/>
<title type="html"><![CDATA[Re: Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209395#p209395"><![CDATA[
W jaki sposób mógłbym podzielić zatem liczbę float <em>xPost2[0]</em>, na dwie wartości integer ? <br /><br />Używanie samych wartości integer w programie akurat u mnie nie jest możliwe gdyż mam zaimplementowane filtry Kalmana na kontrolerze a obliczanie poprawnych wartości estymacji wymaga liczb zmiennoprzecionkowych, musiałbym się sporo napracować aby to konwertować wartości macierzy za każdym razem na int. Co nie jest mi niezbędne a algorytm działa poprawnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3155">baryla92</a> — 29 cze 2018, o 20:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-06-29T19:02:37+01:00</updated>
<published>2018-06-29T19:02:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209391#p209391</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209391#p209391"/>
<title type="html"><![CDATA[Re: Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209391#p209391"><![CDATA[
<div class="quotetitle">baryla92 napisał(a):</div><div class="quotecontent"><br />Czy może ktoś podpowiedzieć jak zastąpić tą funkcje<br /></div><br />w ogóle nie zastępować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> szczególnie w małych prockach  tylko W OGÓLE jej nie używać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zamiast tego działać w oparciu o liczby całkowite a też można otrzymać IDENTYCZNY efekt końcowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tyle że DUŻO szybciej no i przy minimalnym zużyciu pamięci<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 cze 2018, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-06-29T18:46:39+01:00</updated>
<published>2018-06-29T18:46:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209390#p209390</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209390#p209390"/>
<title type="html"><![CDATA[Re: Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209390#p209390"><![CDATA[
<div class="quotetitle">baryla92 napisał(a):</div><div class="quotecontent"><br />gdzie leży błąd<br /></div>błędu tu nie ma. Avr-y nie potrafią operować na liczbach float, ich użycie w kodzie powoduje że kompilator generuje &quot;ciężki&quot; kod który emuluje obsługę typu float.<br />Jak chcesz przesyłać liczby zmiennoprzecinkowe musisz je rozbić na dwie liczby całkowite i w takiej formie je transmitować dodając pomiędzy znak kropki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 29 cze 2018, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[baryla92]]></name></author>
<updated>2018-06-29T18:24:21+01:00</updated>
<published>2018-06-29T18:24:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209389#p209389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209389#p209389"/>
<title type="html"><![CDATA[Program memory usage]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20928&amp;p=209389#p209389"><![CDATA[
Witam, piszę gdyż mam problem z przepełnieniem pamięci w procesorze.<br />Przed dodaniem funkcji <em>USART_Transmit_float</em> rozmiar pamięci wynosi.<br />Program Memory Usage :6986 bytes   85,3 % Full<br />Data Memory Usage :839 bytes   81,9 % Full<br /><br />Natomiast po dodaniu funkcji następuje przepełnienie:<br />region `text' overflowed by 406 bytes<br /><br />Sprawdziłem, że największy problem tworzy funkcja dtostrf, po jej implementacji program memory usage rośnie o 20%.<br />Czy może ktoś podpowiedzieć jak zastąpić tą funkcje lub wskazać gdzie leży błąd aby zmniejszyć zużycie pamięci ?<br /><br />Implementacja funkcji w main:<br />[syntax=c]USART_Transmit_float(xPost2&#91;0&#93;,4,3);[/syntax]<br /><br />A tu poniżej kody powiązanych funkcji:<br />[syntax=c]void USART_Transmit_float(float data, uint8_t width, uint8_t precision)<br />{<br />char buf&#91;5&#93;;<br />dtostrf(data,width,precision,buf);<br />USART_Transmit_str(buf);<br />}<br /><br />void USART_Transmit_str(char *data)<br />{<br />uint8_t len;<br />uint8_t i=0;<br /><br />len=strlen(data);<br />for(i=0;i&lt;len;i++) {<br />USART_Transmit(data&#91;i&#93;);<br />}<br />}<br /><br />void USART_Transmit( unsigned char data )<br />{<br />/* Wait for empty transmit buffer */<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />/* Put data into buffer, sends the data */<br />UDR = data;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3155">baryla92</a> — 29 cze 2018, o 18:24</p><hr />
]]></content>
</entry>
</feed>