Цитата(Batman @ Apr 6 2007, 22:00)

Так в памяти ОЗУ данный массив str[15] имеет какое-то значение только в элементе str[0]! Остальные равны 0. Хотя переменная TEMP равна 0,936214.....
Вы, наверное, использовали стандартный printf. Он не поддерживает плавающую точку. Нужно добавить -Wl,-u,vfscanf -lscanf_flt
Цитата
А можно в WinAVR еще как-то float в строчное преобразовать? (а потом по ASCII коду определить цифру и вывести ее на LED индикатор)
Поскольку вам на LED под точку отдельное знакоместо не нужно (а printf вставит точку-символ), если число знаков после запятой фиксированное, используйте itoa/ltoa/utoa. Например, itoa(TEMP * 1000 + 0.5, str, 10), а точку потом на нужном сегменте засветите. Учтите, что число будет выровнено влево, старшие нули пропадут. Для вашего случая получится "936". Придется самому выравнивать. Если лень, только для положительных формата XX.XX - sprintf_P(str, PSTR("%2d%02d"), (int)TEMP, (int)(TEMP * 100 + 0.5) % 100);