智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1044|回复: 0
打印 上一主题 下一主题

直立,加速度控制之后

[复制链接]

17

主题

151

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1610
威望
734
贡献
412
兑换币
462
注册时间
2013-8-8
在线时间
232 小时
跳转到指定楼层
1#
发表于 2014-4-5 10:39:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是用的是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);


}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-8 21:02 , Processed in 0.047364 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表