金牌会员
- 积分
- 1610
- 威望
- 734
- 贡献
- 412
- 兑换币
- 462
- 注册时间
- 2013-8-8
- 在线时间
- 232 小时
|
我是用的是LPLD的V2库,中断函数按照官方的思路编写的,当角度P= 100,D= 2,速度P=0,I= 0的时候,程序能够按照时序正常运行( LPLD_GPIO_Toggle_b(PTA,5); ///// 5HZ);但是当角度P= 100,D= 2,速度P=0,I= 0.1的时候程序就不能正常运行了( LPLD_GPIO_Toggle_b(PTA,5); ///// 2.5HZ)。。。这个时候根本无法控制直立。。求牛人解答。。
void pit0(void) //1MS进入中断
{
g_nSpeedControlPeriod ++;
SpeedControlOutput();
g_n1MSEventCount ++;
LPLD_GPIO_Toggle_b(PTA,9);/////// 500Hz
if(g_n1MSEventCount >= 5)
{
g_n1MSEventCount = 0;
}
if(g_n1MSEventCount == 0)
{
LPLD_GPIO_Toggle_b(PTD,0);
MMA8451();
ENC_03();
AngleCalculate();
AngleControl();
MotorOutput();
}
else if(g_n1MSEventCount == 1)
{
LPLD_GPIO_Toggle_b(PTD,1);
g_nSpeedControlCount ++;
if(g_nSpeedControlCount >= 20)
{
LPLD_GPIO_Toggle_b(PTA,5); ///// 5HZ
GetMotorPulse(); //读取两个电极脉冲计数值
SpeedControl();
g_nSpeedControlCount = 0;
g_nSpeedControlPeriod = 0;
}
}
else if(g_n1MSEventCount == 2)
LPLD_GPIO_Toggle_b(PTD,2);
else if(g_n1MSEventCount == 3)
LPLD_GPIO_Toggle_b(PTD,3);
else if(g_n1MSEventCount == 4)
LPLD_GPIO_Toggle_b(PTD,4);
}
|
|