<html>
  <head>
    <meta content="text/html; charset=ISO-8859-2"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <font face="Helvetica, Arial, sans-serif">Co takhle osciloskop a
      dalsi pin, na kterem se bude trasovat, kde zrovna se program
      nachazi?<br>
      Takhle to sice muze vypadat celkem spravne, ale jde o skutecny
      signal, ktery muze byt ovlivneny necim dalsim (HW, SW)...<br>
      Sam jsem s timto pulsem nikdy nebojoval, vzdy to fungovalo dle
      predpokladu - ale samozrejme az pote, kdyz jsem to odladil - i s
      pomoci osciloskopu :-)<br>
      <br>
      Hynek Sladky<br>
      <br>
      <br>
      <br>
    </font>
    <div class="moz-cite-prefix">Dne 18.9.2014 12:00, Michal Grunt
      napsal(a):<br>
    </div>
    <blockquote
cite="mid:D6AAF5B18DEB6946BD68BA205446DBE34B960237@s-exchange2.vynet.local"
      type="cite">
      <pre wrap="">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.

uint8_t i1;

DS18B20_PortOut();
GPIO_SetBits(DS18B20_PORT, DS18B20_PIN);
GPIO_ResetBits(DS18B20_PORT, DS18B20_PIN);
delay_us(500);          //min. 480us
DS18B20_PortIn();
while(GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN) != 1);
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...
i1 = GPIO_ReadInputDataBit(DS18B20_PORT, DS18B20_PIN);
xprintf("%d\n", i1);

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?

MG

-----
void DS18B20_PortOut(void) {
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);
}

void DS18B20_PortIn(void) {
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = DS18B20_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);
}

</pre>
    </blockquote>
    <br>
  </body>
</html>