<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Text bubliny Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.StylE-mailovZprvy18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.TextbublinyChar
        {mso-style-name:"Text bubliny Char";
        mso-style-priority:99;
        mso-style-link:"Text bubliny";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="CS" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Díky, už asi vím kde jsem dělal chybu. Hned mezi 2. a 3. řádkem. Na začátku reset pulzu by měla být kratší časová prodleva. Po otestování je 50us minumum, když
 nastavím méně už to nefunguje resp. funguje, ale mám tu inicializaci ve smyčce (s 1s pauzou), abych mohl různě testovat odpojování drátů od čidla a koukat co to bude dělat a první inicializace proběhne v pořádku (vrátí se 0), ale další už ne (vrátí 1). Pokud
 tam dám 50us prodlevu reaguje to v pořádku nejen na první spuštění inicializace, ale i na ty další.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Po otestování je i těch 50us také v některých případech málo (když jsem různě připojoval/odpojoval piny čidla), 100us už je jistota.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:#005032;background:silver;mso-highlight:silver">uint8_t</span><span style="font-size:10.0pt;font-family:Consolas;color:black">
<b>init_1820</b>()</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">{</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span style="font-size:10.0pt;font-family:Consolas;color:#005032;background:silver;mso-highlight:silver">uint8_t</span><span style="font-size:10.0pt;font-family:Consolas;color:black"> i1, i2;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       DS18B20_PortOut();</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       GPIO_SetBits(DS18B20_PORT, DS18B20_PIN);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       delay_us(100);            
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">// <u>nutne</u> !!!
<u>min</u>. 50us <u>spis</u> vice</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       GPIO_ResetBits(DS18B20_PORT, DS18B20_PIN);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       delay_us(500);            
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">//<u>min</u>. 480us</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       DS18B20_PortIn();</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       delay_us(70);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       i1 = GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       delay_us(400);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       i2 = GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">       DS18B20_PortOut();</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">//<u>xprintf</u>("%d,%d\n", i1,i2);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">      
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">if</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> ((i1 == 0) && (i2 == 1))
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">return</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> 1;
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">else</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">return</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> 0;</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">}</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">MG</span><br>
<br>
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Hw-list [mailto:hw-list-bounces@list.hw.cz]
<b>On Behalf Of </b>Cizek Milan<br>
<b>Sent:</b> Thursday, September 18, 2014 12:08 PM<br>
<b>To:</b> HW-news<br>
<b>Subject:</b> Re: DS18B20 detekce presence pulzu<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Ahoj,<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>nevím jestli ti to k něčemu bude, ale funguje mi<o:p></o:p></p>
<p><o:p> </o:p></p>
<p>DS_INIT  BANK1<br>
   bcf  TRISB,0    ; DSWIRE jako výstup<o:p></o:p></p>
<p>   BANK0<br>
   bsf  LED2    ; rozsvítit LED2<br>
   clrf TMR0<br>
   bsf  INTCON,T0IE   ; aktivovat TMR0<o:p></o:p></p>
<p>   bcf  DSWIRE    ; nastavíme Lo úroveň<br>
   WAIT .500    ; >480us (reset pulse)<br>
   bsf  DSWIRE    ; nastavíme Hi úroveň<o:p></o:p></p>
<p>   BANK1<br>
   bsf  TRISB,0    ; DSWIRE jako vstup<br>
   WAIT .70     ; zpoždění (15-60us)<o:p></o:p></p>
<p>   BANK0<br>
   btfsc DSWIRE    ; zjistíme úroveň<br>
   goto DS_MISSED<o:p></o:p></p>
<p>   ; máme Lo úroveň - něco nám odpovídá<br>
   WAIT .400    ; >400us stále odpověď<br>
   return<o:p></o:p></p>
<p>DS_MISSED ; máme Hi úroveň - sběrnice je mrtvá<br>
   WAIT .400    ; >400us stále odpověď<br>
   call SEND_NODS   ; odpověď: žádná čidla<br>
   return<o:p></o:p></p>
<p style="margin-bottom:12.0pt"><br>
-- <br>
Milan Čížek<o:p></o:p></p>
<p>---------- Původní zpráva ----------<br>
Od: Michal Grunt <<a href="mailto:michal.grunt@vynet.cz">michal.grunt@vynet.cz</a>><br>
Komu: HW-news (<a href="mailto:hw-list@list.hw.cz">hw-list@list.hw.cz</a>) <<a href="mailto:hw-list@list.hw.cz">hw-list@list.hw.cz</a>><br>
Datum: 18. 9. 2014 12:00:58<br>
Předmět: DS18B20 detekce presence pulzu<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Už jsem trochu bezradný. Nějak se mi nedaří detekovat presence pulz DS18B20... Když inicializaci DS18B20 nastavím natvrdo tak je to OK a čidlo funguje, ale potřebuji zdetekovat presence pulz jestli je čidlo připojeno, aby mi funkce pro
 čtení teploty nevyhazovala nějaký hausnumera.<br>
<br>
uint8_t i1;<br>
<br>
DS18B20_PortOut();<br>
GPIO_SetBits(DS18B20_PORT, DS18B20_PIN);<br>
GPIO_ResetBits(DS18B20_PORT, DS18B20_PIN);<br>
delay_us(500); //min. 480us<br>
DS18B20_PortIn();<br>
while(GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN) != 1);<br>
delay_us(150); //15us - 60us by měla být 1 a pro dalších 60us-240us 0 takže těch 150us by mělo zasahovat někam mezi 60-240...<br>
i1 = GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN);<br>
xprintf("%d\n", i1);<br>
<br>
Pořád mi to vyhazuje 1, ale měla by se mi vrátit 0 i to while jsem si rozepsal... Kde dělám chybu?<br>
<br>
MG<br>
<br>
-----<br>
void DS18B20_PortOut(void) {<br>
GPIO_StructInit(&GPIO_InitStructure);<br>
GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;<br>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br>
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;<br>
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;<br>
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br>
GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);<br>
}<br>
<br>
void DS18B20_PortIn(void) {<br>
GPIO_StructInit(&GPIO_InitStructure);<br>
GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;<br>
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br>
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;<br>
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;<br>
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br>
GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);<br>
}<br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></p>
</blockquote>
</div>
</body>
</html>