sıcaklığı okuduğumda hep 85 derece olarak gösteriyor. parasit power olarak devreyi gerçekldim ama bir türlü 85 den başka değer göstermiyor. Yardımcı olması açısından kodu da koyuyorum. Yardımlarınız için teşekküerler..
float ds18b20_oku(void)
{
unsigned char msb,busy=0,negatif=0,lsb,i=0;
float deger,ondalik=0;
reset();
bir_byte_yazma(0xCC);
bir_byte_yazma(0x44);
while(i==750)
{GecikmeUs(1000); i++;}
reset();
bir_byte_yazma(0xCC);
bir_byte_yazma(0xBE);
lsb=bir_byte_okuma();
msb=bir_byte_okuma();
if(msb&0xf0) negatif=1;
if(lsb&0x08) ondalik += 0.5;
if(lsb&0x04) ondalik += 0.25;
if(lsb&0x02) ondalik += 0.125;
if(lsb&0x01) ondalik += 0.0625;
deger =((msb<<4)+(lsb>>4)+ondalik);
while(i==250)
{GecikmeUs(1000); i++;}
return deger;
}
sensör parasit power mı ?
DS18B20-PAR
return'den önce şu satırları ekle:
reset(); //reset
bir_byte_yazma(0xCC); //Skip ROM
bir_byte_yazma(0x44); //Start Conversion
Edit: üst satırlarda varmış zaten, görmemişim. pardon.
Kaç adet sensör bağlı ve pull-up direnci nedir ?
Sorunu çözdüm 1 adet sensör bağlıydı. Çok salakça bir hata yapmışım. :-[