主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
你(们)好
我想询问以下示例:"eQEP_pos_speed_cpu01"。 我已从 C2000Ware_1_00_01_00导入 、并且仅将 PWM1更改为 PWM2、因为我正在使用 Launchpad F28377S。
我已经像在示例说明中那样连接了所有内容、但似乎不会发生中断、数据 theta_raw 为 NULL。
该方案如下:
#include "F28x_Project.h"
#include "example_posspeed.h"
POSSPEED QEP_POSTEED=POSSPEED_DEFAULTS;
UINT16 Interrupt_Count = 0;
void initEpwm();
_interrupt void prdTick (void);
void main (void)
{
InitSysCtrl();
InitEQep1Gpio();
InitEPwm2Gpio();
EALLOW;
GpioCtrlRegs.GPADIR.bit.GPIO4=1;
GpioDataRegs.GPACLEAR.bit.GPIO4=1;
EDIS;
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.EPWM2_INT=&prdTick;
EDIS;
initEpwm();
IER |= M_INT3;
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
EINT; //启用全局_中断 INTM
ERTM; //启用全局实时__interrupt DBGM
qep_posspeed.init(&qep_posspeed);
for (;;)
{
}
}
_interrupt void prdTick (void)
{
uint16 i;
qep_posspeed.calc(&qep_posspeed);
INTERRUPT_Count++;
IF (Interrupt_Count=1000)
{
EALLOW;
GpioDataRegs.GPASET.bit.GPIO4 = 1;//脉冲指数信号 (1个脉冲/修订版)
(i=0;i<700;i++)
{
}
GpioDataRegs.GPACLEAR.bit.GPIO4=1;
INTERRUPT_COUNT = 0; //复位计数
EDIS;
}
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
EPwm2Regs.ETCLR.bit.INT=1;
}
example_EPwmSetup.c 配置为 EPWM2。
也许我错过了什么?
非常感谢你能抽出时间。
Tomasz
