厂家提供的芯片资料
This commit is contained in:
100
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IRQ.c
Normal file
100
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IRQ.c
Normal file
@@ -0,0 +1,100 @@
|
||||
/**************************************************************************
|
||||
**************************************************************************/
|
||||
#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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user