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

[Attiny2313][C] Prośba o sprawdzenie programu - ds18b20

KubeqZ 10 Mar 2010 14:42 858 0
REKLAMA
  • #1 7809677
    KubeqZ
    Poziom 16  
    Witam

    Bazując na którymś z kodów dostępnych na forum, opracowałem obsługę czujnika temperatury ds18b20. Kod działa, proszę jednak o wskazówki co do możliwej optymalizacji oraz o sprawdzenie czy poprawnie jest zrealizowany odczyt temperatury ujemnej.. Kod w załączniku, natomiast poniżej najbardziej interesujący mnie fragment :

          unsigned char lsb = ow_byte_rd(); // onewire - odczytaj bajt
          unsigned char msb = ow_byte_rd(); // onewire - odczytaj bajt
          
          
          char buffer[5];
       
         int calk = ((lsb & 0b11110000)>>4) | ((msb & 0b00000111)<<4); //składamy liczbe calkowita temperatury
          if (msb & 0b10000000)
          {
          if (calk==127)  //aby dla -0.1 byl "-"
          {
             LCD_WriteText("-");
          }
          calk= calk-127;
          }
    
          LCD_Clear();
        
         itoa(calk, buffer, 10);
          LCD_WriteText(buffer);
        
         int ulamek = ((lsb & 0b00001111)*625)/1000;
          if (msb & 0b10000000)
          {
          if (ulamek >0) //po to aby dla ujemnych temp. ulamek nie odliczal w dol tzn. -1.9, -1,8 itd..
             {
             ulamek = 9-ulamek;
             }
          }
    
          LCD_WriteText(".");
         
          itoa(ulamek, buffer, 10);
          LCD_WriteText(buffer);
          LCD_WriteText("'C"); 
  • REKLAMA
REKLAMA