Witam
Oto kod czy ktoś mógłby rzucić okiem gdzie jest błąd? Ogólnie wyświetla przez cały czas 85 stopni.
Tak wygląda sama konwersja w czujniku:
To obliczenie i wyświetlenie temperatury:
dodam, że wyszukiwanie DS18B20 po adresie odbywa się prawidłowo. Inicjalizacja wyświetlacza prawidłowa. Czy może błąd tkwi w konwersji?
Z góry dziękuję za pomoc
Oto kod czy ktoś mógłby rzucić okiem gdzie jest błąd? Ogólnie wyświetla przez cały czas 85 stopni.
Tak wygląda sama konwersja w czujniku:
void LCD_18b20_multidrop(/*unsigned char posx, unsigned char posy,*/ unsigned char *adrr)
{
unsigned char i,tablica[4];
signed char alarm;
int temp;
ow_reset();
ow_byte_wr(0xCC);
ow_byte_wr(0x44);
delay_ms(2000);
ow_reset();
ow_byte_wr(0x44);To obliczenie i wyświetlenie temperatury:
temp=0;
temp = tablica[1]<<4 | tablica[0]>>4;
if (tablica[1]&0xF8) temp=-temp;
LCD_xy(0,0);
LCDnapis("Max: ");
LCD_putint(tablica[2]);
LCDnapis("Min: ");
LCD_putint(tablica[3]);
LCD_xy(0,1);
LCD_putint(temp);
LCDznak('.');
LCD_putint((tablica[0] & 0x0F)*625/1000);
LCDznak('C');dodam, że wyszukiwanie DS18B20 po adresie odbywa się prawidłowo. Inicjalizacja wyświetlacza prawidłowa. Czy może błąd tkwi w konwersji?
Z góry dziękuję za pomoc
