|
最近用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周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|