ATMEGA32 a float

zdravim potřeboval bych radu dělam voltmeter a zobrazovač teplot s atmegou,teploty mi fungují ale mám problém s napětímkdyž chci zobrazit desetiné místo pomocí floatu tak mi to zobrazí pouze 0.00,ale když dam celé číslo tak je to OK
je to psané v code blocks tak nevím jestli v něm třeba nemám jen neco blbe nastaveného


#include <avr/io.h>
#include <util/delay.h>
#include "ds18b20.h"
#include "lcd.h"

#include <stdio.h>
#include <stdlib.h>

    void init_ADC()   {

    ADMUX=(1<<REFS0);
    ADCSRA=(1<<ADEN)|(7<<ADPS0);
        }
    //cteni z adc
    unsigned int read_ADC(unsigned char kanal)   {
    ADC=0;
    kanal=kanal&0b11100000;
    ADCSRA|=(1<<ADSC);

    while(!(ADCSRA & (1<<ADIF)));

    ADCSRA|=(1<<ADIF);
    kanal=0;
    return ADC;
    }


int main(void)
{
    unsigned int decimal;
    unsigned int integer;
    unsigned int adc;
        unsigned int u;

    //long u;
    char text[17];
    char text2[32];

    lcd_init();

    lcd_position(1,5);
    lcd_puts("Autometer");

    lcd_position(2,6);
    lcd_puts("Ver.1.0");

    _delay_ms(5000);

    lcd_clear();


    while(1)
    {

      //venkovní teplota
         OUT_TEMP_get_temp(text);

            lcd_position(1,1);
            lcd_puts(text);

            _delay_ms(300);


       //vnitřní teplota
        ds18b20_get_temp(text);

            lcd_position(1,6);
            lcd_puts(text);

            _delay_ms(300);


     //měření napětí
       init_ADC();		//inicializace AD

       adc=read_ADC(5);	//merime na kanalu 5 (ADC5)

      u = ((long)adc*0.1);


     // sprintf(text2,"U:%ldV",u); // bez des.mist
        sprintf(text2,"%3.2f",u);


       lcd_position(2,1);
     lcd_puts  (text2);
                  _delay_ms(400);

    }
}

nebo jestli neco delám jinde špatně,zde pouze část programu s měřením napětí a je tam LCD 16*2…

jupí už jsem na to došel…asi sem byl celou dobu slepej :slight_smile:

A o čo vôbec šlo?

Nejak nevidím, čo je na hodnote “0.00” zlého :slight_smile: