一、概况
1、硬件组成:使用F28069的QEP功能外接一EC11旋转编码器,两条引线接于EQEP1上的A、B输入(GPIO50、GPIO51).
2、软件,
EQep1Regs.QUPRD = 900000L;// Unit Timer for 100Hz at 90 MHz SYSCLKOUTEQep1Regs.QDECCTL.bit.QSRC = 0;// QEP quadrature count mode//EQep1Regs.QDECCTL.bit.QAP = 1; // 极性//EQep1Regs.QDECCTL.bit.QBP = 1;EQep1Regs.QEPCTL.bit.FREE_SOFT = 2;EQep1Regs.QEPCTL.bit.PCRM = 0;// PCRM=00 mode - QPOSCNT reset on index event//EQep1Regs.QEPCTL.bit.UTE = 1;// Unit Timeout Enable//EQep1Regs.QEPCTL.bit.QCLM = 1;// Latch on unit time outEQep1Regs.QPOSMAX = 0xffff;EQep1Regs.QEPCTL.bit.QPEN = 1;// QEP enableEQep1Regs.QCAPCTL.bit.UPPS = 5;// 1/32 for unit positionEQep1Regs.QCAPCTL.bit.CCPS = 7;// 1/64 for CAP clockEQep1Regs.QCAPCTL.bit.CEN = 1;// QEP Capture EnableEQep1Regs.QEINT.bit.QDC = 1;//EQep1Regs.QEINT.bit.PCM = 1;
3、调试情况
下图是输入信号
这个是寄存器:
二、问题:
QEP在转动EC11时,能进入中断,—— 不管正转还是反转。但进入中断后,方向都 是一样的,
状态寄存器的值始终都是 0x2C 或 0xAC
TX dong:
退出中断前,也清了寄存器的。
EQep1Regs.QEPSTS.all = 0xff; EQep1Regs.QCLR.all = 0xfff; PieCtrlRegs.PIEACK.all = PIEACK_GROUP5;