您好!
在 UCD3138数字电源控制器上设置中断时遇到困难。 我正在尝试设置 一个故障引脚(故障2引脚)来触发快速中断。 但是、我无法在 FIQ 中断例程中设置故障以触发。
我的目标是设置故障2引脚以生成栅极驱动器中断例程、并立即关闭 PWM。
有人能帮我解决这个问题吗?
这是我的代码初始化(我还设置了 PWM 2中断)
GioRegs.FAULTIN.bit.FLT2_IN = 0;//为栅极驱动器故障输入设置 Faul2引脚
杂项 AnalogRegs.GLBIOVAL.bit.fault2_IO_value = 2;
FaultMuxRegs.EXTFAULTCLL.bit.fault2_POL=1;//在下降沿检测到故障2
FaultMuxRegs.EXTFAULTCLL.bit.fault2_INT_EN = 1;
FaultMuxRegs.EXTFAULTCLL.bit.fault2_DET_EN = 1;//FAULT[2]引脚检测使能
disable_interrupt ();
disable_fast_interrupt ();//确保禁用快速中断
WRITE_REQMASK (CIMINT_All_DPWM2 | CIMINT_All_PWM2_COMP | CIMINT_All_FAULT_PIN);//启用 pwm2cmp 和 DPWM0中断(第16个周期结束)(int-priority29)
WRITE_FIRQpr (CIMINT_All_DPWM2 | CIMINT_All_FAULT_PIN);// DPWM0中断(第16个周期结束)映射到 FIQ
enable_fast_interrupt ();
enable_interrupt ();
void fast_interrupt (void)
{
寄存器 Int32 Fiq_number、interrupt_bits;
Fiq_number = CimRegs.FIQIVEC.ALL;//读取时清除
INTERRUPT_BITS = FaultMuxRegs.FAULTMUXINTSTAT.ALL;//读取时清除
/*
易失性 uint32 read_s废 品;
*
GateDriveFault = 1;
IF (FIQ 数字= 30)//故障引脚中断
{
if (interrupt_bits & 0x400)// if fault2
{
杂项 AnalogRegs.GLBION.ALL |= 0xFF;
GateDriveFault = 1;z
}
}