ds18b20 sensör yardım

Başlatan picman, 23 Temmuz 2012, 13:16:06

picman

arkadaşlar şu kodu bir incelermisiniz sensör ile iletişim kuramıyorum.
#include <pic18.h>
#include "delay.h"
#include "OWire.h"

#define DQ_pin      RA0
#define hat_low     RA0=0; TRISA0=0 
#define hat_high    TRISA0=1


char  OW_reset(void){ 							//sensör resetlenir												
	hat_low;
	DelayUs(250);
	DelayUs(250);
	hat_high;
	DelayUs(50);
	if(!DQ_pin){
		DelayUs(200);
		DelayUs(200);
		return(1); //resetlendi 
	}
	else return(0); //resetlenmedi
}

void OW_byte_yaz(unsigned char veri){ //bir byte lık veri gönderir..
char i;
	for(i=0; i<8; i++){
		if(veri&0x01){
			hat_low;  DelayUs(10); 	//50us 0
			hat_high; DelayUs(60);	//10us 1	
		}
		else{
			hat_low;  DelayUs(60);	//10us 0
			hat_high; DelayUs(10);	//50us 1
		}
	veri>>=1;
	}
}


char OW_byte_oku(void){
char i,veri=0,bit_no=1;
	for(i=0; i<8; i++){
			hat_low; DelayUs(2); hat_high; DelayUs(5);									
			if(DQ_pin==1) veri |= bit_no;
			DelayUs(60); 
	bit_no<<=1;
	}
 return(veri);
}


reset komutunu verince sensör cevap vermiyor. daha önce bu kodları başka projede kullanmıştım ama şimdi veri okuyamadım.
Bilgi paylaştıkça artar..

engineer42

bu sensörle benimde sorunlarım var... bende de hep -0.5 derece gösteriyor konu açtım ama pek yardım eden olmadı

picman

yabancı sitelerden bakıyorum aynı benim yaptığıma benzer kodlar var bir yanlışlık var gibi görünmüyor. ccs nin hazır kütüphanelerinin içindeki kodlara baktım o da bunun gibi benzer bir kod ama bir reset işlemini dahi yapamadık daha...
Bilgi paylaştıkça artar..

muratdu

Hocam,
Fırat Deveci nin "Hi-Tech ile PIC programlama" kitabında bir örnek gördüm. Sayfa 93'de.

http://www.scribd.com/doc/67882819/34/#DS18B20-ile-1-Wire-Tek-Hat-Uygulamas%C4%B1