TI中文支持网
TI专业的中文技术问题搜集分享网站

UCD3138使用问题,Fault Mux模块中digital comparator无法进入Fault interrupt中

目前在调试3138控制的一款电源,需要实现输入欠压快速保护功能。

使用Front End 2 采样输入电压,并在digital comparator0 中将Front End 2 输出的absolute value与设定值进行比较。目前的问题是:当digital comparator0 的比较条件满足后,无法重复进入快速中断函数中的Fault interrupt中,只能进入1-2次中断。

代码如下:

1.初始化digital comparator0:

 FaultMuxRegs.DCOMPCTRL0.bit.FE_SEL=2;           //select Front End2 absolute data
 FaultMuxRegs.DCOMPCTRL0.bit.COMP_POL=0;    //lower than
 FaultMuxRegs.DCOMPCTRL0.bit.THRESH=127;      //40V
 FaultMuxRegs.DCOMPCTRL0.bit.INT_EN=2;           //enable interrupt
 FaultMuxRegs.DCOMPCTRL0.bit.COMP_EN=1;      //enable Comp
 FaultMuxRegs.DCOMPCTRL0.bit.CNT_CLR=1;          //clear the detection count in 
 FaultMuxRegs.DCOMPCTRL0.bit.CNT_CONFIG=0;
 FaultMuxRegs.DCOMPCTRL0.bit.CNT_THRESH=0;     //immediately interrupt

2.fast interrupt函数中,关闭digital comparator0,关闭DPWM输出。

 if(fir_index == 26)
 {
  temp = FaultMuxRegs.FAULTMUXINTSTAT.all;    //read to clear the interrupt flag
  if(temp & 0x2000)                         //digital comparator 0  Vin_Uvp
  {    FaultMuxRegs.DCOMPCTRL0.bit.INT_EN= 0;  
      FaultMuxRegs.DCOMPCTRL0.bit.COMP_EN= 0;
      FeCtrl0Regs.EADCDAC.bit.DAC_VALUE = 0;
         LoopMuxRegs.GLBEN.all = 0;
   MiscAnalogRegs.GLBIOEN.all |= 0xFF;
   MiscAnalogRegs.GLBIOVAL.all &= 0xFFFFFF80;
   fault_type = ELSESTATUS;   supply_state = STATE_FAULT;  }

}

 temp = FaultMuxRegs.FAULTMUXINTSTAT.all;//read to clear the interrupt flag;

3. 在STATE_IDLE状态中,对digital comparator进行了重新开启。

 FaultMuxRegs.DCOMPCTRL0.bit.INT_EN= 1;      //re-enable digital Comp 0

 FaultMuxRegs.DCOMPCTRL0.bit.COMP_EN= 1;      //re-enable digital Comp 0

请各位多多指教。

Curly Li:

Hi,

    你好,也可以在TI的另一个论坛进行提问。

   http://e2e.ti.com/

赞(0)
未经允许不得转载:TI中文支持网 » UCD3138使用问题,Fault Mux模块中digital comparator无法进入Fault interrupt中
分享到: 更多 (0)