This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280049C:如何设置 CLA 任务 1 中断源

Guru**** 2694555 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1592698/tms320f280049c-how-to-set-cla-task1-interrupt-source

器件型号: TMS320F280049C
Thread 中讨论的其他器件: SysConfigC2000WARE

您好、我有一个工程使用 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);
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议使用 SysConfig 配置 CLA 任务。 以下是 C2000Ware 中的示例: c:\ti\c2000\C2000Ware_6_00_00\driverlib\f28004x\examples\cla

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Lori、

    我可以考虑在将来的开发中使用 driverLib 函数、但对于此工程、您能 在其中指定问题吗?

    谢谢、

    Jiakai

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    C28x 通过写入下面突出显示的寄存器来指定任务。  TRM 的表 5-1 中列出了这些选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Lori、

    DmcCla1TASKSRCSEL1.Task1 设置为 EPWM1(即 36 或 0x24)、请参阅下面的:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还有其他建议吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jiakai,

    C2000Ware 中有一个 PWM 控制示例。 我建议使用此示例作为参考、以了解缺少的配置。  

    这些示例位于以下文件夹中:

    C:\ti\c2000\C2000Ware_6_00_00\driverlib\f28004x\examples\cla

    特别是 cla_ex4_pwm_control 有 ePWM4 触发 CLA 任务。  

    此致

    Lori