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.

TMS320f28035芯片使用CLA后,程序掉电不保存



你好,Green Deng  我这边遇到个问题再向您请假下。就是关于我的CLA工作不正常  ,具体实验现象是这样的:首先我的CLA TASK是由ADC 中断触发的,TASK 任务中执行的是控制算法,然后我在ADC中拉高一个GPIO口,在CLA TASK ISR 中将GPIO口将拉低,我根据GPIO口的电平信号设置的频率和电平和判断我的CLA工作是否正常。结果发现GIPO口的波形,1.偶尔会出现一个窄脉冲,不是所有的电平信号都是均匀的,而且频率是随机的    2.并且有一次上电过程中(电路启机过流保护了),发现GPIO口常高了,这意味着CLA程序没有再继续执行了。但是本质上,不管我的算法内容共是什么,这个脉冲波形应该是时刻都有的才对。 但是这个实验现象是偶然的  不会每次都出现,是芯片计算锁死了么?

不知道您对我这边遇到的问题有什么看法?望您有空的时候帮我解答下

  • 不知道你的工程中共使用了多少中断?如果程序没问题,且使用了多个中断的话初步怀疑是中断冲突导致的。也就是说,ADC中断到来的时候其他中断正在执行,那么ADC中断会等到其他中断执行完后再触发。

    user5997033 说:
    电路启机过流保护了

    这里是指电路还是电机过流保护?是通过PWM模块的TZ触发保护的吗?

  • 好的 那我后面排查下第一个现象是否是中断冲突导致的。 另外我的过流只是程序里面有个简单的采样判断过流 ,虽然设置了TZ保护 但是目前没有打开 。但是总的说来 不管任何情况 理论上设置好以后 这个GPIO口的电平波形都不应该常高才对 如果是常高 那我是不是可以认为这是由于CLA里面的算法没有执行完毕 所以才没有进入那个中断。。。这个会不会是由于我算法里面有数据溢出的现象 导致我的程序没有执行了呢?谢谢
  • 这个倒不好说,因为你提到一次这样的情况,只能说没有进入中断,但是为什么没有进入就很难猜测了。

    user5997033 说:
    由于CLA里面的算法没有执行完毕 所以才没有进入那个中断。。。这个会不会是由于我算法里面有数据溢出的现象
    不知道此时CPU运行正常吗?
    user5997033 说:
    由于CLA里面的算法没有执行完毕 所以才没有进入那个中断。。。这个会不会是由于我算法里面有数据溢出的现象
  • 感谢回复 ,Green Deng。。。此时我的CPU工作应该是正常的 因为此时驱动的PWM波还是在执行的 只不过是以一个固定的占空比值在工作。。。。。另外,请问下 28035芯片可以使用HRPWM实现DAC功能 ,那Ti有这方面的历程吗?谢谢
  • 再请教下,我的CLA task 由EPWM触发,在进EPWM中断时,拉高GPIO口,在CLA task ISR中拉低GPIO口,为何芯片跑起来后这个GPIO口的脉冲波形不上那么均匀。在保证算法肯定能执行完毕的前提下,为何这这个GPIO口甚至出现了大小波的情况?但是频率仍然时正确的。。。是不是我的CLA程序还是工作不正常导致的呢?
  • F28035的DAC功能是由片上的比较器模块生成的,但目前官方没有这方面的例程提供。

    user5997033 说:
    这个GPIO口的脉冲波形不上那么均匀

    是指频率相同但是脉冲宽度不同吗?之前提到的其他中断的影响是否有证实过?

  • 是的 就是指脉冲宽度不同 频率不同的脉冲,但是只要频率对的,芯片跑起来后,宽度有一些差异应该问题不大。。。我目前碰到的主要问题是,不知道为何芯片的CLA在某种工况下,会突然进不去CLA中断,如图所示。通道1的脉冲信号 即为在进触发CLA的中断时拉高,在CAL TASK ISR中拉低。我的问题是,为何我的负载加到一定值  芯片就好像停止运算了一样  但是PWM还是在持续固定地发波。。。我尝试在主CPU的ADC中断里面  通过检测过流来关闭PWM波  但在调试的时候 可以关闭  但是根据实际示波器抓得结果来看  也没有进主CPU中的ADC中断  您觉得 我这个现象可能是什么原因导致的呢

  • 而且掉电重启后 芯片又恢复了正常工作。。。。我想请问 会不会是我的芯片环路计算 有数值溢出 导致了芯片宕机呢?
  • 不好意思有点乱,我问一下:

    1、图片中的通道1是为了说明GPIO在进CLA之前被拉高,但是没有被拉低,也就是没有进CLA?

    user5997033 说:
    为何我的负载加到一定值  芯片就好像停止运算了一样

    而通道4是说明

    user5997033 说:
    PWM还是在持续固定地发波

    2、

    user5997033 说:
    在调试的时候 可以关闭  但是根据实际示波器抓得结果来看  也没有进主CPU中的ADC中断
    这里你的意思是调试的时候没有进ADC中断,但还是可以检测过流并关闭PWM波?

  • 1.是的 该图片就是为了说明程序在特定的工况下算死 没有进中断 但是PWM应该是在free模式 所在还在发波
    2.我说的调试是指 我在没有上功率电的情况下 通过ADC中断来关闭PWM时可行的 但是在实际上功率电后 ADC中断内的检测过流来关波的方式也没有成功 意味着主CPU的ADC中断也没有进
    3.现在现象就是 芯片在我加载到一定值时 程序就会锁死 跑飞 我想知道算法中哪些可能会导致这种现象的发生