请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28379D 您好、Ryan、
后续问题
如果我们从 CPU 设置 QEP 中断:
EQEP_enableInterrupt(M1_QEP_BASE, EQEP_INT_UNIT_TIME_OUT | EQEP_INT_OVERFLOW | EQEP_INT_UNDERFLOW | EQEP_INT_INDEX_EVNT_LATCH); Interrupt_register(M1_QEP_BASE, &M1_eQEP_ISR);
这是我的 ISR
__interrupt void M1_eQEP_ISR(void)
{
if((EQEP_getInterruptStatus(M1_QEP_BASE) & EQEP_INT_INDEX_EVNT_LATCH) != 0)
{
//index event has occurred
indexEventCountCPU_qep[0]++;
EQEP_clearInterruptStatus(M1_QEP_BASE,(EQEP_INT_INDEX_EVNT_LATCH | EQEP_INT_GLOBAL));
}
if((EQEP_getInterruptStatus(M1_QEP_BASE) & EQEP_INT_UNIT_TIME_OUT) != 0)
{
//UTO timeout has occurred
;
EQEP_clearInterruptStatus(M1_QEP_BASE,(EQEP_INT_UNIT_TIME_OUT | EQEP_INT_GLOBAL));
}
if((EQEP_getInterruptStatus(M1_QEP_BASE) & EQEP_INT_UNDERFLOW) != 0)
{
//position counter underflow event has occurred
pcuEventCountCPU_qep[0]++;
EQEP_clearInterruptStatus(M1_QEP_BASE,(EQEP_INT_UNDERFLOW | EQEP_INT_GLOBAL));
}
if((EQEP_getInterruptStatus(M1_QEP_BASE) & EQEP_INT_OVERFLOW) != 0)
{
//position counter overflow event has occurred
pcoEventCountCPU_qep[0]++;
EQEP_clearInterruptStatus(M1_QEP_BASE,(EQEP_INT_OVERFLOW | EQEP_INT_GLOBAL));
}
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP5);
}
在我的一个 CLA 任务中、我已经在运行一些 simillar:
if (fclVars[0].ptrQEP->QFLG.all & CLA_QEP_FLAG_IEL_EVENT)
{
indexCountCLA[0]++;
fclVars[0].ptrQEP->QCLR.bit.IEL = 1;
}
if (fclVars[0].ptrQEP->QFLG.all & CLA_QEP_FLAG_PCU_EVENT)
{
indexCountCLAUnderflowPCU[0]++;
//indexCountCLAOverflowPCO[0] = 0;
fclVars[0].ptrQEP->QCLR.bit.PCU = 1;
}
if (fclVars[0].ptrQEP->QFLG.all & CLA_QEP_FLAG_PCO_EVENT)
{
indexCountCLAOverflowPCO[0]++;
//indexCountCLAUnderflowPCU[0] = 0;
fclVars[0].ptrQEP->QCLR.bit.PCO = 1;
}
是否可以同时运行这两个器件以进行比较? 我想一次性比较 CPU 和 CLA 的 QEP 性能、理想情况下应该没有区别、但我想同时验证这一点。