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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-08-30T14:57:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1484&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-30T14:57:06+01:00</updated>
<published>2012-08-30T14:57:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14090#p14090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14090#p14090"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14090#p14090"><![CDATA[
<div class="quotetitle">Jeżyk-1 napisał(a):</div><div class="quotecontent"><br />Zmienna temp była tu zdefiniowana jako double.<br /></div><br /><br />No to pewnie się zdziwisz a może i nie zdziwisz ale w języku C dla AVR używanie typu double charakterystyczne jest dla osób, które nie znają prawie w ogóle specyfiki języka C dla AVR. Zobacz podaję ci kolejny dowód na jakość tego kursu. Ale żeby nie było że tylko coś tam mówię to wyjaśniam.<br /><br />otóż w AVR GCC jest tylko jeden uproszczony typ przeznaczony dla liczb zmiennoprzecinkowych<br /><br />float<br /><br />na komputerach PC można w standardowym języku C korzystać naturalnie z typu o zwiększonej precyzji czyli <br /><br />double<br /><br />ale w tak małych prockach jest to po prostu bez sensu - zatem pozostawiono wprawdzie typ double, ale tylko po to aby była zgodność ze standardem, gdy np skorzystasz z jakiegoś kodu z PC i żeby nie trzeba było dużo zmieniać. <br /><br />Tyle że domyślnie typ double w AVR GCC zostaje niejawnie zastąpiony type float !<br /><br />a zatem pisząc kod od nowa i używając typu double - widać od razu że coś ktoś jest na bakier, i nie tylko z tym, że akurat nie wiedział o tym co tu napisałem. Ale przede wszystkim dlatego że do TAK PROSTYCH rzeczy jak obsługa temperatury z DS18B20 w ogóle używa typów zmiennoprzecinkowych zamiast liczb całkowitych o czym pisałem wyżej.....<br /><br />ale żebyś dobrze zrozumiał - używając liczb całkowitych nadal mamy możliwość pełnego przedstawienia na LCD czy gdziekolwiek temperatury w postaci liczby zmiennoprzecinkowej tyle że oszczędzając FLASH i czas wykonywanych operacji.<br /><br />Wiem, pisałeś już że nosisz się z zamiarem zakupu książki z atnela, ale może wstrzymaj się z zaśmiecaniem sobie głowy informacjami z tego kursu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 sie 2012, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2012-08-30T13:28:02+01:00</updated>
<published>2012-08-30T13:28:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14080#p14080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14080#p14080"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14080#p14080"><![CDATA[
Zmienna temp była tu zdefiniowana jako double.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 30 sie 2012, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2012-08-30T11:43:25+01:00</updated>
<published>2012-08-30T11:43:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14070#p14070</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14070#p14070"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14070#p14070"><![CDATA[
To nie reklama Panie Mirku tylko próbowałem się dowiedzieć czegoś. Książkę planuję kupić dopiero na wpłatę a do tego czasu nie chciałem się nudzić <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />zastanawiało mnie głownie te przesunięcie bo jeżeli mam jeden Bajt czyli 8 bitów 11111111 i jak zrobię przesuniecie w prawo 0 8 to wydawało mi się ze to wszystko się wyzeruje a jednak nie i jakoś to działa <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 30 sie 2012, o 11:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-08-30T11:15:44+01:00</updated>
<published>2012-08-30T11:15:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14068#p14068</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14068#p14068"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14068#p14068"><![CDATA[
W termometrze DS18B20 masz 2 bajty, ale w pierwszym masz SSSSSxxx a w drugim xxxxyyyy, gdzie S to znak, xxxxxxx to całkowita wartość temperatury, a yyyy to ułamkowa wartość temperatury. Sprawdź w specyfikacji <!-- m --><a class="postlink" href="http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf" >http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf</a><!-- m --> . Po przesunięciu pierwszego bajtu masz SSSSSxxx00000000, po dodaniu drugiego wychodzi SSSSSxxxxxxxyyyy. Wykonywane jest dzielenie przez 16.0 (masz błąd w kodzie), wtedy otrzymujesz wynik z przecinkiem np. 29.0<br />Co do znaczka stopnia to spróbuj B0. Zgodność kodów wyświetlacza z kodami ASCII ogranicza się do przedziału 0x21 - 0x7D. Poza tym przedziałem może być różnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 30 sie 2012, o 11:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2012-08-30T10:58:37+01:00</updated>
<published>2012-08-30T10:58:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14066#p14066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14066#p14066"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14066#p14066"><![CDATA[
<div class="quotetitle">Jeżyk-1 napisał(a):</div><div class="quotecontent"><br />Witam. Wiem że nie polecacie tego kursu ale ma tu kod do pomiaru temperatury co mi się przydać może <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Bardziej może Ci się przydać sposób jak to zrobić dobrze. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Jeżeli masz książkę Mirka to zobacz jak jest zrobiony odczyt i obsługa DSa.<br />No a jak nie masz... to masz problem  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Powiedz mi tylko po co wyważać otwarte drzwi <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 30 sie 2012, o 10:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-30T10:43:14+01:00</updated>
<published>2012-08-30T10:43:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14064#p14064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14064#p14064"/>
<title type="html"><![CDATA[Re: Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14064#p14064"><![CDATA[
W tej części kodu dzieje się TRAGEDIA - to znaczy autor kursu robi po prostu masakrę z mózgu początkującego ale nie tym że jest jakiś wzór, nie tym że pokazuje to jakieś tam obliczenia ....<br /><br />ale tym, że stosuje do tego zmienne typu float - które pociągają za sobą strasznie DUŻE zużycie kodu w pamięci FLASH a co za tym idzie na małych prockach będziesz miał dopiero masakrę<br /><br />a druga sprawa to pokazują pomiar temperatury RODEM z Bascoma - czyli<br /><br />- start konwersji<br />- .... WAIT 750 ms ...... - zgroza !!!!<br />- odczyt temperatury<br /><br />to drugi rodzaj robienia sieczki ludziom z mózgu .... <br /><br />jednym słowem nie nazywaj w ogóle tego kursu - &quot;kursem programowania&quot; bo to nie jest kurs programowania niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />to jest kurs jak w najprostszy i najgorszy z możliwych sposobów JAKOŚ TAM odczytać DS18B20 .... a już z DS1820 będziesz miał NOWY problem ...... SZOK !<br /><br />gdy tymczasem w książce masz - kurs programowania - dzięki czemu nie lasujesz sobie mózgu a dodatkowo nie ma wyżej wymienionych wad itp<br /><br />dlatego ja nawet nie zabieram się za tłumaczenie co tu jest i powiem więcej - proszę mi tu nie wklejać linków to tych pseudo kursów bo zaczyna mi się wydawać że bardziej chodzi o reklamę tego niż pytania ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 sie 2012, o 10:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2012-08-30T10:08:56+01:00</updated>
<published>2012-08-30T10:08:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14061#p14061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14061#p14061"/>
<title type="html"><![CDATA[Pomiar temperatury - pomoc w zrozumieniu kodu.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1484&amp;p=14061#p14061"><![CDATA[
Witam. Wiem że nie polecacie tego kursu ale ma tu kod do pomiaru temperatury co mi się przydać może <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><!-- m --><a class="postlink" href="http://hobby.abxyz.bplaced.net/index.php?pid=4&amp;aid=8" >http://hobby.abxyz.bplaced.net/index.php?pid=4&amp;aid=8</a><!-- m --><br />A mój problem polega teraz że nie mogę zrozumieć co się dzieje w tej linii kodu gdzie jest zmienna &quot;temp&quot;<br />[syntax=c]  while(1)<br />  {<br />    /* Funkcja 'ds18b20_ConvertT' wysyła do układu ds18b20 <br />       polecenie pomiaru */      <br />     if(ds18b20_ConvertT())<br />    {<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[1]&lt;&lt;8)+ds18b20_pad[0])/16.1);<br />      <br />      /* Formułuje komunikat w tablicy 'str' */<br />       sprintf(str,&quot;%4.2f\xa7&quot;&quot;C&quot;, temp);<br /><br />       LCD_LOCATE(5,1);<br />      /* Wysyła komunikat do wyświetlacza */<br />       lcd_puts(str);<br />    }[/syntax]<br />W Funkcji sprint to wiem tylko tyle że %4.2f jest odpowiedzialny za wyświetlenie liczby zmienno-przecinkowe, a \x.. to jakiś znak lecz próbowałem dopasować z tablicy ASCII to mi nie pasowało coś. (po prostu wyświetlały się nie te symbole co chciałem) <br />a główny problem to zmienna temp<br />doszedłem do tego że do tabeli _pad[0] i _pad[1] przy temperaturze 29deg zapisywana jest wartość 209. Potem gdy jest operacja przesunięcia o 8 w lewo to jest 256 no i wychodzi ze _pad[1] + [0] = 465 podzielone przez 16 daje nam 29 ale to raczej tak nie działa. operacja jest wykonywana na bitach i nie rozumiem jak po przesunięciu o 8 wyjdzie taka wartość jak wyżej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 30 sie 2012, o 10:08</p><hr />
]]></content>
</entry>
</feed>