打印

[求助] 除法的移位操作

[复制链接]
2760|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liqaz|  楼主 | 2012-4-8 18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Code of TMS320F28335 CCS4\v120\DSP2833x_examples\eqep_pos_speed\Example_posspeed.c文件中有这么一段是计算机械角度的:
  pos16bval=(unsigned int)EQep1Regs.QPOSCNT;     // capture position once per QA/QB period
     p->theta_raw = pos16bval+ p->cal_angle;        // raw theta = current pos. + ang. offset from QA

  // The following lines calculate p->theta_mech ~= QPOSCNT/mech_scaler [current cnt/(total cnt in 1 rev.)]
  // where mech_scaler = 4000 cnts/revolution
1     tmp = (long)((long)p->theta_raw*(long)p->mech_scaler);   // Q0*Q26 = Q26
2     tmp &= 0x03FFF000;                                       
3     p->theta_mech = (int)(tmp>>11);           // Q26 -> Q15
4     p->theta_mech &= 0x7FFF;   


1~4为什么要这样进行位操作,请解释一下,多谢!

相关帖子

沙发
五谷道场| | 2012-4-10 12:02 | 只看该作者
这个肯定是根据计算角度的公式,得到的程序呗,首先的知道怎么计算角度的公式啊。

使用特权

评论回复
板凳
firstblood| | 2012-4-10 17:52 | 只看该作者
高深了点啊,想帮着解答下,能力有限了啊,帮刷新一下,求助高手了。。。

使用特权

评论回复
地板
blacksword| | 2012-4-10 23:11 | 只看该作者
同二楼,楼主你需要首先知道计算的公式是什么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

258

帖子

0

粉丝