Part Number:TMS320F28379D
以上中断函数中,gpreg1的初始值为4,即bit2位为1,该bit位为counter使能位;或0x2,使bie1位先置高后置低,产生中断完成脉冲。
问题1.“中断完成脉冲”作为输入CLB单元IN1的输入,滤波方式是否应该配置为上升沿检测?
问题2.计数器的match1匹配起到什么作用呢?spruir8a例程说明文档中,对于这个例程的描述部分没有提到过counter0.match1
问题3.spruir8a例程说明文档中没有对first_trip_n的说明,而且通过调试我发现这段代码是有问题的。
以下为ePWM1单元 AQ部分配置:
按照例程中的PWM配置,上电以后就会有一个PWM1A的上升沿,由于IN0配置为“CLB_FILTER_RISING_EDGE”,这个上升沿会改变FSM的状态从而启动CLB单元Counter0,这也就会导致在正常检测超时事件前额外多触发一次CLB ISR。因此,CLB ISR中不得不先将first_trip_n配置为false,检测到这个多余的超时事件之后,再将first_trip_n设置为true,而后才能执行例程说明中描述的超时事件检测功能。
其实改变PWM波的生成方式,可以避免产生这个多余的CLB ISR。
修改AQ配置如下:
修改配置后的PWM波形如下:
此时,需要并将IN0的滤波方式有之前的CLB_FILTER_RISING_EDGE修改为CLB_FILTER_FALLING_EDGE。
以上请TI工程师确认一下。
问题4.spruir8a文档中的下图是有问题的
超时事件发生后,即counter0.match2发生后,counter不会立即被清0,而是要等payload执行完成后,在epwm1ISR中执行GPREG bit1的置高及置低操作后,才会被FSM.OUT复位。
以上请TI工程师确认一下。
问题5.
利用launchpad 28379D 2.0调试,payload的迭代执行周期不是12个cycle,而是5到7个cycle,我是通过每次执行迭代后TBCTR寄存器数值变化观测到的。
以上请TI工程师确认一下。
Yale Li:
好的,我看一下