Цитата(Lyt @ Oct 22 2013, 21:18)

Как я понимаю ошибка эта возникает за-за того, что умножаю на 4, а не на 4.3.
Что скажете в целом по схеме и программе? И будет ли все это работать от источника в 3 вольта?
Чтобы в рамках целочисленной арифметики умножить на 4.3 нужно сначала умножить на 43 а потом результат поделить на 10. (разумеется, при этом следить за отсутствием переполнения промежуточного результата).
Но у Вас проще: для повышения точности сначала все перемножаем, и только потом делим, следим за переполнением.
И я бы советовал переписать формулу с использованием дефайнов. собственно код не должен содержать никаких неименованных чисел(констант), только их имена.
Код
#define UrefmV 5000 //опорное напряжение АЦП в милливольтах
#define VoltageSlopeOutputResponsemV 10 //милливольт на градус цельсия.
#define NADC 256 //количество отчетов ADC для указанного UrefmV
temperatureC = ((adcCode * UrefmV) / NADC) / VoltageSlopeOutputResponsemV;
Если совсем плохо с вычислительными ресурсами- сделайте предварительно вычисленную табличку на 256 значений, в которой по индексу [adcCode] находится величина temperatureC
тогда все вычисление сведется к
Код
temperatureC = TabTemp[adcCode];
Кстати, данная таблица может учесть и дополнительные коррекции для этого TC1047, кажется был специальный аппнот с формулой 2-го или 3-го порядка.