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

此函数是否能够完成CMP1 产生OST保护 CMP2 产生CBC保护且外部故障TZ3直接作用在EPWM1A EPWM1B上,

Uint16 VHith = 1023 ;//设定高频电流阀值
Uint16 VIth = 1023 ;//

#pragma CODE_SECTION(EPWM1_TZ_Isr, "ramfuncs");

interrupt void EPWM1_TZ_Isr(void)
{

// Inverter.OverCurrent=true; //过流

// EALLOW;
//EPwm1Regs.TZCLR.bit.DCAEVT2=1;//CBC
// EPwm1Regs.TZCLR.bit.DCBEVT1=1;//OST
// EPwm1Regs.TZCLR.bit.INT = 1;
// EDIS;
// Beeper_On();
// Start_Timer();//启动定时器,5秒后重新开动电源.
// Acknowledge this interrupt to receive more interrupts from group 2
PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;

}
void Trip_Zone_Config(Uint16 Vth,Uint16 Ith)
{
//初始化DAC,做过压过流保护之用
EALLOW;
//用做工频电流保护
Comp1Regs.COMPCTL.bit.COMPDACEN = 1; //使能CMP1负端的DAC,工频过流保护。
Comp1Regs.COMPCTL.bit.COMPSOURCE = 0; //连接模拟比较器COMP1负端输入到 DAC
Comp1Regs.COMPCTL.bit.QUALSEL=0xf; //输入数据必须稳定15个系统时钟才有效。
Comp1Regs.DACVAL.bit.DACVAL =VIth; //设置DAC输出值

Comp2Regs.COMPCTL.bit.COMPDACEN = 1; // 使能CMP2负端的DAC,高频过流保护。
Comp2Regs.COMPCTL.bit.COMPSOURCE = 0; // 连接模拟比较器COMP2负端输入到 DAC
Comp2Regs.COMPCTL.bit.QUALSEL=0xf; //输入数据必须稳定15个系统时钟才有效。
Comp2Regs.DACVAL.bit.DACVAL =VHith; //设置DAC输出值
//设定DCAH DCBH 被COMP1OUT 触发 为工频过流保护触发输入
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT;
EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = DC_COMP1OUT;
//设定DCAL DCBL 被COMP2OUT 触发为高频限流保护触发输入
EPwm1Regs.DCTRIPSEL.bit.DCALCOMPSEL = DC_COMP2OUT;
EPwm1Regs.DCTRIPSEL.bit.DCBLCOMPSEL = DC_COMP2OUT;
//设定DCAEVT1 DCBEVT1 (DC_EVT1)事件 为工频过流保护事件 为 OST方式 单次触发 高电平有效
EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI ;
EPwm1Regs.TZDCSEL.bit.DCBEVT1 = TZ_DCBH_HI;
//设定DCAEVT2 DCBEVT2 (DC_EVT2)事件 为高频电流保护事件 为CBC方式 周周触发 高电平有效
EPwm1Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAL_HI ;
EPwm1Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBL_HI;
//以上代码定义了两个事件高频限流(周周模式) 和工频过流(不可恢复)
// 使能数字比较器A事件1和数字比较器B事件1为一次性检测。
// 注意: DCxEVT1 事件只可以定义为一次性检测.
// DCxEVT2 事件只可以定义为逐波检测.
//旁路DCEVTFILT 设置DCA/BEVT1 模式为工频过流保护 不可恢复 OST
EPwm1Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1;
EPwm1Regs.DCBCTL.bit.EVT1SRCSEL = DC_EVT1;
EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC;// 选择异步通路
EPwm1Regs.DCBCTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC;// 选择异步通路
//旁路DCEVTFILT 设置DCA/BEVT2 模式为高频限流保护 周周保护 CBC
EPwm1Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2;
EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT2;
EPwm1Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC;// 选择异步通路
EPwm1Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC;// 选择异步通路
//使能数字比较器A / B事件1 / 2做为EPWM1一次性错误处理源
EPwm1Regs.TZSEL.bit.DCAEVT1 = 1;
EPwm1Regs.TZSEL.bit.DCBEVT1 = 1;
EPwm1Regs.TZSEL.bit.DCAEVT2 = 1;
EPwm1Regs.TZSEL.bit.DCBEVT2 = 1;
//外部硬件电路故障 TZ3
EPwm1Regs.TZSEL.bit.CBC3 = 1; // 周周模式

// TZA 事件可强制 EPWMxA的状态 TZB 事件可强制 EPWMxB的状态
EPwm1Regs.TZCTL.bit.DCAEVT1 = TZ_FORCE_LO;
EPwm1Regs.TZCTL.bit.DCBEVT1 = TZ_FORCE_LO;
EPwm1Regs.TZCTL.bit.DCAEVT2 = TZ_FORCE_LO;
EPwm1Regs.TZCTL.bit.DCBEVT2 = TZ_FORCE_LO;

EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // EPWM1A 拉低
EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // EPWM1B 拉低

EPwm1Regs.TZCLR.all =0x00EF;//清出EPWM1上所有tz事件。
//使能单次触发故障中断
EPwm1Regs.TZEINT.bit.OST = 1;

EALLOW;
PieVectTable.EPWM1_TZINT = &EPWM1_TZ_Isr;
EDIS; // This is needed to disable write to EALLOW protected registers
IER |= M_INT2;
PieCtrlRegs.PIEIER2.bit.INTx1 = 1; //tz
EPwm1Regs.TZCLR.all =0x00EF;//清出EPWM1上所有tz事件。
EDIS;
}

赞(0)
未经允许不得转载:TI中文支持网 » 此函数是否能够完成CMP1 产生OST保护 CMP2 产生CBC保护且外部故障TZ3直接作用在EPWM1A EPWM1B上,
分享到: 更多 (0)