大家好、
我正在支持我的客户测试他们处理 CLA 和 ADC 溢出的内部管理代码。 这是一个与 CLA 和复杂程序相关的问题、请随意邀请一些专家参与。
1.要创建溢出条件:
它们按用途产生溢出的方式是在 CLA 任务中重复一些简单的代码。 但是 、有一些有趣的发现:
1) 1)重复 EPwm1Regs.CMPA.bit.CMPA = 1;
在4级优化中、我们注意到如果重复此代码少于18次、CLA 任务执行时间不会改变。 但是、如果重复19次、则会发生溢出。
2) 2)对地址指针执行相同的操作:
这一次、当它们重复代码2次时、会发生溢出。
3) 3)关闭"优化":
相同的代码可以重复50次、并且不会发生溢出
客户想知道这背后的优化原则是什么?
2.处理溢出:
1) 1)为了清除 ADC 和 CLA 溢出、客户在 CLA 中具有以下代码:
AdcdRegs.ADCINTOVFCLR.bit.ADCINT1 = 1;
AdcdRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
__meallow();
Cla1Regs.MICROVF.bit。 INT1 = 1;
_medis();
但我们注意到相关标志未清除、并且无法再输入 CLA 任务。
2) 2)如果我们尝试清除 PWM 中的溢出标志。 这两个标志都可以被清除、但是 CLA 任务不能被输入。
为什么我们无法清除 CLA 中的 oveflow 标志、CLA 任务无法进入? 欢迎您的到来。
此致、
Brian