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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-09T23:13:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4083&amp;mode</id>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2015-11-09T23:13:21+01:00</updated>
<published>2015-11-09T23:13:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144950#p144950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144950#p144950"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144950#p144950"><![CDATA[
I tak to jest jak się chce coś na 'siłę' zrobić, to się popełnia takie babole. <br />Sam wspominałem, że dla 2 DSów tak jakby nie została wysłana komenda CONVERT czyli nie został poprawnie wysłany bajt danych. Tak naprawdę to komenda została wysłana, tylko ten nieszczęsny _delay_us(); rozwalił system. Nie wiem skąd on się tam wziął. <br />Teraz działa poprawnie nawet dla 6 Dsów (tylko tyle miałem pod ręką).<br />Pull-up 'brałem' bezpośrednio' z nóżki procesora i tak się zastanawiam czy jest sens stosowania dodatkowego tranzystora jeżeli 3 Dsy (tyle planuje w swoim termometrze) w czasie jednoczesnej konwersji pobierają tylko ~2mA prądu ?<br /><br />Oczywiście WIELKIE 'Pomógł' i poproszę adres (na priv.) 4-pak czeka na nadanie <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=766">qutrit</a> — 9 lis 2015, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-11-09T21:42:09+01:00</updated>
<published>2015-11-09T21:42:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144935#p144935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144935#p144935"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144935#p144935"><![CDATA[
To ja stawiam na to, że za późno uruchamiasz podciągnięcie.<br />I patrząc się na twój kod masz po procedurze wysłania bajtu[syntax=c]_delay_us(100);[/syntax]a zgodnie z specyfikacją musisz: <div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />The 1-Wire bus must be switched to the strong pullup within 10μs (max) after a Convert T [44h] or Copy Scratchpad [48h] command is issued, and the bus must be held high by the pullup for the duration of the conversion (tCONV) or data transfer (tWR = 10ms).<br /></div><br />Czyli robisz to za późno i to jest przyczyna resetowania się układów i nie wykonywania konwersji  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br /><span style="color: #BFBF40">Edit:</span><br />Tak popatrzyłem się na swoje procedury - po co dajesz te 100us po wysłaniu bajtu?<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> — 9 lis 2015, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2015-11-09T21:02:00+01:00</updated>
<published>2015-11-09T21:02:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144927#p144927</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144927#p144927"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144927#p144927"><![CDATA[
Witam,<br />Układ 3 x DS w trybie parasite działa poprawnie z rezystorem podciągającym o wartości dopiero 1kOhm. <br />Zasilanie 3 przewodami (3 x DS) działa prawidłowo dla 4,7kOhm.<br />Ale skoro jest możliwość podłączenia stron pull-up, to chciałem z niego skorzystać, tym bardziej, że czujniki docelowo będą podłączane do różnej długości przewodów.<br />Niby sprawa prosta włączam strong pull-up przed konwersją a wyłączam przed odczytaniem temperatury a jednak coś jest nie tak ????<br /><br />Dziwi mnie fakt (tak jak pisałem wcześniej), pomiar prądu (tryb parasite opornik 3kOhm) dla jednego Dsa dochodzi do 0,8mA (wartość temp. na LCD poprawna), natomiast w momencie dołączenia drugiego DSa prąd jest bliski zero (na LCD wartość 85). Dioda led podłączona (na krótko w celach testu) równolegle do Dsa wyraźnie miga, więc strong pull-up działa. Czyli tak jakby dla 2 DSów nie została poprawnie wydana komenda CONVERT ? Tylko dlaczego te same funkcje działają poprawnie bez stron pull-up a z rezystorem 1kOhm ?<br /><br />Podciągnięcie realizowałem też wykorzystując wolną nóżkę procesora, która teoretycznie ma wydajność chyba z 10mA ? i też nie działa. <br />Może jakieś opóźnienia trzeba poustawiać ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 9 lis 2015, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-11-09T18:46:20+01:00</updated>
<published>2015-11-09T18:46:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144907#p144907</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144907#p144907"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144907#p144907"><![CDATA[
Jak podciągasz linię danych na czas konwersji, to zachowujesz odpowiedni czas jej podtrzymania - przy 12 bitowej rozdzielczości konwersja trwa do 750 ms i przez tyle musisz podawać na nią zasilanie? Sprawdź czy twój timer na pewno dobrze liczy czas.<br /><br />Czy testowałeś kilka układów w trybie z podłączeniem 3 liniami? Bo ja na twoim miejscu zacząłbym od tego. I jak w tym trybie będzie Ci komunikacja działać poprawnie, to wtedy można zacząć przechodzić w tryb parasite, który wymaga trochę więcej &quot;zabawy&quot;.<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> — 9 lis 2015, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2015-11-07T23:48:51+01:00</updated>
<published>2015-11-07T23:48:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144756#p144756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144756#p144756"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144756#p144756"><![CDATA[
Próbowałem na wszystkie sposoby i nic <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /><br />Dla jednego Dsa - działa, dołączam drugiego, to otrzymuję wartości 85. Ale zauważyłem taką rzecz.<br />Jeżeli podłączam jednego Ds i zwykły miernik prądu, to widzę oscylacje prądu 0,4 - 0,8mA i poprawną wartość temperatury na LCD. Dołączam kolejnego DS i wartość prądu ani drgnie (no może czasami wskoczy na 0,01mA).<br />Więc tak jakby dla 2. DSów nie zostało poprawnie wydane polecenie CONVERT(); <br />Dodam, że w funkcji CONVERT, warunek if(RESET_PULSE) (gdy DS lub DSy są podłączone) jest spełniony, bo sprawdzałem to, umieszczając tak wł/wył diodę LED. <br />Moja funkcja CONVERT();<br />[syntax=c]void CONWERT_TEMP(void) //opornik 1kOhm. Musi byc silne podciagniece na konwersje.<br />{<br />if(RESET_PULSE())<br />{<br />send_byte(DS18B20_ROM_SKIP); //wysyłamy do wszystkich na raz wiec ROM_SKIP<br />send_byte(DS18B20_CMD_CONVERT);<br />ow_parasite_enable();<br />}<br />}[/syntax]<br /><br />send_byte<br />[syntax=c]void send_byte(char wartosc)// wysy�a bajt danych na magistrale 1wire<br />{<br />unsigned char i;<br />unsigned char pom;<br />for(i=0; i&lt;8; i++)<br />{<br />pom = wartosc&gt;&gt;i;<br />pom&amp;=0x01;<br />send_bit(pom);<br />}<br />_delay_us(100);<br />}[/syntax]<br /><br />send_bit<br />[syntax=c]void send_bit(char bit)// wysy�a bit danych na magistrale 1wire<br />{<br />CLEAR_1W(IW_DDR, IW_bit);//CLEAR_1wire;<br />_delay_us(5);//5<br />if(bit==1) SET_1W(IW_DDR, IW_bit);//SET_1wire;<br />_delay_us(80);//80<br />SET_1W(IW_DDR, IW_bit);//SET_1wire;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 7 lis 2015, o 23:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-11-05T23:31:45+01:00</updated>
<published>2015-11-05T23:31:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144564#p144564</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144564#p144564"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144564#p144564"><![CDATA[
Odczytanie 85 stopni oznacza stan początkowy. Więc albo nie zleciłeś żadnej konwersji albo nastąpił reset układu (np. napięcie spadło poniżej wymaganego poziomu).<br />Dlatego zrób zasilanie dokładnie jak jest w datasheetcie:<br /><a href="https://obrazkiforum.atnel.pl/3427/32e0dc139aeb55f2d5164faf3dbb010e.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3427/32e0dc139aeb55f2d5164faf3dbb010e.png" alt="Obrazek" /></a><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> — 5 lis 2015, o 23:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2015-11-05T22:23:21+01:00</updated>
<published>2015-11-05T22:23:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144553#p144553</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144553#p144553"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=144553#p144553"><![CDATA[
Witam,<br />odświeżany kotlet, ale do tej pory nie umiem sobie poradzić z tym trybem pasożytniczym.<br />Mam termometr (LCD 2x16) z 3x DS18b20 podłączonymi w trybie pasożytniczym linią DQ do portu PA1.<br />Gdy zastosuję rezystor podciągający 1,2kOhm (bez tranzystora) układ działa poprawnie.<br />Natomiast chciałem zrobić to zgodnie z dokumentacją tzn. wykorzystać tranzystor do strong pull-up którego baza podłączona jest do PA0, oraz rezystor 4,7kOhm, tak jak na poniższym schemacie. Oczywiście VDD też do masy. <br /><a href="https://obrazkiforum.atnel.pl/766/9b93008c7d61b05720bc82e94e9f104f.gif"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/766/9b93008c7d61b05720bc82e94e9f104f.gif" alt="Obrazek" /></a><br /><br />Dla jednego czujnika działa poprawnie. Podłączając drugi czujnik na LCD pojawiają się wartości 85, czyli błąd w jakiejś komunikacji. <br /><br />Teraz główne funkcje programu:<br />[syntax=c]while(1)<br />{<br />if( !Timer2 )<br />{<br />Timer2=100;// 100=1sekunda<br /><br />if(!tc) //wysylamy na zmian co sekund raz convert raz odczyt<br />{<br />CONWERT_TEMP();<br />}<br /><br />if(tc)<br />{<br />Read_DS18B20();<br />}<br />if(++tc&gt;1) tc=0;<br />}//Timer2<br />}//while[/syntax]<br />Convert:<br />[syntax=c]void CONWERT_TEMP(void) //opornik 1kOhm. Musi byc silne podciagniece na konwersje.<br />{<br />if(RESET_PULSE())<br />{<br />send_byte(DS18B20_ROM_SKIP); //wysyłamy do wszystkich na raz wiec ROM_SKIP<br />send_byte(DS18B20_CMD_CONVERT);<br />}<br />ow_parasite_enable(); //WŁĄCZENIE PULL-UP<br />}[/syntax]<br />Read DS:<br />[syntax=c]void Read_DS18B20(void)<br />{<br />int8_t n, i=0;<br />uint8_t sp&#91;9&#93;;<br /><br />ow_parasite_disable(); //WYŁĄCZENIE PULL-UP<br /><br />for(n=0;n&lt;3;n++) // dla 3 czujnik�w<br />{<br />if(RESET_PULSE())<br />{<br />        send_byte(0x55); //wysyłamy odpowiedni ROM<br />for(i=0; i&lt;8; i++)<br />{<br />send_byte( Program_DS_ID&#91;n&#93;&#91;i&#93; );<br />}<br /><br />send_byte(DS18B20_CMD_READ_SCRATCHPAD);<br /><br />for (i=0 ; i&lt;9; i++ )<br />{<br />sp&#91;i&#93;=read_byte();<br />}<br /><br />if ( (crc8( &amp;sp&#91;0&#93;, 9 ))==0 ) //jezeli CRC sie zgadza<br />{<br />DS_temp&#91;n&#93; = sp&#91;0&#93;+(sp&#91;1&#93;&lt;&lt;8);<br />}<br />}<br />}<br />}[/syntax]<br /><br />PULL-UP ENABLE/DISENABLE<br />[syntax=c]void ow_parasite_enable(void)<br />{<br />DDRA  &amp;=~ (1&lt;&lt;PA1); //Linia DQ jako wejscie<br />PORTA &amp;=~ (1&lt;&lt;PA0); //baza do masy tranzystor przewodzi<br />}<br /><br /><br />void ow_parasite_disable(void)<br />{<br />DDRA  |= (1&lt;&lt;PA1); //Linia DQ jako wyjscie<br />PORTA |= (1&lt;&lt;PA0); //baza tranzystora do VCC tranzystor nie przewodzi<br />}[/syntax]<br />Tranzystor 2N3906 działa poprawnie, testowałem na diodzie LED.<br />Nie wiem co może być źle. Może ktoś z forumowiczów ma jakiś pomysł/sugestię co może być nie tak ?<br />Swoją drogą szukałem w internecie jak rozwiązany jest ten problem i artykułów jak na lekarstwo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 5 lis 2015, o 22:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-25T20:07:57+01:00</updated>
<published>2013-09-25T20:07:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50848#p50848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50848#p50848"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50848#p50848"><![CDATA[
Dzięki za odpowiedź.<br />Powyższy schemat znalazłem w necie ale też mi się nie podobał. Poniższy wygląda chyba lepiej. <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/766/abf6eac6a9c3aed19904546a4ee42b74.gif"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/766/abf6eac6a9c3aed19904546a4ee42b74.gif" alt="Obrazek" /></a><br />Pochodzi ze strony <!-- m --><a class="postlink" href="http://www.pjrc.com/tech/8051/board5/temperature.html" >http://www.pjrc.com/tech/8051/board5/temperature.html</a><!-- m --> <br /><br />Pokombinuję może coś mi wyjdzie. A jak nie, to poprowadzę komunikację 3 przewodami i już. Tym bardziej, że i tak będę musiał puścić skrętkę 8-żyłową.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 25 wrz 2013, o 20:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-09-25T18:36:34+01:00</updated>
<published>2013-09-25T18:36:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50819#p50819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50819#p50819"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50819#p50819"><![CDATA[
<div class="quotetitle">qutrit napisał(a):</div><div class="quotecontent"><br />Jeżeli powyższy schemat jest prawidłowy, to żeby zadziałał pull-up, to na bazę tranzystora podaję 5V a linia danych DQ do 0V<br /></div> Nie. Linia DQ ma być wejściem w tym czasie, czyli mieć normalny stan jak dla czujników zasilanych zewnętrznie. Załączyć zasilanie czujników należy za CONWERT_TEMP(), a wyłączyć przed  Read_DS18B20(DS) i to wszystko. Do analizy tego układu z tranzystorem zapomnij o tym, że emiter tranzystora idzie do PB0. Zbuduj sobie taki układ sterowania LED, który umieszczony jest w obwodzie emitera.<br />Inna sprawa to przeładowywanie pojemność linii dla dużej ilości czujników tzw. Active Pullup. Nie wiem dlaczego zwiększyłeś rezystor. Stosuje się nawet taki patent, że na gdy mikrokontroler nadaje 1 to tranzystor czas krótki czas jest załączany tylko po to, żeby przeładować pojemności, a potem wyłączany, bo układ 1-Wire po pewnym czasie może sprowadzić linie danych do masy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 25 wrz 2013, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-25T10:51:13+01:00</updated>
<published>2013-09-25T10:51:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50751#p50751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50751#p50751"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50751#p50751"><![CDATA[
Próbuję i próbuję i nadal nie mogę ogarnąć tego tematu z STRONG PULL-UP  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /> Wiem, że powinienem na czas konwersji i kopiowania do EEPROMU włączyć tranzystor ale jakoś nie chce mi to zadziałać. <br />Jeżeli powyższy schemat jest prawidłowy, to żeby zadziałał pull-up, to na bazę tranzystora podaję 5V a linia danych DQ do 0V  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> Wtenczas popłynie duży prąd przez tranzystor  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> Pytam bo nie chcę uwalić uC lub DSa, a już o tego wszystkiego, to nawet tego nie jestem pewien.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 25 wrz 2013, o 10:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-22T09:15:23+01:00</updated>
<published>2013-09-22T09:15:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50380#p50380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50380#p50380"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50380#p50380"><![CDATA[
Dla sprawdzenia podłączyłem DS-y za pomocą 3 przewodów i działają idealnie (10sztuk). Najpierw pojedynczo sczytuję kody ROM które umieszczane są w EEPROM. A następnie wpinam je wszystkie na płytkę testową i pięknie działają z rezystorem podciągającym 4k7  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Przy założeniu że powyższy schemat jest prawidłowy, to może ja nie w tym miejscu co trzeba umieszczam funkcję odpowiedzialne za sterowanie bazą tranzystora ? Poniżej zamieszczam kluczowe funkcje. Jak widać próbowałem już chyba wszystkich możliwości i nic to nie pomaga  <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /> <br />[syntax=c]/**** STEROWANIE TRANZYSTOREM ****/<br />void ow_parasite_enable(void)<br />{<br />//DDRB |=(1&lt;&lt;3);<br />PORTB |=(1&lt;&lt;3);<br />}<br /><br />void ow_parasite_disable(void)<br />{<br />//DDRB &amp;=~(1&lt;&lt;3);<br />PORTB &amp;=~(1&lt;&lt;3);<br />}<br /><br />                                                                      /**** KONWERT****/<br />void CONWERT_TEMP(void)<br />{<br />//ow_parasite_enable();<br />//_delay_ms(1);<br />//ow_parasite_disable();<br />//_delay_ms(1);<br /><br />if(RESET_PULSE())<br />{<br />send_byte(DS18B20_ROM_SKIP); //wysyłamy do wszystkich na raz wiec ROM_SKIP<br /> send_byte(DS18B20_CMD_CONVERT);<br />}<br />//ow_parasite_enable();<br />}<br /> <br />                                                                       /**** ODCZYT ****/<br />void Read_DS18B20(int n)<br />{<br /> int i=0;<br />//ow_parasite_disable();<br />//_delay_ms(1);<br />if( RESET_PULSE() )//jezeli czujnik obecny<br />{<br /> send_byte(0x55);//Match_ROM_ID<br /> for(i=0; i&lt;8; i++)<br /> {<br />  send_byte(eeprom_read_byte(&amp;ROM_ID&#91;n&#93;&#91;i&#93;));<br />  }<br /><br />send_byte(DS18B20_CMD_READ_SCRATCHPAD);//polecenie sczytywanie temperatury<br /> for (i=0 ; i&lt;9; i++ )<br />{<br />  sp&#91;i&#93;=read_byte(); //zapis z DS do tablicy sp&#91;i&#93;<br /> }<br /><br />if ( (crc8( &amp;sp&#91;0&#93;, 9 ))==0 )//sprawdzewnie CRC<br />{<br />    itoa(((sp&#91;0&#93;+(sp&#91;1&#93;&lt;&lt;8))&gt;&gt;4),temperatury&#91;n&#93;,10); //funkcja zamienia liczbe na string  &gt;&gt;4 uciecie czesci ulamkowej<br />}<br />else //gdy błędna transmisja<br />{<br />          temperatury&#91;n&#93;&#91;0&#93;='N'; //do tablicy trzeba zapisywac po 1 znaku, nie mozna<br />   temperatury&#91;n&#93;&#91;1&#93;='C'; // zapisac temperatury&#91;n&#93;&#91;0&#93;=&quot;NC&quot;<br />}<br /><br />RESET_PULSE();// koniec transmisji<br />//ow_parasite_enable();<br /><br />} // koniec if ResetPulse<br /><br />else            //gdy czujnik nie wykryty  (gdy bledne połacznie kabla)<br />{<br />   temperatury&#91;n&#93;&#91;0&#93;='N'; //do tablicy trzeba zapisywac po 1 znaku, nie mozna<br />   temperatury&#91;n&#93;&#91;1&#93;='C'; // zapisac temperatury&#91;n&#93;&#91;0&#93;=&quot;NC&quot;<br />}<br />//ow_parasite_enable();<br />} //koniec funkcji<br /><br />                                                 /**** main() ****/<br />while(1)<br />{<br />if(!Tim2)<br />{<br />Tim2=100; //1 sekunda<br /><br />if(!tc) //wysylamy na zmian co sekund raz convert raz odczyt<br />{<br />//ow_parasite_disable();<br />CONWERT_TEMP();<br />//ow_parasite_enable();<br />}<br /><br />if(tc)<br />{<br />for(DS=0; DS&lt;15; DS++)<br />{<br />//ow_parasite_disable();<br />Read_DS18B20(DS);<br />//ow_parasite_enable();<br />}<br />}<br />if(++tc&gt;1) tc=0;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 22 wrz 2013, o 09:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-21T11:47:03+01:00</updated>
<published>2013-09-21T11:47:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50304#p50304</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50304#p50304"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50304#p50304"><![CDATA[
Na razie układ jest montowany na płytce testowej. Czyli kabelki miedziane o długości &lt;10cm.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 21 wrz 2013, o 11:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-09-21T11:39:00+01:00</updated>
<published>2013-09-21T11:39:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50302#p50302</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50302#p50302"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50302#p50302"><![CDATA[
ty lepiej powiedz jakim ty kablem łączysz te czujniki ? bo to też jest ważne ... polecam skrętkę Cat5<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 wrz 2013, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-21T10:49:17+01:00</updated>
<published>2013-09-21T10:49:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50300#p50300</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50300#p50300"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50300#p50300"><![CDATA[
Proszę bardzo schemat:<br /><br />Sugerowałem się tą stroną:<br /><br /><!-- m --><a class="postlink" href="http://www.pic_examples.byethost3.com/DS18B20.html" >http://www.pic_examples.byethost3.com/DS18B20.html</a><!-- m --><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/766/938ec5b8728a1b64b02a98240e7b3b8d.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/766/938ec5b8728a1b64b02a98240e7b3b8d.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 21 wrz 2013, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-20T22:26:13+01:00</updated>
<published>2013-09-20T22:26:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50285#p50285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50285#p50285"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=50285#p50285"><![CDATA[
Witam ponownie.<br />Więc rezystor 1,5kOHM działa poprawnie gdy ilość czujników jest  mniejsza niż 5. Podłączenie kolejnego powoduję iż wszystkie wskazują domyślną wartość 85. Mój projekt zakłada wykorzystanie 14 DSów, więc siłą rzeczy musiałem zastosować pull-up wykorzystując dodatkowy tranzystor. Kupiłem (kilka sztuk, na wszelki wypadek) 2N2222A (gdzieś w necie znalazłem i taki był w sklepie), podłączyłem bazę poprzez 2kOhm do PB1. Zmieniłem rezystor podciągający na 4,7kOhm od DQ do VCC. Zmieniłem funkcję odpowiedzialne z tryb pasożytniczy na:<br />[syntax=c]void ow_parasite_enable(void)<br />{<br />//CLEAR_1W(IW_PORT, IW_bit);   //bez tranzystora pull-up z rezystorem 1,5kOHm<br />      // CLEAR_1W(IW_DDR, IW_bit);<br />                   PORTB|=(1&lt;&lt;1);<br />                   DDRB |=(1&lt;&lt;1);<br />}<br /><br />void ow_parasite_disable(void)<br />{<br />//SET_1W(IW_PORT, IW_bit);     //bez tranzystora pull-up<br />//SET_1W(IW_DDR, IW_bit);<br />                  PORTB&amp;=~(1&lt;&lt;1);<br />          DDRB &amp;=~(1&lt;&lt;1);<br />}[/syntax]<br />Podłączyłem diodę do PB1 i widać jak przygasa na czas konwersji i odczytu. Emiter tranzystora do do DQ. Jedna przy podłączeniu tylko dwóch DS-ów układ wyświetla 85.  <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /><br />Co może powodować takie zachowanie  <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=766">qutrit</a> — 20 wrz 2013, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-09-16T21:20:35+01:00</updated>
<published>2013-09-16T21:20:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49888#p49888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49888#p49888"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49888#p49888"><![CDATA[
Poczytaj noty aplikacyjne, a tam polecają BSS84 (ze względu na niskie napięcie przełączania VGSth ~1...2V).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 16 wrz 2013, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-16T19:56:51+01:00</updated>
<published>2013-09-16T19:56:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49878#p49878</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49878#p49878"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=49878#p49878"><![CDATA[
Witam ponownie  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Na rezystorze podciągającym rzędu 1,5kOhm działają mi tylko 4 DS-y w trybie pasożytniczym. Niestety mój projekt zakłada wykorzystanie 15 DS-ów  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  W związku z czym nie da się ciągle zmniejszać wartości rezystora podciągającego, muszę zastosować tranzystor. I tu moje pytanie czy znają Forumowicze jakiś konkretny MODEL tranzystora, który mógłbym zastosować do tego celu  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  W datasheet jest tylko informacja, że powinien być typu mosffet, bez podania konkretnego modelu. A ja w mosfetach biegły nie jestem  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 16 wrz 2013, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-09-07T09:49:43+01:00</updated>
<published>2013-09-07T09:49:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48569#p48569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48569#p48569"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48569#p48569"><![CDATA[
bo zasadniczo to pomimo iż DS18B20 może pracować w trybie parsite , to jednak maxim zaleca DS18B20 PAR  ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 7 wrz 2013, o 09:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-09-06T21:58:39+01:00</updated>
<published>2013-09-06T21:58:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48542#p48542</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48542#p48542"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48542#p48542"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Strzał w 10 !<br /></div><br /><br />Mnie to kiedyś Mirek poradził <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />15 kohm i ds-y w trybie parasite latają na 100 metrowych kablach <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=1589">sq8dsr</a> — 6 wrz 2013, o 21:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-06T21:52:47+01:00</updated>
<published>2013-09-06T21:52:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48538#p48538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48538#p48538"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48538#p48538"><![CDATA[
Strzał w 10 ! <br />Kurcze ja podpinałem 1,5kOhm, a zadziałało dopiero z 1,2kOhm. Po prostu nie przypuszczałem, że można tak małą wartość oporu zastosować. Eh. te DS-y zawsze coś. <br />Dzięki serdreczne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 6 wrz 2013, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-09-06T10:49:28+01:00</updated>
<published>2013-09-06T10:49:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48431#p48431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48431#p48431"/>
<title type="html"><![CDATA[Re: 2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48431#p48431"><![CDATA[
Spróbuj dać większe podciąganie, też miałem problem z trybem parasite na 2,2 kohm. Daj 1,5 kohm.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 6 wrz 2013, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-09-06T08:50:14+01:00</updated>
<published>2013-09-06T08:50:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48398#p48398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48398#p48398"/>
<title type="html"><![CDATA[2x DS18b20 tryb pasożytniczy. 85C po raz n-ty]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4083&amp;p=48398#p48398"><![CDATA[
Witam,<br />ponieważ kiedyś na forum zostałem zrugany za podłączanie 2 DS-ów do osobnych pinów, to postanowiłem w obecnym zaawansowanym projekcie (termostat <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> ) podłączyć je pod jeden PIN. I mam problem, bo czujniki podłączone osobno (pojedynczo) działają bez zarzutów, a jak są razem, to obydwa pokazują nieszczęsne 85. Jest to związane z błędem konwersji. Tylko próbuje zmieniać czasy i nic to nie pomaga. Osobno podłączone działają prawidłowo, razem podłączone pokazują 85.<br />- DS-y podłączone są w trybie pasożytniczym z rezystorem 2,2kOhm<br />- Układ zasilany jest z programatora (próbowałem też z ładowarki do telefonów 5v)<br />- Wyniki prezentowane są na LCD graf.<br />- Atmega32 8MHz<br /><br />Przedstawiam moim zdaniem kluczowe fragmenty kodu.<br />plik ds18b20.c<br />[syntax=c]#define IW_DDR DDRB<br />#define IW_PORTPORTB<br />#define IW_PINPINB<br />#define IW_bit 0<br /><br />#define CLEAR_1W(port, bit) port|=_BV(bit) // 1 - wy<br />#define SET_1W(port, bit) port&amp;=~_BV(bit)// 0 - we<br /><br />EEMEM unsigned char ROM_ID&#91;15&#93;&#91;8&#93;={{0x28,0x1E,0xB4,0x02,0x05,0x00,0x00,0x34},<br />{0x28,0xAB,0xB5,0x02,0x05,0x00,0x00,0x15}};<br /><br />void ow_parasite_enable(void)<br />{<br />CLEAR_1W(IW_PORT, IW_bit); // 1 - wy<br />//PORTB|=(1&lt;&lt;0);<br />    CLEAR_1W(IW_DDR, IW_bit);<br /> //   DDRB |=(1&lt;&lt;0);<br />}<br /><br />void ow_parasite_disable(void)<br />{<br />SET_1W(IW_PORT, IW_bit);<br />//PORTB&amp;=~(1&lt;&lt;0);<br />SET_1W(IW_DDR, IW_bit);<br />//DDRB &amp;=~(1&lt;&lt;0);<br />}<br /><br />void CONWERT_TEMP(void)<br />{<br />//ow_parasite_enable();<br />//_delay_ms(10);<br />ow_parasite_disable();<br /><br />if(RESET_PULSE())<br />{<br />send_byte(DS18B20_ROM_SKIP);        //wysyĹ‚amy do wszystkich na raz wiec ROM_SKIP<br />send_byte(DS18B20_CMD_CONVERT);<br />}<br /><br />ow_parasite_enable();<br />//_delay_ms(10);<br />}<br /><br />void Read_DS18B20(int n)<br /><br />{<br />int i=0;<br />ow_parasite_disable();<br /><br />if( RESET_PULSE() )//jezeli czujnik obecny<br />{<br />send_byte(0x55);//Match_ROM_ID<br />      for(i=0; i&lt;8; i++)<br /> {<br />send_byte(eeprom_read_byte(&amp;ROM_ID&#91;n&#93;&#91;i&#93;));<br /> }<br /><br />send_byte(DS18B20_CMD_READ_SCRATCHPAD); //polecenie sczytywanie temperatury<br /><br />for (i=0 ; i&lt;9; i++ )<br />{<br />sp&#91;i&#93;=read_byte();<br />}<br /><br />if ( (crc8( &amp;sp&#91;0&#93;, 9 ))==0 )//sprawdzewnie CRC<br />{<br />        itoa(((sp&#91;0&#93;+(sp&#91;1&#93;&lt;&lt;8))&gt;&gt;4),temperatury&#91;n&#93;,10); //funkcja zamienia liczbe na string &gt;&gt;4 bez ułamka<br />}<br /><br />ow_parasite_enable();<br />RESET_PULSE();// koniec transmisji<br /><br />} // koniec if<br /><br />else //gdy czujnik nie wykryty<br />{<br />temperatury&#91;n&#93;&#91;0&#93;='N'; //do tablicy trzeba zapisywac po 1 znaku, nie mozna<br />temperatury&#91;n&#93;&#91;1&#93;='C'; // zapisac temperatury&#91;n&#93;&#91;0&#93;=&quot;NC&quot;<br />}<br /><br />} //koniec funkcji[/syntax]<br /><br />funkcja main()<br />[syntax=c]main()<br />{<br /> while(1)<br />{<br />if(!Tim2)<br />{<br />Tim2=100; // 1 sekunda<br /><br />CONWERT_TEMP();  //wyciągnięcie tych funkcji przed while(1) też nie pomaga  <br />_delay_ms(750);<br /><br />for(int DS=0; DS&lt;2; DS++)<br />{<br />Read_DS18B20(DS);<br />//_delay_ms(50);<br />}<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 6 wrz 2013, o 08:50</p><hr />
]]></content>
</entry>
</feed>