我已经实施了电机控制代码,使用eQEP在每次注册脉冲时中断。 这对我的应用非常重要,因为为了成功地换向电机,不会错过任何中断。 我添加了SCI以便向微控制器发送命令。 电机按预期旋转,但当我通过SCI向驱动器发送命令时,我开始错过脉冲,最终导致电机停止旋转。 我认为这是因为从SCI缓冲区读取数据导致我错过eQEP中断,但我不确定如何测试这一点。 以下是我对eQEP和SCI的注册设置。 非常感谢您提供任何帮助!
SciaRegs.SCIFFTX.All=0xE040;
SciaRegs.SCIFFRX.all=0x2044;
SciaRegs.SCIFFCT.All=0x0;
SciaRegs.SCICCR.ALL =0x0007;
SciaRegs.SCICTL1.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD =0x0000;
SciaRegs.SCILBAUD =0x0002;
SciaRegs.SCICTL1.all =0x0023;
EQep1Regs.QUPRD=1800万;
EQep1Regs.QEINT.Bit.PCO = 1;
EQep1Regs.QEINT.bit.PCM = 1;
EQep1Regs.QEPCTL.bit.FREE_SOFT = 2;
EQep1Regs.QEPCTL.bit.PCRM=1;
EQep1Regs.QEPCTL.bit.UTE=0;
EQep1Regs.QEPCTL.bit.QCLM=0;
EQep1Regs.QPOSMAX=0x0.08万;
EQep1Regs.QPOSCMP=0x0万;
EQep1Regs.QEPCTL.bit.QPEN=1;
EQep1Regs.QCAPCTL.bit.UPPS=1;
EQep1Regs.QCAPCTL.bit.CCPS=2;
EQep1Regs.QCAPCTL.bit.CEN=1;
EQep1Regs.QPOSCTL.bit.PCE = 1;