logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ds18b20 i search rom problem [c]

tigiscus 22 Mar 2010 22:04 1391 0
REKLAMA
  • #1 7867783
    tigiscus
    Poziom 2  
    Witam

    Ostatnio zbudowalem sobie termometr na ds18b20 - do Atmega8 podpialem ten wlasnie czujnik, wyswietlacz lcd, oprogramowalem to i wszystko dziala. Postanowilem wiec podlaczyc drugi czujnik (wykorzystujac search rom). I tu wlasnie zaczal sie moj problem - prawidlowo odczytywany jest tylko pierwszy bit. Przekopalem sporo postow na forum jednak nie znalazlem podobnego problemu. Uzylem rowniez schematu Maxima, skopiowalem kod z dokumentacji do wyszukiwania urzadzen po 1-wire, niestety z podobnym skutkiem. Moja procedura wyglada nastepujaco :

           unsigned char ds18b_cnt = 0,ucReset,i;
    		unsigned char discrp = 0, last_bit = 0, last_zero;
    		unsigned char a,b;
    		do 
    		{
    			last_zero = 0;
    			owire_write_byte(0xF0);
    		    for(i=0; i<64; i++)
    		    {
    				a = owire_read_bit();
    				b = owire_read_bit();
    				if(a==1 && b==1){
    					lcd_puts("error?!?");
    				}
    				else
    				{
    					if(!(a || b))
    					 {
    						a = (i == discrp)? 1 : (i>discrp ? 0 : last_bit);
    						if(!a) last_zero = i;
    					 }
    					 owire_write_bit(last_bit = a);
    					 rom[ds18b_cnt][i/8] |= a<<(i%8);
    					
    				}
    			}
    		ds18b_cnt++;
    		discrp = last_zero;
    		}
    		while((ds18b_cnt < 2)&& discrp);
    


    Siedze juz nad tym sporo czasu i naprawde nie wiem w czym moze tkwic problem...
  • REKLAMA
REKLAMA