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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=13323&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-10-22T09:40:06+01:00</updated>
<published>2015-10-22T09:40:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143119#p143119</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143119#p143119"/>
<title type="html"><![CDATA[Re: ATmega 128, DS18B20 Dziwny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143119#p143119"><![CDATA[
<div class="quotetitle">tominio_1 napisał(a):</div><div class="quotecontent"><br />Tylko jak mam dodać tego nulla?<br /></div><br />Prosto zajrzeć do Bluebooka i poczytać o tablicach ... znakowych .... Wtedy będziesz wiedział, że skoro przygotowujesz tablicę na 4 znaki swojej temperatury ( a faktycznie wkładasz tam różną ich ilość (zastanów się dlaczego) ... to tego NULL'a .... zero po prostu - SAM MUSISZ dokładać, albo zerować tablicę przed wpisem nowej wartości.<br /><br />Ale i tak to co przyprawia o dreszcze w tym kodzie to używanie volatile float temp1; brrr masakra <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />jakby tego nie można było wysłać na terminal bez tego kociego floata .... a już kompletnie nie wiadomo po co jeszcze doklepałeś volatile ?<br /><br />Co za problem wysłać sobie na rs232 po kolei<br /><br />subzero<br />cel<br />.<br />cel_fract_bits<br /><br />czyli znak, później dziesiątki, później kropkę i później dziesiętne części stopnia ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 11 minutach ]</span></strong><br /><br /><div class="quotetitle">tominio_1 napisał(a):</div><div class="quotecontent"><br />Zmieniłem trochę deklaracje tablic temperatura1-8<br /></div><br />To ci nie pomaga a wręcz przeszkadza i poza tym też w końcu dostaniesz dziwne wyniki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> jak zaczną skakać temperatury np z -12.1 a 3.7 - to się zdziwisz co dostaniesz czasem za dziwną temperaturę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Zrobienie tych tablic ze spacjami to już pomijam że marnotrawstwo pamięci (chociaż możesz powiedzieć że to cię mało obchodzi bo masz m128 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... ) ..... ale po prostu tak się nie robi i jeszcze będziesz miał przez to babole<br /><br />poza tym, w tym twoim kodzie można byłoby magazynować te temperatury bez ŻADNYCH tablic znakowych, TYLKO i WYŁĄCZNIE jako liczby <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> np<br /><br />[syntax=c]int temperatury&#91;8&#93;;[/syntax]<br /><br />wkładać do nich temperatury tak:<br /><br />[syntax=c]temperatury&#91;0&#93; = (subzero?-1:1) * ((cel*10)+cell_fract_bits);[/syntax]<br /><br />a wysyłać je jakąś fajną funkcją zamiast dziesiątkami mega IF()'ów<br /><br />[syntax=c]void uart_send_temp( int temp ) {<br />    uint8_t j,d,t;<br />    t = abs( temp );<br />    j = t/10;<br />   d = t % 10;<br />   if( temp&lt;0 ) uart_puts( &quot;-&quot; );<br />   uart_putint( j, 10 );<br />   uart_puts( &quot;.&quot; );<br />   uart_putint( d );<br />   uart_puts( &quot;\r\n&quot; );<br />}[/syntax]<br /><br /><br />pomyśl ile się kod uprości, o ile będzie czytelniej a do tego nie ma ANI JEDNEGO floata w programie ani niepotrzebnych tablic znakowych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 paź 2015, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-10-22T09:27:36+01:00</updated>
<published>2015-10-22T09:27:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143118#p143118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143118#p143118"/>
<title type="html"><![CDATA[Re: ATmega 128, DS18B20 Dziwny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143118#p143118"><![CDATA[
Transmisja wydaje mi się że działa poprawnie bo przesyłam różnej wielkości Stringi w jedną i w drugą stronę a takich bubli nie ma. <br />Co do temperatura1-8 to nic nie dodaje i może tutaj tkwi problem<br />[syntax=c]volatile float temp1;//Zmienna przechowuje aktualną wartość temperatury <br />...<br /><br />char temperatura1&#91;4&#93;;//Wynik temperatury jako char<br />...[/syntax]<br /><br />Tylko jak mam dodać tego nulla?<br /><br />Zmieniłem trochę deklaracje tablic temperatura1-8<br />[syntax=c]char temperatura1&#91;&#93;=&quot;        &quot;;//Wynik temperatury jako char<br />char temperatura2&#91;&#93;=&quot;        &quot;;<br />char temperatura3&#91;&#93;=&quot;        &quot;;<br />char temperatura4&#91;&#93;=&quot;        &quot;;<br />char temperatura5&#91;&#93;=&quot;        &quot;;<br />char temperatura6&#91;&#93;=&quot;        &quot;;<br />char temperatura7&#91;&#93;=&quot;        &quot;;<br />char temperatura8&#91;&#93;=&quot;        &quot;;[/syntax]<br /><br />i wygląda na to że działa poprawnie<br /><a href="https://obrazkiforum.atnel.pl/4931/a9fc04e385a7aaa321983f010a96298b.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4931/a9fc04e385a7aaa321983f010a96298b.JPG" alt="Obrazek" /></a><br /><br />Dzięki za naprowadzenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 22 paź 2015, o 09:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-10-22T09:13:02+01:00</updated>
<published>2015-10-22T09:13:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143114#p143114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143114#p143114"/>
<title type="html"><![CDATA[ATmega 128, DS18B20 Dziwny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13323&amp;p=143114#p143114"><![CDATA[
Witam,<br /><br />Mam dosyć dziwny problem z obsługą czujników DS18B20.<br />Procesor Atmega 128 zasilany z przetwornicy LM2596 5V.<br />Czujniki DS18B20 (8 sztuk) podpięte do jednego pinu PC0.<br />Pin Data podciągnięty do zasilania poprzez rezystor 1k<br /><a href="https://obrazkiforum.atnel.pl/4931/14f5b112271f67974632bae3af01e1bb.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4931/14f5b112271f67974632bae3af01e1bb.JPG" alt="Obrazek" /></a><br /><br />Każdy z czujników był podłączony osobno i odczytano ROM Code z jego adresem.<br />Wszystkie adresy są prawidłowe bo każdy z nich poprawnie pokazywał temperaturę.<br />Czujniki umieszczona na takich samych przewodach, lecz o różnych długościach od  1m do 7m.<br />Biblioteka do obsługi DS zaczerpnięta z niebieskiej Biblii.<br /><br />I teraz mam taki problem, że jak podłączę 4/5 czujników to wszystko działa poprawnie.<br /><a href="https://obrazkiforum.atnel.pl/4931/28477c6e1ba166933b2b713e43caf89c.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/4931/28477c6e1ba166933b2b713e43caf89c.JPG" alt="Obrazek" /></a><br /><br />Natomiast jak podłączę pozostałe to już pojawiają się błędy w transmisji:<br /><a href="https://obrazkiforum.atnel.pl/4931/d1ed6043f81e721cf46f8c46c194f1c3.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/4931/d1ed6043f81e721cf46f8c46c194f1c3.JPG" alt="Obrazek" /></a><br /><br />[syntax=c]DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />ch = ch-1;<br />     <br />if(ch == 0){<br />if( DS18X20_OK == DS18X20_read_meas(czujnik_1, &amp;subzero, &amp;cel, &amp;cel_fract_bits)){<br />temp1 = cel + (cel_fract_bits/10.0);<br />dtostrf(temp1, 2, 1, temperatura1);}<br />else {<br />temp1 = 0;<br />dtostrf(temp1, 2, 1, temperatura1);}}[/syntax]<br /><br />[syntax=c]if(znak == '1'){USART_Send_String(&quot;\r\n T1: &quot;);USART_Send_String(temperatura1);}<br />if(znak == '2'){USART_Send_String(&quot;\r\n T2: &quot;);USART_Send_String(temperatura2);}<br />if(znak == '3'){USART_Send_String(&quot;\r\n T3: &quot;);USART_Send_String(temperatura3);}<br />if(znak == '4'){USART_Send_String(&quot;\r\n T4: &quot;);USART_Send_String(temperatura4);}<br />if(znak == '5'){USART_Send_String(&quot;\r\n T5: &quot;);USART_Send_String(temperatura5);}<br />if(znak == '6'){USART_Send_String(&quot;\r\n T6: &quot;);USART_Send_String(temperatura6);}<br />if(znak == '7'){USART_Send_String(&quot;\r\n T7: &quot;);USART_Send_String(temperatura7);}<br />if(znak == '8'){USART_Send_String(&quot;\r\n T8: &quot;);USART_Send_String(temperatura8);}[/syntax]<br />Czy ktoś wie co mogę na to zaradzić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 22 paź 2015, o 09:13</p><hr />
]]></content>
</entry>
</feed>