5867|12

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

此程序是控制电机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 编辑 ]

最新回复

!!!!!!!!!  详情 回复 发表于 2011-7-20 11:29
 
点赞 关注

回复
举报

1282

帖子

10

TA的资源

五彩晶圆(初级)

沙发
 

回复 楼主 lnasxywzl 的帖子

给这段代码,谁能读懂?你不相信就对了。没人能读懂。建议楼主把一部分资料发表出来,大家好给你解决,不要以来论坛就发这种问题,就是大家会也不会帮你。
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 楼主 lnasxywzl 的帖子

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最后被哪个函数调用
或是,作为哪个数组的标号给出。
自然就知道,他要干什么了。

我做无刷电机控制,开关磁阻只是了解啊。
你就凑合着理解。
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

4
 
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
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

5
 
这段代码就是个计算传递数的位逻辑运算,充其量是控制软件中不到万分之一的一小个模块,我不晓得楼主说的你看到的就这些是真的假的,不过,我还是想说,楼主不厚道
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 板凳 xkdwangcs 的帖子

悲剧啊,全程序都没调用ACTIVE
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

7
 

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

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

 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 6楼 lnasxywzl 的帖子

哥们:不调用这个变量
总要指导  这个指针指导哪个地址吧

指到哪里 不就是到哪里了吗?

哥们 你要好好努力啊。
 
 
 

回复

257

帖子

0

TA的资源

一粒金砂(高级)

9
 
没感觉有什么难,LZ你自己问题都没说清!
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(高级)

10
 

原帖由 viphotman 于 2011-6-29 08:14 发表 没感觉有什么难,LZ你自己问题都没说清!

统一同意

 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 6楼 lnasxywzl 的帖子

哥们 你太不厚道了。

居然 论坛兄弟 都帮你提了这么多建议了。

你居然不公开

居然 ?


实在汗颜啊。
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

12
 
!!!!!!!!!
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

13
 
ACTIVE那个指针只到外设了,接了个FPGA,谢谢大家了
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表