在我提出这个问题之前,我将介绍问题的背景。
我的PIC 18F汇编程序例程将Rntc解析为T°C关系。 但精度最好是3位数。
我在汇编程序示例中使用的NTC参考电阻为10000欧姆,对应于25°C的温度。
只有3位可用,方程式解决方案是= xF6,d246 在T的显示上显示,小数点在24和6之间。
计算T的时间,包括牛顿近似值约为800us。这个计算时间看起来比MPlab C好得多。
用于计算等式的sqrt的汇编程序 y = 9.228 * x * x-840.852 * x + 25236.82遇到了缩放问题 b2-4ac ...当我试图包含小数时,数字溢出我的24位数学套件,例如我必须使用a = 9。 b = 840 c = 25236
Q1使用整数,是否有一些使用24位数学计算上述数字的技巧?
答案 0 :(得分:5)
我认为真正需要的不仅仅是大约10位精度。
等式sqrt(a* x^2 + b*x + c)
,x = 178..1196给出非常线性的响应。人们甚至不必使用查找表进行分段线性逼近。
线性方程式为y = 3.03x-129
编辑:通过注意到0.03 * x~ = 8/256 * x,可以进一步简化等式;
因此y=a+(a<<1)+(a>>5) - 131; // 8/256 = 0.03125 to be precise.
将常量修改为131以将误差微调为〜零均值。
这些图显示了180<x<1200