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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-31T16:59:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14276&amp;mode</id>
<entry>
<author><name><![CDATA[mkk13]]></name></author>
<updated>2016-01-31T16:59:19+01:00</updated>
<published>2016-01-31T16:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=152208#p152208</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=152208#p152208"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=152208#p152208"><![CDATA[
Jeśli to od Maxima, to mam podobny: DS18B20Z+ i z doświadczenia Ci powiem:<br />1. Sprawdź w nocie dokładnie jak zapisywana jest u Ciebie temperatura.<br />Korzystasz z czegoś takiego:<br />[syntax=c]retd = ( ( temperature_h &lt;&lt; 8 ) + temperature_l ) * 0.0625;[/syntax]<br /><br />Nie wiem niestety jak u Ciebie, bo elementy mogą się różnić, a mogą być identyczne, ale u mnie temperaturę wyciąga się inaczej (posłużę się pseudokodem i Twoimi nazwami):<br />[syntax=c]if (temperature_h)<br />{<br />    retd = ~(temperature_l) + 1;<br />    negativeTempFlag = 1;<br />} else<br />{<br />    retd = temperature_l;<br />    negativeTempFlag = 0;<br />}[/syntax]<br /><br />Kiedy jednak pragnę wypisać tą temperaturę poprzez np. uart, czy cokolwiek to muszę mieć na względzie jej ułożenie na pobranych bitach - u mnie wyglądałoby to tak:<br />[syntax=c]printf(&quot;temp: %c%d.%d&quot;, negativeTempFlag?'-':'+', retd &gt;&gt; 1, (retd &amp; 0x1)?5:0);[/syntax]<br /><br />Przepraszam za łamany kod, ale mam nadzieję, że wiesz na co zwrócić uwagę w nocie katalogowej.<br />Daj znać jak pójdzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11698">mkk13</a> — 31 sty 2016, o 16:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wchpikus]]></name></author>
<updated>2016-01-23T17:57:17+01:00</updated>
<published>2016-01-23T17:57:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151531#p151531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151531#p151531"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151531#p151531"><![CDATA[
Podlaczenie odwrotnie ds-a powoduje szybkie odejscie do krainy wiecznych elementow elektronicznych..<br />Zachowujesz odpowiednie czasy odczytow?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3859">wchpikus</a> — 23 sty 2016, o 17:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-23T16:13:41+01:00</updated>
<published>2016-01-23T16:13:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151515#p151515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151515#p151515"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151515#p151515"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zamieniłem również double na intiger<br /></div><br />Jak to poprawiłeś tylko zmieniając double na integer, to możesz nie dostawać poprawnej wartości...<br /><br />Sprawdź jaki masz status jak wołasz<br />[syntax=c]ds18b20_reset()[/syntax]<br />bo go nie sprawdzasz, a będzie wiedział czy układ Ci odpowiada.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 23 sty 2016, o 16:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arkady93]]></name></author>
<updated>2016-01-23T13:18:43+01:00</updated>
<published>2016-01-23T13:18:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151493#p151493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151493#p151493"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151493#p151493"><![CDATA[
czujnik podłączony jest odpowiednio, podłączałem go zgodnie z notą katalogową, na schemacie zamienione są właśnie piny 1 i 3 a wcześniej tego nie zauważyłem. Zamieniłem również double na intiger ale wyświetlany wynik to cały czas 0 stopni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12636">arkady93</a> — 23 sty 2016, o 13:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[piotr8605]]></name></author>
<updated>2016-01-23T13:05:57+01:00</updated>
<published>2016-01-23T13:05:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151492#p151492</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151492#p151492"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151492#p151492"><![CDATA[
Kolego sprawdź połączenie nóżek zasilających czujnika, pin 1 to gnd, a pin 3 to vcc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=535">piotr8605</a> — 23 sty 2016, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-23T12:17:20+01:00</updated>
<published>2016-01-23T12:17:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151485#p151485</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151485#p151485"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151485#p151485"><![CDATA[
Masz funkcję zwracającą wynik jako double [syntax=c]double ds18b20_gettemp()[/syntax] a konwertujesz potem ją jako integer [syntax=c]temperatura=ds18b20_gettemp();<br />itoa(temperatura, bufor, 10);[/syntax]<br /><br />Za samo użycie double w takiej sytuacji to pewnie za chwilę dostanie Ci się jeszcze od Mirka.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 23 sty 2016, o 12:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arkady93]]></name></author>
<updated>2016-01-23T09:55:13+01:00</updated>
<published>2016-01-23T09:55:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151478#p151478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151478#p151478"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151478#p151478"><![CDATA[
już poprawiłem, przepraszam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12636">arkady93</a> — 23 sty 2016, o 09:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2016-01-23T09:39:44+01:00</updated>
<published>2016-01-23T09:39:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151477#p151477</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151477#p151477"/>
<title type="html"><![CDATA[Re: DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151477#p151477"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 23 sty 2016, o 09:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arkady93]]></name></author>
<updated>2016-01-23T09:46:24+01:00</updated>
<published>2016-01-23T09:33:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151476#p151476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151476#p151476"/>
<title type="html"><![CDATA[DS18b20]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14276&amp;p=151476#p151476"><![CDATA[
Witam<br /><br />jestem początkującym jeśli chodzi o programowanie mikrokontrolerów. Postanowiłem zrobić sobie termometr na czujniku DS28B20 i ATmedze16. Znalazłem biblioteki w internecie, jednakże mi ten układ nie działa. cały czas wyświetla się wartość 0, myślę, że jest to związane z konwersją wartości. <br /><br />podłączenie czujnika:<br /><a href="https://obrazkiforum.atnel.pl/12636/fc25e076c90682f699ef67a3aedc448b.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12636/fc25e076c90682f699ef67a3aedc448b.jpg" alt="Obrazek" /></a><br /><br />biblioteki ds18b20.h, zdefiniowanie pinu i fukncji<br />[syntax=c]#ifndef DS18B20_H_<br />#define DS18B20_H_<br /><br />#include &lt;avr/io.h&gt;<br /><br />//setup connection<br />#define DS18B20_PORT PORTA<br />#define DS18B20_DDR DDRA<br />#define DS18B20_PIN PINA<br />#define DS18B20_DQ PA7<br /><br />//commands<br />#define DS18B20_CMD_CONVERTTEMP 0x44<br />#define DS18B20_CMD_RSCRATCHPAD 0xbe<br />#define DS18B20_CMD_WSCRATCHPAD 0x4e<br />#define DS18B20_CMD_CPYSCRATCHPAD 0x48<br />#define DS18B20_CMD_RECEEPROM 0xb8<br />#define DS18B20_CMD_RPWRSUPPLY 0xb4<br />#define DS18B20_CMD_SEARCHROM 0xf0<br />#define DS18B20_CMD_READROM 0x33<br />#define DS18B20_CMD_MATCHROM 0x55<br />#define DS18B20_CMD_SKIPROM 0xcc<br />#define DS18B20_CMD_ALARMSEARCH 0xec<br /><br />//stop any interrupt on read<br />#define DS18B20_STOPINTERRUPTONREAD 1<br /><br />//functions<br />extern double ds18b20_gettemp();<br /><br />#endif[/syntax]<br /><br /><br />biblioteka ds18b20.c<br />[syntax=c]#include &quot;ds18b20.h&quot;<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />/*<br /> * ds18b20 init<br /> */<br />uint8_t ds18b20_reset() {<br />uint8_t i;<br /><br />//low for 480us<br />DS18B20_PORT &amp;= ~ (1&lt;&lt;DS18B20_DQ); //low<br />DS18B20_DDR |= (1&lt;&lt;DS18B20_DQ); //output<br />_delay_us(480);<br /><br />//release line and wait for 60uS<br />DS18B20_DDR &amp;= ~(1&lt;&lt;DS18B20_DQ); //input<br />_delay_us(60);<br /><br />//get value and wait 420us<br />i = (DS18B20_PIN &amp; (1&lt;&lt;DS18B20_DQ));<br />_delay_us(420);<br /><br />//return the read value, 0=ok, 1=error<br />return i;<br />}<br /><br />/*<br /> * write one bit<br /> */<br />void ds18b20_writebit(uint8_t bit){<br />//low for 1uS<br />DS18B20_PORT &amp;= ~ (1&lt;&lt;DS18B20_DQ); //low<br />DS18B20_DDR |= (1&lt;&lt;DS18B20_DQ); //output<br />_delay_us(1);<br /><br />//if we want to write 1, release the line (if not will keep low)<br />if(bit)<br />DS18B20_DDR &amp;= ~(1&lt;&lt;DS18B20_DQ); //input<br /><br />//wait 60uS and release the line<br />_delay_us(60);<br />DS18B20_DDR &amp;= ~(1&lt;&lt;DS18B20_DQ); //input<br />}<br /><br />/*<br /> * read one bit<br /> */<br />uint8_t ds18b20_readbit(void){<br />uint8_t bit=0;<br /><br />//low for 1uS<br />DS18B20_PORT &amp;= ~ (1&lt;&lt;DS18B20_DQ); //low<br />DS18B20_DDR |= (1&lt;&lt;DS18B20_DQ); //output<br />_delay_us(1);<br /><br />//release line and wait for 14uS<br />DS18B20_DDR &amp;= ~(1&lt;&lt;DS18B20_DQ); //input<br />_delay_us(14);<br /><br />//read the value<br />if(DS18B20_PIN &amp; (1&lt;&lt;DS18B20_DQ))<br />bit=1;<br /><br />//wait 45uS and return read value<br />_delay_us(45);<br />return bit;<br />}<br /><br />/*<br /> * write one byte<br /> */<br />void ds18b20_writebyte(uint8_t byte){<br />uint8_t i=8;<br />while(i--){<br />ds18b20_writebit(byte&amp;1);<br />byte &gt;&gt;= 1;<br />}<br />}<br /><br />/*<br /> * read one byte<br /> */<br />uint8_t ds18b20_readbyte(void){<br />uint8_t i=8, n=0;<br />while(i--){<br />n &gt;&gt;= 1;<br />n |= (ds18b20_readbit()&lt;&lt;7);<br />}<br />return n;<br />}<br /><br />/*<br /> * get temperature<br /> */<br />double ds18b20_gettemp() {<br />uint8_t temperature_l;<br />uint8_t temperature_h;<br />double retd = 0;<br /><br />#if DS18B20_STOPINTERRUPTONREAD == 1<br />cli();<br />#endif<br /><br />ds18b20_reset(); //reset<br />ds18b20_writebyte(DS18B20_CMD_SKIPROM); //skip ROM<br />ds18b20_writebyte(DS18B20_CMD_CONVERTTEMP); //start temperature conversion<br /><br />while(!ds18b20_readbit()); //wait until conversion is complete<br /><br />ds18b20_reset(); //reset<br />ds18b20_writebyte(DS18B20_CMD_SKIPROM); //skip ROM<br />ds18b20_writebyte(DS18B20_CMD_RSCRATCHPAD); //read scratchpad<br /><br />//read 2 byte from scratchpad<br />temperature_l = ds18b20_readbyte();<br />temperature_h = ds18b20_readbyte();<br /><br />#if DS18B20_STOPINTERRUPTONREAD == 1<br />sei();<br />#endif<br /><br />//convert the 12 bit value obtained<br />retd = ( ( temperature_h &lt;&lt; 8 ) + temperature_l ) * 0.0625;<br /><br />return retd;<br />}[/syntax]<br /><br />oraz mój main<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &quot;hd44780.h&quot;<br />#include &quot;ds18b20.h&quot;<br />#include &lt;stdlib.h&gt;<br /><br />int main (void){<br />    LCD_Initalize();<br />    char bufor&#91;100&#93;;<br />    uint8_t temperatura;<br />    while(1){<br />        LCD_GoTo(2,0);<br />        LCD_WriteText(&quot;Temperatura: &quot;);<br />        temperatura=ds18b20_gettemp();<br />        itoa(temperatura, bufor, 10);<br />        LCD_GoTo(6,1);<br />        LCD_WriteText(bufor);<br />        LCD_GoTo(8,1);<br />        LCD_WriteData(223);<br />        LCD_GoTo(9,1);<br />        LCD_WriteText(&quot;C&quot;);<br />    }<br />}[/syntax]<br /><br /><br />Bardzo proszę o pomoc, ponieważ nie mam już pojęcia co jest źle.<br />dziękuje i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12636">arkady93</a> — 23 sty 2016, o 09:33</p><hr />
]]></content>
</entry>
</feed>