msp430 ADC12进行双通道重复采样,采用定时器中断采样,然后对采样数据进行处理,DAC0832输出,我试验了 ADC采样和DAC输出,两者可以,对采样的波形可以误差很小的DAC复原,
然后问题来了,我将采样数据x和y进行一些算法的处理,输出波形完全乱了。(图3)只添加下面的语句
其中k1 k2 k3 是系数,x y是双通道采样值,sqrt是math.h中的函数
Fx=(-k1*y) -(k2*d_x);
if(Fx>0) { Ix=(int)sqrt(Fx*x*x/k3);}
else { Ix=(int)sqrt(-Fx*x*x/k3);}
情况1当没有 if(Fx>0) { Ix=(int)sqrt(Fx*x*x/k3);}
else { Ix=(int)sqrt(-Fx*x*x/k3);}
输出的x y波形如图1,波形很好,也很稳定;
情况2 然后我把sqrt去掉 if(Fx>0) { Ix=(int)(Fx*x*x/k3);}
else { Ix=(int(-Fx*x*x/k3);}
输出的x y波形波形如图2,波形开始震荡,不稳定;
情况3 然后我把除法和开根号都去掉 if(Fx>0) { Ix=(int)(Fx*x*;}
else { Ix=(int(-Fx*x*x);}
输出的x y波形波形如图1了,很好很稳定
分析其原因,我觉得是msp430 单片机对 除法和开根号没有办法处理,导致程序跑偏了。(我输入的是两路直流电,测的是DAC0832两路输出)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>