Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

DS18b20 sorunu

Başlatan buzkırıcı, 30 Nisan 2012, 04:05:03

buzkırıcı

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;           
}
İmza Atmayı bilmem Parnak Bassam olur mu?

Maxim

sensör parasit power mı ?
DS18B20-PAR

bocek

#2
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.
1 ya da 0. işte 'bit'ün mesele..

camby

Kaç adet sensör bağlı ve pull-up direnci nedir ?

buzkırıcı

Sorunu çözdüm 1 adet sensör bağlıydı. Çok salakça bir hata yapmışım.  :-[
İmza Atmayı bilmem Parnak Bassam olur mu?