中级会员
- 积分
- 379
- 威望
- 207
- 贡献
- 102
- 兑换币
- 109
- 注册时间
- 2012-10-27
- 在线时间
- 35 小时
|
6#
楼主 |
发表于 2013-6-12 20:10:45
|
只看该作者
凌心 发表于 2013-6-10 20:43
感觉还是像代码问题,要不你就把运算数据输出看一下吧。
程序在K60上能运行,移植到9S12XS128上就出问题了。
经过测试,已确定不是时钟问题(48Mhz,32Mhz,16Mhz都出现相同问题);
不是芯片问题(同一程序在两次购买的芯片上出现同样问题);
也不是串口问题。
代码如下,恳请帮忙看看!
感激不尽!
//-------------------------------------------------------
//函数名:Calc_Ang
//参数:
//返回:void
//功能:获得车模倾角
//-------------------------------------------------------
void Calc_Ang(void)
{
float AngVelTol_X; //X轴转动角速度
float Acc_real; //实际加速度
float err,err1;
AngVelTol_X = (float)((ADSam_gyro - AngVelZero_X) * REC_ANGVEL_RATIO);
Acc_real = (float)((ADSam_acc - stop_Acc) * REC_ACC_RATIO);
err = Acc_real - Ang_previou_X;
err1 = AngVelTol_X + KP_angvel * err;
Ang_current_X = Ang_previou_X + KI_angvel * err1;
AngVel_current_X = Ang_current_X - Ang_previou_X;
Ang_previou_X = Ang_current_X;
//--------------- 准备要发送的数据 -----------------
virtScope_3 = Ang_current_X; //虚拟示波器通道3
virtScope_4 = Acc_real; //虚拟示波器通道4
}
说明:
REC_ANGVEL_RATIO = 3.5
REC_ACC_RATIO = 1.5
ADSam_gyro 是陀螺仪采集输出; AngVelZero_X是陀螺仪静止时输出
ADSam_acc 是加速度计采集输出;stop_Acc是直立时加速度计输出
|
|