茫羽 发表于 2013-7-18 14:57:57

步进电机和编码器程序 的一些问题,求助···

使用的是400线的编码器,步进电机每个脉冲走1.8度
int motor_stop()//返回1为停止
{
        int n;
        n=STOP;//读取编码器数据
        if(anglechange==n)
        {
                return(1);
        }
        else
        {
                anglechange=n;
                return(0);
        }
}


viod main()               
for(t1=1;t1<=202;t1++)//循环一
                {
                for(t=1;t<=202;t++)//循环二
                {
                        LOW_CP;
                       __delay_cycles(150);
                                  HIGH_CP;
                       __delay_cycles(350);//脉冲完成

                       if((motor_stop())==1)//读取编码器数据
                       {
                               t2++;
                       }
                        if(t2==400)//转到一圈的时候
                        {
                                __delay_cycles(1);
                        }
                }
                }

结果是循环二步进电机只动一下, 循环一中步进电机转了快几圈。
当t2=400的时候,步进电机也仅动了一点点。这是怎么一回事,按照一个脉冲1.8度的话,202次脉冲差不多一圈,但是电机只动一下。
当编码器的值变化400次的时候应该也是一圈,结果还是只动了一点。
程序哪里出问题了?
我是在__delay_cycles(1); 处设置断点来看程序跑到哪里了,断点全部去掉后步进电机可以正常运转。
页: [1]
查看完整版本: 步进电机和编码器程序 的一些问题,求助···