跪求:我不相信谁能读懂2812控制电机的一段程序,给出源代码

2019-03-24 15:58发布

此程序是控制电机3相通电的开关程序 temp=srd_active[0]+(srd_active[1]*2)+(srd_active[2]*4)+(work_mode*8)+(pwm_mode*16); *ptrACTIVE=temp; 其中srd_active[0]=0 srd_active[1]=0 srd_active[2]=0 work_mode=1 pwm_mode=1 *ptrACTIVE不知道是什么其中srd_active的3个值是0或1,是电机3相的高低电平谁能告诉我*ptrACTIVE得的值是什么,*ptrACTIVE是什么跪求 源代码给出:  if (direct==forward)              
        {
     switch(rotor)                                  {
       case 1:
             srd_active[0]=0x1;
             srd_active[1]=0x0;
             srd_active[2]=0x0;
             break; 
       case 2:
             srd_active[0]=0x0;
             srd_active[1]=0x1;
             srd_active[2]=0x0;
             break;
       case 4:
             srd_active[0]=0x0;
             srd_active[1]=0x0;
             srd_active[2]=0x1;
             break;
       case 3:
             srd_active[0]=0x1;
             srd_active[1]=0x1;
             srd_active[2]=0x0;
             break;
             
        }
       }
  temp=srd_active[0]+(srd_active[1]*2)+(srd_active[2]*4)+(work_mode*8)+(pwm_mode*16);
    *ptrACTIVE=temp; 如果rotor=2 我看的就是这个,都给出来了 继续跪求 [ 本帖最后由 lnasxywzl 于 2011-6-27 16:24 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
fxw451
1楼-- · 2019-03-25 01:21
 精彩回答 2  元偷偷看……
xkdwangcs
2楼-- · 2019-03-25 02:20
< :TI_MSP430_内容页_SA7 --> switch(rotor)                                  {
       case 1:
             srd_active[0]=0x1;
             srd_active[1]=0x0;
             srd_active[2]=0x0;
             break;  
       case 2:
             srd_active[0]=0x0;
             srd_active[1]=0x1;
             srd_active[2]=0x0;
             break;
       case 4:
             srd_active[0]=0x0;
             srd_active[1]=0x0;
             srd_active[2]=0x1;
             break;
       case 3:
             srd_active[0]=0x1;
             srd_active[1]=0x1;
             srd_active[2]=0x0;
             break;
            
        }
这段程序比较简单,比如rotor==2用二进制来表示就是010,分离出来给三个标志来记录。其他的也是一样的。把rotor的值分离出来。放在数组的三位当中去了。

第二点:
根据变量的定义SRD_xxxx,我可以知道楼主控制的是开关磁阻电机了。
这样的话,利用角度传感器得来的信号就是应该上面得出来的四个结果
1,2,3,4了。
这样我能想到的是:那个输出结构一定是控制字。
这个控制字来控制,硬件的PWM信号的。
楼主,你结合开关磁阻电机想想了。

其实要想知道更多,我觉得楼主应该把*ptrACTIVE最后被哪个函数调用
或是,作为哪个数组的标号给出。
自然就知道,他要干什么了。

我做无刷电机控制,开关磁阻只是了解啊。
你就凑合着理解。
leang521
3楼-- · 2019-03-25 06:06
temp=srd_active[0]+(srd_active[1]*2)+(srd_active[2]*4)
            +(work_mode*8)+(pwm_mode*16)
         =srd_active[0]+(srd_active[1]<<1)+(srd_active[2]<<2)
            +(work_mode<<3)+(pwm_mode<<4)
         =000x xxxx
leang521
4楼-- · 2019-03-25 07:57
 精彩回答 2  元偷偷看……
lnasxywzl
5楼-- · 2019-03-25 10:01
悲剧啊,全程序都没调用ACTIVE
leang521
6楼-- · 2019-03-25 14:51

原帖由 lnasxywzl 于 2011-6-28 09:31 发表 悲剧啊,全程序都没调用

那你就把全部代码放上来,PACTIVE明显是个指针,并不需要直接调用

一周热门 更多>

相关问题

    相关文章