Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
器件型号: TMS320F280049C
Thread 中讨论的其他器件: SysConfig、 C2000WARE
您好、我有一个工程使用 F280049 ePWM1 触发 CLA1 任务 1、但未执行 ClaTask1 ()(已上传工程 1_ph pwm_with_dc_input)。
我将 PWM 中断移到了 CPU1 侧、将 Timer1 中断移到了 CLA1 侧、新工程是 1_PH_PWM_with_dc_input_diff。
在新工程中、PWM 中断例程和 Timer1 中断例程都会正常执行。
我不知道我的代码中是否有任何问题。 CLA 相关代码如下。
谢谢、
具有直流输入(C 代码)的 Jiakai单相 PWM。zip具有 DC INPUT_DIFF(C 代码)的单相 PWM。zip
void PS_ClaSetIntr(TClaTaskNo taskNo, TClaTrig trigNo)
{
EALLOW;
switch (taskNo) {
case CLA_TASK_1:
DmaClaSrcSelRegs.CLA1TASKSRCSEL1.bit.TASK1 = trigNo;
Cla1Regs.MVECT1 = (Uint16)&Cla1Task1;
Cla1Regs.MIER.bit.INT1 = 1;
break;
default:
break;
}
EDIS;
}
void PS_PwmSetClaIntr(int16 pwmNo, TClaTaskNo taskNo)
{
volatile struct EPWM_REGS *EPwmRegs;
PS_ClaSetIntr(taskNo, (TClaTrig)((int)CLA_TRIGGER_EPWM1INT + (pwmNo - 1)));
EPwmRegs = &EPwm1Regs + (--pwmNo);
EALLOW;
EPwmRegs->ETCLR.bit.INT = 1;
EPwmRegs->ETSEL.bit.INTEN = 1;
EDIS;
}
void PS_ClaInit(int16 claDataBlock, int16 claProgBlock, Uint32 softTaskBit)
{
int i;
EALLOW;
CpuSysRegs.PCLKCR0.bit.CLA1 = 1;
MemCfgRegs.MSGxINIT.bit.INIT_CLA1TOCPU = 1; // Initialize and wait for CLA1ToCPUMsgRAM
MemCfgRegs.LSxMSEL.all = 0x5555UL & (((Uint32)1 << (2 * (claDataBlock + claProgBlock))) - 1);
MemCfgRegs.LSxCLAPGM.all = ((1 << claProgBlock) - 1) << claDataBlock;
EDIS;
while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU != 1);
}


