Other Parts Discussed in Thread: C2000WARE
电机的编码器接驱动器,驱动器上的280049C对脉冲进行解码,但POSCNT的值在0和POSMAX(即10000)跃变,不存在中间值,并且方向标志位QDF在0和1变化(电机一直正转,方向并不改变)请问是什么原因?电机转速为45rpm;QFLG(PCE)=1即计数器发生错误
电机的编码器信号用示波器看是正确的,下面是我EQEP部分的配置程序
EQep1Regs.QDECCTL.bit.QSRC = 0; // 正交计数模式(Quadrature count mode)
EQep1Regs.QEPCTL.bit.FREE_SOFT = 2;
EQep1Regs.QUPRD = 1000000; // Time unit为1/100(即100HZ)
EQep1Regs.QPOSMAX = 10000; // 编码器为2500线
EQep1Regs.QPOSINIT = 0; // 计数器reset后的值
EQep1Regs.QEPCTL.bit.PCRM = 0; // counter的Reset mode设置为on index event
EQep1Regs.QEPCTL.bit.IEI = 3; // falling edge of index录入init寄存器的值
//EQep1Regs.QEPCTL.bit.IEL = 1; // 在index信号的上升沿锁存CNT的值至QPOSILAT、QPOSSLAT
EQep1Regs.QEPCTL.bit.UTE = 1; // enable unit timeout
EQep1Regs.QEPCTL.bit.QCLM = 1; // Latch on unit time out
EQep1Regs.QEPCTL.bit.QPEN = 1;
EQep1Regs.QPOSCTL.bit.PCSHDW = 0; // 采用立即计数模式
EQep1Regs.QCAPCTL.bit.CEN = 1; // enable capture
EQep1Regs.QCAPCTL.bit.UPPS = 5; // 1/32的QCLK
EQep1Regs.QCAPCTL.bit.CCPS = 7; // 1/128的SYSCLK,QCLK是SYSCLK频率的1/4
EQep1Regs.QEINT.bit.UTO = 1; // 使能 Unit Time-out引发的中断
应当如何解决这个问题?
