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

Nieprawidłowy odczyt temperatury z DS1820 na 89C2051 - jak to naprawić?

robin101 07 Kwi 2008 20:26 1125 1
REKLAMA
  • #1 5004828
    robin101
    Poziom 15  
    Posty: 66
    Pomógł: 15
    Ocena: 3
    Witam, mam problem z uruchomieniem termometru w układzie jak w temacie. Konkretnie z procedurą odczytu (zapis mi działa). Mianowicie w temperaturze pokojowej otrzymuje wynik 74 (po podzieleniu przez 2). Gdy ogrzeje układ chwytając w palce wynik szybko rośnie o kilka stopni na sekundę. Gdy nie uruchamiam konwersji to po resecie otrzymuje wartość początkową 40 zamiast 85. Pewnie jakoś bity mi się przesuwają ale nie mogę tego odnaleźć.

    
    bit OneWireReadBit(void) 
    { 
       int x;
       unsigned char presence=0; 
       OneWireBus = 0;
       OneWireBus = 1;
       for (x=0;x<=1;x++);
       if (OneWireBus == 0) presence = 0;
       if (OneWireBus == 1) presence = 1;
       return presence ; 
    } 
    
    unsigned char OneWireReadByte(void) 
    { 
       int x;
       unsigned char i; 
       unsigned char value = 0; 
       for (i=0;i<8;i++) 
       { 
          if (OneWireReadBit()) value|=0x01<<i; 
          for (x=0;x<=17;x++);
       } 
       return value; 
    } 



    w przerwaniu timera mam:
    
         ET0 = 0;	
         countth = 0;
         if (OneWireReset() == 1)
         {
           PVH = 0x58;
           PVL = 0x08;
         }
         else
         {
           OneWireWriteByte(0xCC);
           OneWireWriteByte(0xBE);
         
           PVH = OneWireReadByte() / 2;
    
           OneWireReset();
           OneWireWriteByte(0xCC);
           OneWireWriteByte(0x44);
         }
    
         ET0 = 1;
    


    Zegar 11.059MHz. Za pomoc z góry dzieki!

    Dodano po 58 [minuty]:

    Chyba już wiem. Dostałem w sklepie układ 18B20 zamiast 18S20 a on trochę inaczej ma zorganizowane przechowywanie danych. Myślę, że w tym tkwi ten problem.
  • REKLAMA
  • #2 5010432
    robin101
    Poziom 15  
    Posty: 66
    Pomógł: 15
    Ocena: 3
    Pomogło. Zamykam temat.
REKLAMA