旋转编码器测速c语言程序,官方例程中编码器测速程序高低速怎么区分

这篇博客讨论了使用eQEP模块进行旋转编码器测速的C语言程序,包括高速计算(M法)和低速计算(T法)。在官方例程中,通过检查单元超时事件(UTO)和单元位置事件(UPEVNT)来计算速度。文章提出疑问,仅依赖这两个标志位是否足以区分高速和低速测速,询问是否需要额外的判断条件或在初始化时有特别设置。
摘要由CSDN通过智能技术生成

如下是官方编码器测速的程序:

//**** High Speed Calculation using QEP Position counter ****//

// Check unit Time out-event for speed calculation:

// Unit Timer is configured for 100Hz in INIT function

if(EQep1Regs.QFLG.bit.UTO==1) // If unit timeout (one 100Hz period)

{

/** Differentiator **/

// The following lines calculate position = (x2-x1)/4000 (position in 1 revolution)

pos16bval=(unsigned int)EQep1Regs.QPOSLAT; // Latched POSCNT value

tmp = (long)((long)pos16bval*(long)p->mech_scaler); // Q0*Q26 = Q26

tmp &= 0x03FFF000;

tmp = (int)(tmp>>11); // Q26 -> Q15

tmp &= 0x7FFF;

newp=_IQ15toIQ(tmp);

oldp=p->oldpos;

if (p->DirectionQep==0) // POSCNT is counting down

{

if (newp>oldp)

Tmp1 = - (_IQ(1) - new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值