|
最近用AVR做个小东西,其中一个功能是测量输入的模拟量,目的1将AD值转为速度进行显示,目的2输出对应频率的脉冲。
定义了全局变量,用来保存AD值到速度及脉冲的比例系数;
volatile float XAD2Spd,YAD2Spd,XAD2Pul,YAD2Pul;
然后在程序开始进行比例系数的计算,因为老是出问题,所以改成了很多步骤来计算;
FloatTemp1=(float)X1VRotRate;
FloatTemp2=(float)XPitch;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp2=FloatTemp2/1000.0;
XAD2Spd=FloatTemp1*FloatTemp2*4.0*2.495/4095.0;
FloatTemp1=(float)Y1VRotRate;
FloatTemp2=(float)YPitch;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp2=FloatTemp2/1000.0;
YAD2Spd=FloatTemp1*FloatTemp2*4.0*2.495/4095.0;
FloatTemp1=(float)X1VRotRate;
FloatTemp2=(float)XPitch;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp3=(float)JET3Resolution;
FloatTemp3=FloatTemp3/1000.0;
FloatTemp4=FloatTemp1*FloatTemp2*FloatTemp3*4.0*2.495/60.0/4095.0;
XAD2Pul=FloatTemp4;
FloatTemp1=(float)Y1VRotRate;
FloatTemp2=(float)YPitch;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp2=FloatTemp2/1000.0;
FloatTemp3=(float)JET3Resolution;
FloatTemp3=FloatTemp3/1000.0;
FloatTemp4=FloatTemp1*FloatTemp2*FloatTemp3*4.0*2.495/60.0/4095.0;
YAD2Pul=FloatTemp4;
计算出来的数值没有问题;
但是继续运行就会出问题
整个程序里面就只有将XAD2Spd,YAD2Spd,XAD2Pul,YAD2Pul赋值给别的参数,没有别的地方给这几个参数赋值
FloatTemp1=XAD2Spd;
XSPDValueShow=(uint)((float)XADValueShow*FloatTemp1);
FloatTemp1=YAD2Spd;
YSPDValueShow=(uint)((float)YADValueShow*FloatTemp1);
FloatTemp1=(float)XADAvg;
FloatTemp2=XAD2Pul;
FloatTemp3=FloatTemp1*FloatTemp2;
XFreq=(uint)FloatTemp3;
FloatTemp1=(float)YADAvg;
FloatTemp2=YAD2Pul;
FloatTemp3=FloatTemp1*FloatTemp2;
YFreq=(uint)FloatTemp3;
就是如上的程序,现在不明白是为什么了,麻烦帮忙看下,谢谢
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|