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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-03T22:36:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14714&amp;mode</id>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2016-03-03T22:36:33+01:00</updated>
<published>2016-03-03T22:36:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155391#p155391</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155391#p155391"/>
<title type="html"><![CDATA[Re: Rozmiar kodu programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155391#p155391"><![CDATA[
Poczytaj sobie o liczbach stałoprzecinkowych - brzmi groźnie, ale jest banalne. <br />I zrób to na nich. Nie używa typów zmiennoprzecinkowych, bo ośmiobitowe AVR'y ich nie wspierają sprzętowo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 3 mar 2016, o 22:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2016-03-03T09:37:45+01:00</updated>
<published>2016-03-03T09:37:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155322#p155322</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155322#p155322"/>
<title type="html"><![CDATA[Re: Rozmiar kodu programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155322#p155322"><![CDATA[
Samo sprintf() dodaje 2KB kodu (jeśli trzeba dołączać fltprintf.a to jeszcze więcej). ftoa()/dtostrf() ma znacznie więcej sensu w tym przypadku, ale i tak da się to zrobić bez liczb zmiennoprzecinkowych.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 3 mar 2016, o 09:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-03-03T00:31:57+01:00</updated>
<published>2016-03-03T00:31:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155313#p155313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155313#p155313"/>
<title type="html"><![CDATA[Re: Rozmiar kodu programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155313#p155313"><![CDATA[
<div class="quotetitle">andrzejzandrzejowa napisał(a):</div><div class="quotecontent"><br />powoduje rozrost rozmiaru kodu o grubo ponad 3KB, do ponad 200% miejsca na procku.<br /></div><br />I bardzo dobrze - może teraz na własnym przykładzie zrozumiesz dlaczego warto unikać jak ognia obliczeń na liczbach zmiennoprzecinkowych ... a tym bardziej, że w tak prostym zastosowaniu jak z DS18B20 daje się to zrobić bez zmrużenia oka.... tzn absolutnie bez liczb typu float/double<br /><br /><div class="quotetitle">andrzejzandrzejowa napisał(a):</div><div class="quotecontent"><br />Nie wiem, jak innaczej przekonwertować obrobione dane temp na tablicę char możliwą do wysłania do wyświetlacza<br /></div><br />Polecam książkę: <!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br />w której jest to ładnie opisane i to właśnie z użyciem tylko liczb całkowitych ... A jeśli nie książka to również w internecie znajdziesz mnóstwo przykładów bez używania liczb zmiennoprzecinkowych.<br /><br /><div class="quotetitle">andrzejzandrzejowa napisał(a):</div><div class="quotecontent"><br />Używam oprogramowania eclipse z dodanym WinAVR.<br /></div><br />To akurat nie ma nic do rzeczy ... Nie ważne czy będziesz używał nowego Atmel toolchain czy starego dziadka WinAVR to będziesz miał to samo jeśli tylko tkniesz liczby typu float na tak małym procku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 mar 2016, o 00:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrzejzandrzejowa]]></name></author>
<updated>2016-03-03T00:15:39+01:00</updated>
<published>2016-03-03T00:15:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155311#p155311</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155311#p155311"/>
<title type="html"><![CDATA[Rozmiar kodu programu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14714&amp;p=155311#p155311"><![CDATA[
Mam problem ze zbyt dużym rozmiarem kodu programu do termometru na czujniku DS18B20.<br />Program to zmodyfikowana wersja programu ze strony <a href="http://hobby.abxyz.bplaced.net/index.php?pid=4&amp;aid=8"  class="postlink">http://hobby.abxyz.bplaced.net/index.php?pid=4&amp;aid=8</a><br />(Dostosowane zostały komendy do biblioteki hd44780.h)<br /><br />[syntax=c]#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;hd44780.c&gt;<br /># include &lt;stdlib.h&gt;<br />#include &quot;ds18b20.h&quot;<br /><br />/* W tablicy będą formowane komunikaty tekstowe<br /> wysyłane do wyświetlacza */<br />char str&#91;17&#93; = &quot;   Termometr    &quot;;<br /><br />int main(void) {<br />/* Zmienna przechowuje aktualną wartość temperatury */<br />double temp;<br />/* W tablicy zapisywane będą dane odczytane z układu ds18b20 */<br />unsigned char ds18b20_pad&#91;9&#93;;<br /><br />/* Funkcja inicjalizuje wyświetlacz */<br />LCD_Initalize();<br />/* Włącza wyświetlanie */<br />/* Czyści  ekran */<br />LCD_Clear();<br /><br />/* Wyświetla tytuł */<br />LCD_GoTo(0, 0);<br />LCD_WriteText(str);<br /><br />while (1) {<br />/* Funkcja 'ds18b20_ConvertT' wysyła do układu ds18b20<br /> polecenie pomiaru */<br />if (ds18b20_ConvertT()) {<br /><br />/* 750ms - czas konwersji */<br />_delay_ms(750);<br /><br />/* Odczyt z układu ds18b20, dane zapisywane są w tablicy ds18b20_pad.<br /> Dwie pierwsze pozycje w tablicy to kolejno mniej znaczący bajt i bardziej<br /> znaczący bajt wartość zmierzonej temperatury */<br />ds18b20_Read(ds18b20_pad);<br /><br />/* Składa dwa bajty wyniku pomiaru w całość. Cztery pierwsze bity mniej<br /> znaczącego bajtu to część ułamkowa wartości temperatury, więc całość<br /> dzielona jest przez 16 */<br />temp = ((ds18b20_pad&#91;1&#93; &lt;&lt; 8) + ds18b20_pad&#91;0&#93;) / 16.0;<br /><br />/* Formułuje komunikat w tablicy 'str' */<br />sprintf(str, &quot;%4.1f\xdf&quot; &quot;C&quot;, temp);<br /><br /><br />LCD_GoTo(5, 1);<br />/* Wysyła komunikat do wyświetlacza */<br />LCD_WriteText(str);<br />}<br />}<br />}[/syntax]<br /><br />Zastosowana w kodzie instrukcja <strong>sprintf(str, &quot;%4.1f\xdf&quot; &quot;C&quot;, temp);</strong> powoduje rozrost rozmiaru kodu o grubo ponad 3KB, do ponad 200% miejsca na procku. Nie wiem, jak innaczej przekonwertować obrobione dane <em>temp</em> na tablicę char możliwą do wysłania do wyświetlacza. Używam oprogramowania eclipse z dodanym WinAVR.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10927">andrzejzandrzejowa</a> — 3 mar 2016, o 00:15</p><hr />
]]></content>
</entry>
</feed>