Witam mam program który wyświetla temperaturę oto on
write_text(dtostrf(celcius, 3, 1, tab)); to coś zabiera 20% atmegi8
czy ktoś zna jakiś prostszy sposób konwersji aby wyświetlić temperaturę, dodaje że ds18b20 jest ustawiony na najniższą rozdzielczość aby szybciej pomiar szedł. Proszę o jakieś fragmenty kodu, ktoś kiedyś coś mi mówił że mozna to zrobić na itoa ale nie wiem jak to zrobić.
void temperatura(void)
{
ow_reset();
ow_write_byte(0xCC);
ow_write_byte(0x44);
_delay_ms(100); // czas pomiaru
ow_reset();
ow_write_byte(0xCC);
ow_write_byte(0xBE);
lsb = ow_read_byte();
msb = ow_read_byte();
ow_reset();
celcius = msb << 8 | lsb ;
celcius/=16;
temp = ((msb<<4)|(lsb >> 4));
unsigned char tab[6];
lcd_xy(0,10);
write_text(dtostrf(celcius, 3, 1, tab));
uint8_t znak1[] = {0,14,10,14,0,0,0,0};
LCD_DefineCharacter(0, znak1);
lcd_xy(0,14);
write_char(0);
write_text("C");
}
write_text(dtostrf(celcius, 3, 1, tab)); to coś zabiera 20% atmegi8