/************************************************************************** **************************************************************************/ #include "Define_Global.h" /************************************************************************** * 函数名称:Deal_BackPress * 函数功能:过压处理 * 入口参数:无 * 出口参数:无 * 备 注:中断调用 **************************************************************************/ void Deal_BackPress() { if(CM1IF) { //1级过压 CM1IF = 0; B_Protect_BackPress = 1; //进入过压保护 Time_BackPress = 0; } //--------------------------------------------------------------------- if(Time_BackPress >= 10) //83.33ms\100ms,过压保护延时计时 { B_Protect_BackPress = 0; //退出过压保护 } } /************************************************************************** * 函数名称:Deal_IgbtOVUV * 函数功能:IGBT驱动过欠压处理 * 入口参数:无 * 出口参数:无 * 备 注:中断调用 **************************************************************************/ void Deal_IgbtOVUV() { if(!Pin_Igbt_OVUV) //检测口为低电平 { //IGBT驱动过欠压保护 B_Protect_Stop = 1; //硬件保护停止 Delay_ProtectStop = 0; Flag_PPG = 0; //PPG输出关闭 B_PPG_On = B_PPG_Out = 0; B_Pan_Error = B_Pan_No = B_Pan_Have = 0; } } /************************************************************************** * 函数名称:Deal_IntTime * 函数功能:中断时间处理 * 入口参数:无 * 出口参数:无 * 备 注:中断调用 **************************************************************************/ void Deal_IntTime() { static unsigned char Delay_IntTime; //--------------------------------------------------------------------- if(B_Zero_No) { //无过零信号 if(++Delay_IntTime >= 10000/C_TimeUS_Int) //10ms { B_Zero_Time = 1; //过零翻转(时间处理) } } //--------------------------------------------------------------------- if(B_Zero_Time) //60Hz=8.333ms,50Hz\无过零=10ms { B_Zero_Time = 0; Delay_IntTime = 0; Time_BackPress++; //过压保护处理计时 Time_HMI++; //人机界面处理计时 } } /************************************************************************** --------------------------------- 中断处理 -------------------------------- **************************************************************************/ void interrupt Isr_Timer() { //定时器中断 if(TMR2IF) { TMR2IF = 0; //清中断标志 Deal_BackPress(); //过压处理 Deal_IgbtOVUV(); //IGBT驱动过欠压处理 Deal_IntTime(); //中断时间处理 __CMS_Plus_Interrupt(); //中断增强处理 Check_AD(); //AD检测 #if _MODE_IHDEBUG_ REL_IhDebug_Int(); //IH调试处理(中断) #elif !_MODE_COMM_NO_ Communicate(); //芯片通信 #endif } }