我想要在光电标码盘到达一定位置后将 位置计数器清零,然后再继续运行,
EQep1Regs.QDECCTL.bit.QSRC=00; //设定eQep的计数模式为正交模式
EQep1Regs.QEPCTL.bit.FREE_SOFT=2;
EQep1Regs.QEPCTL.bit.PCRM=01;
EQep1Regs.QEPCTL.bit.IEI=2;
EQep1Regs.QPOSINIT=1182;
EQep1Regs.QEPCTL.bit.UTE=1; //使能UTE单元溢出功能
EQep1Regs.QEPCTL.bit.QCLM=1; //当UTE单元溢出时允许锁存
EQep1Regs.QEPCTL.bit.QPEN=1; //使能eQEP
EQep1Regs.QCAPCTL.bit.UPPS=5; //1/32 for unit position
EQep1Regs.QCAPCTL.bit.CCPS=7; //1/128 for CAP clock
EQep1Regs.QCAPCTL.bit.CEN=1; //使能eQEP的捕获功能
EQep1Regs.QPOSMAX=p->Encoder_N; //设定计数器的最大值
EQep1Regs.QEPCTL.bit.SWI=1; //软件强制产生一次Index脉冲
EQep1Regs.QPOSCNT = 0;
InitEQep1Gpio(); //初始化eQEP相关引脚
可是寄存器看出来没有清零,想请教一下,谢谢
HeiHei:可以选择在计数器最大值后清零,也可以每个index后清零
我想要在光电标码盘到达一定位置后将 位置计数器清零,然后再继续运行,
EQep1Regs.QDECCTL.bit.QSRC=00; //设定eQep的计数模式为正交模式
EQep1Regs.QEPCTL.bit.FREE_SOFT=2;
EQep1Regs.QEPCTL.bit.PCRM=01;
EQep1Regs.QEPCTL.bit.IEI=2;
EQep1Regs.QPOSINIT=1182;
EQep1Regs.QEPCTL.bit.UTE=1; //使能UTE单元溢出功能
EQep1Regs.QEPCTL.bit.QCLM=1; //当UTE单元溢出时允许锁存
EQep1Regs.QEPCTL.bit.QPEN=1; //使能eQEP
EQep1Regs.QCAPCTL.bit.UPPS=5; //1/32 for unit position
EQep1Regs.QCAPCTL.bit.CCPS=7; //1/128 for CAP clock
EQep1Regs.QCAPCTL.bit.CEN=1; //使能eQEP的捕获功能
EQep1Regs.QPOSMAX=p->Encoder_N; //设定计数器的最大值
EQep1Regs.QEPCTL.bit.SWI=1; //软件强制产生一次Index脉冲
EQep1Regs.QPOSCNT = 0;
InitEQep1Gpio(); //初始化eQEP相关引脚
可是寄存器看出来没有清零,想请教一下,谢谢
mangui zhang:
计数器一般都会有清零的寄存器 如果实在没有
那你就将上一次的记录下来 当做下一次的初始值
然后相互做差 如果溢出 加ffff处理