[an error occurred while processing this directive]
|
АЦП и для вычисления результата, заданы в виде чисел с плавающей точкой и зашиваются в ПЗУ индивидуально для каждого кристалла при производстве. И если, скажем, величина опорного напряжения равна 1.234567В и определена с точностью до 5 знака после точки, и аналогично определены другие константы, то переход к целочисленной арифметике очень проблематичен. Во-первых, преобразование в целое число при масштабировании все равно потребует использования операций с плавающей точкой. А во-вторых, для сохранения допустимой точности АЦП вычисление результата должно выполняться с числами типа long, что будет выполняться не намного дольше по сравнению с float. К тому же это потребует дополнительной памяти для хранения в программе еще и подпрограмм для выполнения операций над данными типа long.
А в общем, чтобы понять до конца всю сложность работы с этим прибором, нужно хотя бы ознакомиться с ним. И вполне вероятно, что данный прибор является скорее исключением из общего правила, но я отнюдь не думаю, что это исключение единственное. Поэтому, я не могу категорично утверждать, что ВСЕГДА надо работать с целыми числами.
Кстати, когда делали свой первый проект еще на I8080, мы хотя и использовали числа с фиксированной точкой (подпрограмм плавающей арифметики у нас просто не было), но числа использовались дробные, т.е. в диазоне 0. <= X < 1.0. Это дало нам возможность избежать значительных ошибок при вычислениях. Естественно, что все подпрограммы вычислений пришлось писать самим, ведь мы начинали это дело с голимого нуля.
E-mail: info@telesys.ru