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.

[参考译文] TMS320F2.8035万:CLA任务时钟周期

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/574566/tms320f28035-cla-task-clock-cycle

部件号:TMS320F2.8035万
主题:controlSUITE中讨论的其他部件

尊敬的各位:

是否有任何方法可以了解CLA任务上有多少时钟周期? 对于一个CPU非常有趣的ISR,我将时间存储在ISR的开头和ISR的结尾,然后从第二次中减去第一次,这样,我就可以找到ISR持续运行的时钟周期数。 但是,在CLA任务中,当我应用相同的程序时,它没有给我任何东西。

如果有人向我展示解决此问题的方法,我将不胜感激。 感谢您参加高级会议。

此致,

Merih。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Interrupt void EPWM1_INT_ISR()//尝试以下操作:
    { strt_chroNO;//开始时记住计时器计数(例如CpuTimer1Regs.TIM.all)
    Cla1ForceTask4();//这是CLA-Task4启动的位置
    ....
    }

    中断无效CLA1_INT4_ISR()//这是CLA-Task4的结束位置
    { STOP_CHRONO;//在停止时记住计时器计数并使用差异
    ...
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Ibrahim,

    感谢您的回复。

    我使用"clk1 = CpuTimer0Regs.TIM.all"行来存储CPU和CLA中的时间。 我在CPU中断中得到一个值,但CLA没有给我任何东西。 我认为这是因为我在CPU和CLA中都使用CPU计时器。 我应该为CLA使用哪个计时器?

    再次感谢。

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

    您好,Merih:

    2.8035万号的CLA无法访问计时器,但其想法是正确的。 您必须使用备用ePWM模块中的计时器。 固件用户指南(ti/controlSUITE/device_support/F2803x/version/doc/...UG.pdf,第5.7 节)中介绍了此过程。 这是我的努力

    5.7 2校准
    CLA不支持时钟功能,因此无法获得
    特定任务的直接周期计数。 用户可以在ePWM上配置时基模块以跟踪
    任务的执行时间
    设置ePWM1 (或任何ePWM)的时基以SYSCLKOUT的上升计数模式运行,如下
    所示:
    void InitEPwm (void)
    {//
    Setup TBCLK
    EPwm1Regs.ctl.bit.ctrmode_up tb_count; tb_mode_up //预计数
    EPwm1Regs.TBPRD = 0xff;//设置计时器周期
    EPwm1Regs.TBCTL.bit.PHSEN = TB_disable;//禁用相位加载
    EPwm1Regs.TBPHS.Half.HSPHHS = 0x0000;//相位为0
    EPwm1Regs.PCCTR = 0x0000;/ CLPIV1.TBD.1 = DPVSTC.STB.PTV_DEV
    =千位
    
    
    
    继续定义两个宏read_clock和restart_clock,前者用于冻结
    ePWM计时器并将已用时间复制到变量,后者用于重新启动ePWM计时器。
    #define read_clock (X)__meallow();\
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_freeze;\
    X = EPwm1Regs.TBCTR;\
    __medis();
    #define restart_clock __meallow();\ EPwm1Cycle.ctl.bit.ctr =
    peculcys.rmscrmcyl;#scrma_scrmcle= pecrmcycle=<scrma_scrmclerma_screcrecrece= 1scrma_scrma_screcrecrece= pulde.screce=<scrmclermcy>
    
    
    
    
    要数= 1scrmscrma_screce= 1scrmcyclipe.scrma_scrmclerec
    
    将宏restart_clock放在任务的开头以重新启动ePWM计时器,将
    read_clock放在任务的结尾以读取计时器的值。 经过的时间将为
    您提供周期计数加上两个宏
    __interrupt void Cla1Task1 ( void )
    {//
    局部变量
    float a;
    __mdebugstop();
    restart_clock ;
    a =10;
    ...
    ...
    ...
    read_clock (ulCycleCount);
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Melih;
    CLA´s对资源的访问是有限的;这是´s当您尝试从CLA读取计时器时,您得到´什么都没有´(零)的原因。
    示例代码应运行'Only on CPU'。 无需从CLA内进行访问!
    //中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,
    //--不要忘记正确设置启用两个中断---
    //
    Interrupt void EPWM1_INT_ISR()//尝试以下操作:
    { strt_chroNO;//开始时记住计时器计数(例如CpuTimer1Regs.TIM.all)
    Cla1ForceTask4();//这是CLA-Task4启动的位置
    ....
    }

    中断无效CLA1_INT4_ISR()//这是CLA-Task4的结束位置
    { STOP_CHRONO;//在停止时记住相同的计时器计数(例如CpuTimer1Regs.TIM.all),并使用差异
    ...
    }
    //中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,中,
    此致