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.

[参考译文] UCD3138:模拟比较器中断源

Guru**** 2455360 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/673714/ucd3138-analog-comparator-interrupt-source

器件型号:UCD3138

尊敬的所有人:

我配置了用于 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

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

    大家好、Merih、

    将寄存器 FaultMuxRegs.FAULTMUXINTSTAT.all 的状态存储到 一个中间变量中。 当您读取该寄存器时、所有标志都会被清除。 稍后、您将使用中间变量进行比较。

    您是否在比较器输入端施加了直流电压或脉冲电压? 如果是脉冲电压、则电压不能太短、至少为64ns。 此外、确保启用比较器中断

    此致、

    肖恩

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

    感谢您的建议。 每次我重试它时、我都会写回它。

    此致、
    Merih