尊敬的所有人:
我配置了用于 UV 和 OV 保护的模拟比较器。 模拟比较器工作正常。 此外、还配置了比较器的中断。 在我的测试期间、我观察了 PWM 输出以及 FAULTMUXINTSTAT 和 FAULTMUXRAWSTAT。 当故障发生时、PWM 关闭。 但是、FAULTMUXINTSTAT 或 FAULTMUXRAWSTAT 没有变化。
我知道读取 FAULTMUXINTSTAT 会将该位清零、因此我认为 可能无法观察 FAULTMUXINTSTAT 寄存器。 为了克服这个问题、使用了下面的相应中断软件:
#pragma INTERRUPT (standard_interrupt、IRQ)
void standard_interrupt (void)
{
IF (CimRegs.IRQIVEC.ALL =26) //中断源是模拟比较器。
{
D_T1 = 1; //初始化为0。 如果发生模拟比较器中断、D_T1为1
开关(FAULT_STATUS)
{
情况(无故障):
if (FaultMuxRegs.FAULTMUXINTSTAT.bit.ACOMP_B == 1) //如果中断源是 comp B、则将 FAULT_STATUS 更改为 V1_OV
FAULT_STATUS = V1_OV;
否则、如果(FaultMuxRegs.FAULTMUXINTSTAT.bit.ACOMP_C =1) //如果中断源是 comp C、则将 FAULT_STATUS 更改为 V1_UV
FAULT_STATUS = V1_UV;
}
}
D_T2 = FAULT_STATUS;
}
在此中断例程中、D_T1在内存调试器中被视为1、但 D_T2变量不会更改。 我确信没有启用其他模拟比较器。 如果有另一种方法可以检测哪个比较器启动中断例程、如果您能提供帮助、我将不胜感激。
谢谢
此致
Merih