厂家提供的芯片资料
This commit is contained in:
BIN
CMS开发烧写软件/仿真软件/CMS_IDE_V2.03.25.5_ZS.zip
Normal file
BIN
CMS开发烧写软件/仿真软件/CMS_IDE_V2.03.25.5_ZS.zip
Normal file
Binary file not shown.
BIN
CMS开发烧写软件/烧写软件/CMS_WriterPro_V1.02.13.zip
Normal file
BIN
CMS开发烧写软件/烧写软件/CMS_WriterPro_V1.02.13.zip
Normal file
Binary file not shown.
BIN
CMS开发烧写软件/烧写软件/CMS_Writer_V9.02.10.zip
Normal file
BIN
CMS开发烧写软件/烧写软件/CMS_Writer_V9.02.10.zip
Normal file
Binary file not shown.
BIN
CMS芯片手册/CMS79F53x5用户手册_V1.00.pdf
Normal file
BIN
CMS芯片手册/CMS79F53x5用户手册_V1.00.pdf
Normal file
Binary file not shown.
4
【版本说明】.txt
Normal file
4
【版本说明】.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
***************************************************************************************************
|
||||||
|
【版 本】:V1.0
|
||||||
|
【生成时间】:2023.02.09
|
||||||
|
【版本说明】:初始版本
|
||||||
BIN
参考原理图/IH参考原理图(CMS79F5335-V1.0).pdf
Normal file
BIN
参考原理图/IH参考原理图(CMS79F5335-V1.0).pdf
Normal file
Binary file not shown.
BIN
参考原理图/IH参考原理图(CMS79F5365-V1.0).pdf
Normal file
BIN
参考原理图/IH参考原理图(CMS79F5365-V1.0).pdf
Normal file
Binary file not shown.
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0.rar
Normal file
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0.rar
Normal file
Binary file not shown.
1324
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/ADC.c
Normal file
1324
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/ADC.c
Normal file
File diff suppressed because it is too large
Load Diff
498
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate.c
Normal file
498
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate.c
Normal file
@@ -0,0 +1,498 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
#if !_MODE_IHDEBUG_ && !_MODE_COMM_NO_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Communicate
|
||||||
|
* 函数功能:芯片通信
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:中断调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Communicate()
|
||||||
|
{
|
||||||
|
//收码相关寄存器定义
|
||||||
|
static unsigned char TimeRece_High,TimeRece_Low,CountRece;
|
||||||
|
static CommType DataRece;
|
||||||
|
static bit B_Rece_Old;
|
||||||
|
|
||||||
|
//发码相关寄存器定义
|
||||||
|
static unsigned char TimeSend,CountSend;
|
||||||
|
static CommType DataSend;
|
||||||
|
static bit B_Send_Start,B_Send_Bak;
|
||||||
|
|
||||||
|
volatile unsigned char i;
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
收码
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_Comm_No) //无通信,不收码
|
||||||
|
{
|
||||||
|
if(!Pin_CommIn && !Pin_CommIn && !Pin_CommIn && !Pin_CommIn && !Pin_CommIn)
|
||||||
|
{
|
||||||
|
TimeRece_Low++; //低电平计时
|
||||||
|
|
||||||
|
if(!B_Rece_Old)
|
||||||
|
{
|
||||||
|
TimeRece_High = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //下降沿接收数据
|
||||||
|
B_Rece_Old = 0; //收码电平旧值(低)
|
||||||
|
|
||||||
|
if(1 == TimeRece_Low)
|
||||||
|
{ //第一次下降沿
|
||||||
|
CountRece = 32;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //非第一次下降沿
|
||||||
|
DataRece.all <<= 1;
|
||||||
|
|
||||||
|
if(TimeRece_Low >= TimeRece_High)
|
||||||
|
{ //低电平>高电平为1,否则为0
|
||||||
|
DataRece.one[0] |= 0x01;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeRece_High = 0;
|
||||||
|
TimeRece_Low = 1;
|
||||||
|
|
||||||
|
if(0 == --CountRece)
|
||||||
|
{
|
||||||
|
B_Deal_DataRece = 1; //收码数据处理
|
||||||
|
|
||||||
|
Buf_DataRece[3] = DataRece.one[3];
|
||||||
|
Buf_DataRece[2] = DataRece.one[2];
|
||||||
|
Buf_DataRece[1] = DataRece.one[1];
|
||||||
|
Buf_DataRece[0] = DataRece.one[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Pin_CommIn && Pin_CommIn && Pin_CommIn && Pin_CommIn && Pin_CommIn)
|
||||||
|
{
|
||||||
|
B_Rece_Old = 1; //收码电平旧值(高)
|
||||||
|
|
||||||
|
if(TimeRece_High >= 5000/C_TimeUS_Int) //5ms
|
||||||
|
{ //长时间高电平,重新收码
|
||||||
|
TimeRece_Low = 0;
|
||||||
|
CountRece = 32;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TimeRece_High++; //高电平计时
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
发码
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have) //有通信,才发码
|
||||||
|
{
|
||||||
|
if(B_Send_Start)
|
||||||
|
{
|
||||||
|
if(0 == --TimeSend)
|
||||||
|
{ //已发完一位码
|
||||||
|
Pin_CommOut = 0; //输出低电平
|
||||||
|
|
||||||
|
if(0 == CountSend)
|
||||||
|
{
|
||||||
|
B_Send_Start = 0; //发码完成
|
||||||
|
TimeSend = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //发送下一位数据
|
||||||
|
CountSend--;
|
||||||
|
TimeSend = 2000/C_TimeUS_Int; //2ms
|
||||||
|
|
||||||
|
if(DataSend.one[3] & 0x80)
|
||||||
|
{
|
||||||
|
B_Send_Bak = 1; //发1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Send_Bak = 0; //发0
|
||||||
|
}
|
||||||
|
|
||||||
|
DataSend.all <<= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //还没有发完一位码
|
||||||
|
if(B_Send_Bak)
|
||||||
|
{
|
||||||
|
i = 500/C_TimeUS_Int; //0.5ms
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i = 1500/C_TimeUS_Int; //1.5ms
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TimeSend > i)
|
||||||
|
{
|
||||||
|
Pin_CommOut = 0; //输出低电平
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Pin_CommOut = 1; //输出高电平
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(TimeSend >= 10000/C_TimeUS_Int) //10ms
|
||||||
|
{
|
||||||
|
B_Send_Start = 1; //发码开始
|
||||||
|
|
||||||
|
TimeSend = 1;
|
||||||
|
CountSend = 32; //发码数据位数:32bit
|
||||||
|
|
||||||
|
DataSend.one[3] = Buf_DataSend[3];
|
||||||
|
DataSend.one[2] = Buf_DataSend[2];
|
||||||
|
DataSend.one[1] = Buf_DataSend[1];
|
||||||
|
DataSend.one[0] = Buf_DataSend[0];
|
||||||
|
|
||||||
|
B_Refrsh_DataSend = 1; //发码数据刷新
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TimeSend++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TimeSend >= 500/C_TimeUS_Int) //0.5ms
|
||||||
|
{
|
||||||
|
Pin_CommOut = 1; //输出高电平
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Pin_CommOut = 0; //输出低电平
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Deal_CommData
|
||||||
|
* 函数功能:通信数据处理
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Deal_CommData()
|
||||||
|
{
|
||||||
|
static unsigned int Time_NoComm;
|
||||||
|
static unsigned char Num_CommSend;
|
||||||
|
|
||||||
|
volatile unsigned char i,j;
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
发码数据处理
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have && B_Refrsh_DataSend)
|
||||||
|
{ //发码数据刷新
|
||||||
|
i = 0;
|
||||||
|
if(B_Pan_Error) SetBit(i,0); //检锅故障(未接线盘)
|
||||||
|
if(B_Pan_No) SetBit(i,1); //无锅
|
||||||
|
if(B_Pan_Have) SetBit(i,2); //有锅
|
||||||
|
if(B_Pan_Steel) SetBit(i,3); //钢锅
|
||||||
|
if(B_Pan_Iron) SetBit(i,4); //铁锅
|
||||||
|
if(B_Zero_No) SetBit(i,5); //无过零
|
||||||
|
if(B_Zero_60Hz) SetBit(i,6); //过零频率 = 60Hz
|
||||||
|
if(B_Protect_BackPress) SetBit(i,7); //过压保护
|
||||||
|
|
||||||
|
Status1_Work = i; //刷新工作状态1
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
i = 0;
|
||||||
|
if(B_Protect_Stop) SetBit(i,0); //保护停止加热
|
||||||
|
if(B_PPGStop_CheckPan) SetBit(i,1); //加热暂停但检锅
|
||||||
|
if(B_PPGStop_NoCheck) SetBit(i,2); //加热暂停不检锅
|
||||||
|
if(Status_PPGDP & 0x02) SetBit(i,3); //抖频开启
|
||||||
|
if(Status_LxLow & 0x02) SetBit(i,4); //连续低功率开启
|
||||||
|
|
||||||
|
Status2_Work = i; //刷新工作状态2
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
switch(Num_CommSend)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA0; //命令字
|
||||||
|
Buf_DataSend[2] = Status1_Work; //工作状态1
|
||||||
|
Buf_DataSend[1] = Status2_Work; //工作状态2
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA1; //命令字
|
||||||
|
Buf_DataSend[2] = Flag1_Error; //硬件故障标志1
|
||||||
|
Buf_DataSend[1] = Flag2_Error; //硬件故障标志2
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA2; //命令字
|
||||||
|
Buf_DataSend[2] = Status_PPGStop; //保护状态
|
||||||
|
|
||||||
|
i = (AD_Volatage >> 4) & 0xF0; //市电电压AD(高4位)
|
||||||
|
i |= (AD_Current >> 8) & 0x0F; //工作电流AD(高4位)
|
||||||
|
Buf_DataSend[1] = i;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA3; //命令字
|
||||||
|
Buf_DataSend[2] = AD_Volatage; //市电电压AD(低8位)
|
||||||
|
Buf_DataSend[1] = AD_Current; //工作电流AD(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA4; //命令字
|
||||||
|
Buf_DataSend[2] = AD_TmprPan; //锅底温度AD
|
||||||
|
Buf_DataSend[1] = AD_TmprIgbt; //IGBT温度AD
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA5; //命令字
|
||||||
|
Buf_DataSend[2] = AD_TmprTop; //顶部温度AD
|
||||||
|
Buf_DataSend[1] = AD_VRef; //内部基准电压(1.2V)AD
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA6; //命令字
|
||||||
|
Buf_DataSend[2] = Vol.flo.integer; //市电电压 - 80V
|
||||||
|
Buf_DataSend[1] = Count_Syn; //检锅振荡个数
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA7; //命令字
|
||||||
|
Buf_DataSend[2] = Time_Syn >> 8; //检锅振荡脉宽(高8位)
|
||||||
|
Buf_DataSend[1] = Time_Syn; //检锅振荡脉宽(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA8; //命令字
|
||||||
|
Buf_DataSend[2] = PowerReal >> 8; //实际输出功率(高8位)
|
||||||
|
Buf_DataSend[1] = PowerReal; //实际输出功率(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA9; //命令字
|
||||||
|
Buf_DataSend[2] = Buf_PPGTMR >> 8; //当前PPG导通值(高8位)
|
||||||
|
Buf_DataSend[1] = Buf_PPGTMR; //当前PPG导通值(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAA; //命令字
|
||||||
|
Buf_DataSend[2] = Count_BackPress >> 8; //1级过压保护计数(高8位)
|
||||||
|
Buf_DataSend[1] = Count_BackPress; //1级过压保护计数(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAB; //命令字
|
||||||
|
Buf_DataSend[2] = Count_IgbtProtect >> 8; //IGBT硬件保护计数(高8位)
|
||||||
|
Buf_DataSend[1] = Count_IgbtProtect; //IGBT硬件保护计数(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAC; //命令字
|
||||||
|
Buf_DataSend[2] = Elec.flo.integer; //电量高位
|
||||||
|
Buf_DataSend[1] = Elec.flo.radix; //电量低位
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:break;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = (unsigned)Buf_DataSend[1] + Buf_DataSend[2] + Buf_DataSend[3];
|
||||||
|
Buf_DataSend[0] = (unsigned)~i; //校验和
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
B_Refrsh_DataSend = 0; //发码数据刷新完成
|
||||||
|
|
||||||
|
if(++Num_CommSend >= 13) //发码切换
|
||||||
|
{
|
||||||
|
Num_CommSend = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
收码数据处理
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_Comm_No && B_Deal_DataRece)
|
||||||
|
{
|
||||||
|
B_Deal_DataRece = 0; //收码数据处理完成
|
||||||
|
|
||||||
|
i = (unsigned)Buf_DataRece[1] + Buf_DataRece[2] + Buf_DataRece[3];
|
||||||
|
i = (unsigned)~i;
|
||||||
|
j = (unsigned)Buf_DataRece[3] & 0xF0;
|
||||||
|
|
||||||
|
if((i == Buf_DataRece[0]) && ((0xB0 == j) || (0xD0 == j))) //数据校验
|
||||||
|
{
|
||||||
|
B_Comm_Have = 1; //有通信
|
||||||
|
B_Comm_Error = 0; //清通信故障标志
|
||||||
|
Time_NoComm = 0; //清无通信计时
|
||||||
|
|
||||||
|
if(0xB0 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
Flag1_Work = Buf_DataRece[2]; //工作标志1
|
||||||
|
Flag2_Work = Buf_DataRece[1]; //工作标志2
|
||||||
|
}
|
||||||
|
else if(0xB1 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
PowerWork = Buf_DataRece[2]; //加热功率值
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(0xB2 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
Num_LxLowOn = Buf_DataRece[2]; //连续低功率开个数
|
||||||
|
Num_LxLowOff = Buf_DataRece[1]; //连续低功率关个数
|
||||||
|
}
|
||||||
|
else if(0xD0 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
i = (unsigned)~Buf_DataRece[1];
|
||||||
|
if(Buf_DataRece[2] == i)
|
||||||
|
{
|
||||||
|
SlopeCurr_Adjust = Buf_DataRece[2]; //电流斜率调整值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if(TestOne(Flag1_Work,0))
|
||||||
|
{
|
||||||
|
B_Heat_En = 1; //加热使能
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Heat_En = 0; //加热关闭
|
||||||
|
B_Fan_En = 0; //风扇关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,1))
|
||||||
|
{
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Fan_En = 0; //风扇关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,2))
|
||||||
|
{
|
||||||
|
B_Buzz_En = 1; //蜂鸣器使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Buzz_En = 0; //蜂鸣器关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,3))
|
||||||
|
{
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Short_One(); //蜂鸣器短鸣1声(200ms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,4))
|
||||||
|
{
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Long_One(); //蜂鸣器长鸣1声(400ms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,5))
|
||||||
|
{
|
||||||
|
B_HeatStop_CheckPan = 1; //不加热但检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_HeatStop_CheckPan = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,6))
|
||||||
|
{
|
||||||
|
B_HeatStop_NoCheck = 1; //不加热不检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_HeatStop_NoCheck = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,7))
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 1; //PPG抖频禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 0;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if(TestOne(Flag2_Work,0))
|
||||||
|
{
|
||||||
|
B_PanOver_Dis = 1; //锅底NTC超温判断禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PanOver_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag2_Work,1))
|
||||||
|
{
|
||||||
|
B_PanFail_Dis = 1; //锅底NTC失效判断禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PanFail_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag2_Work,7))
|
||||||
|
{
|
||||||
|
B_PPGDP_Can = 1; //PPG抖频强制使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGDP_Can = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
通信状态确认
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have)
|
||||||
|
{ //已确认有通信
|
||||||
|
if(++Time_NoComm > 2000/C_TimeMS_Main) //2s
|
||||||
|
{
|
||||||
|
Time_NoComm = 0;
|
||||||
|
|
||||||
|
B_Comm_Error = 1; //通信故障
|
||||||
|
Buzz_Short_One(); //蜂鸣器短鸣1声
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(!B_Comm_No)
|
||||||
|
{ //未确认有无通信
|
||||||
|
if(++Time_NoComm > 250/C_TimeMS_Main) //250ms
|
||||||
|
{
|
||||||
|
Time_NoComm = 0;
|
||||||
|
B_Comm_No = 1; //无通信
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //已确认无通信
|
||||||
|
Time_NoComm = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
30
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate.h
Normal file
30
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _COMMUNICATE_H_
|
||||||
|
#define _COMMUNICATE_H_
|
||||||
|
#if !_MODE_IHDEBUG_ && !_MODE_COMM_NO_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- º¯ÊýÉùÃ÷ --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
void Communicate();
|
||||||
|
void Deal_CommData();
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- ±äÁ¿¶¨Òå --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned char Buf_DataSend[4];
|
||||||
|
volatile unsigned char Buf_DataRece[4];
|
||||||
|
|
||||||
|
volatile unsigned char Flag1_Work,Flag2_Work;
|
||||||
|
volatile unsigned char Status1_Work,Status2_Work;
|
||||||
|
|
||||||
|
volatile bit B_Deal_DataRece,B_Refrsh_DataSend;
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_Comm_No,B_Comm_Have;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
461
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate_Uart.c
Normal file
461
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Communicate_Uart.c
Normal file
@@ -0,0 +1,461 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
#if !_MODE_IHDEBUG_ && !_MODE_COMM_NO_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Communicate
|
||||||
|
* 函数功能:芯片通讯
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:中断调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Communicate()
|
||||||
|
{
|
||||||
|
//收码相关寄存器定义
|
||||||
|
static unsigned int CntReceNo;
|
||||||
|
static unsigned char CountRece;
|
||||||
|
static unsigned char DataRece[4];
|
||||||
|
|
||||||
|
//发码相关寄存器定义
|
||||||
|
static unsigned char TimeSend,CountSend;
|
||||||
|
static unsigned char DataSend[4];
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
收码
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_Comm_No) //无通讯,不收码
|
||||||
|
{
|
||||||
|
if(RCIF)
|
||||||
|
{
|
||||||
|
if(FERR)
|
||||||
|
{
|
||||||
|
RCREG; //帧错误
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CntReceNo = 0;
|
||||||
|
DataRece[CountRece] = RCREG; //将接收缓冲区内容读出
|
||||||
|
|
||||||
|
if(++CountRece >= sizeof(DataRece)) //接收完一帧数据,处理数据
|
||||||
|
{
|
||||||
|
CountRece = 0;
|
||||||
|
B_Deal_DataRece = 1; //收码数据处理
|
||||||
|
|
||||||
|
Buf_DataRece[0] = DataRece[3];
|
||||||
|
Buf_DataRece[1] = DataRece[2];
|
||||||
|
Buf_DataRece[2] = DataRece[1];
|
||||||
|
Buf_DataRece[3] = DataRece[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(OERR) //如果有溢出错误
|
||||||
|
{
|
||||||
|
CREN = 0; //清零CREN位可将OERR位清零
|
||||||
|
CREN = 1; //再次将CREN置一,以允许继续接收
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(++CntReceNo >= 5000/C_TimeUS_Int) //5ms
|
||||||
|
{
|
||||||
|
CountRece = 0;
|
||||||
|
}
|
||||||
|
else if(CntReceNo >= 15000/C_TimeUS_Int) //15ms
|
||||||
|
{
|
||||||
|
CntReceNo = 0;
|
||||||
|
|
||||||
|
CREN = 0;
|
||||||
|
SPBRG = 103; //设置波特率为9600bps,误差0%
|
||||||
|
STOPBIT = 0; //停止位为1bit
|
||||||
|
SYNC = 0; //0为异步模式,1为同步模式
|
||||||
|
SCKP = 0;
|
||||||
|
//SPEN = 1; //允许串口操作
|
||||||
|
RX9EN = 0; //0为8位接收,1为9位接收
|
||||||
|
CREN = 1; //0为禁止接收,1为使能接收
|
||||||
|
|
||||||
|
/*if(!SPEN)
|
||||||
|
{
|
||||||
|
SPEN = 1;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
发码
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have) //有通讯,才发码
|
||||||
|
{
|
||||||
|
if(TXIF)
|
||||||
|
{
|
||||||
|
if(CountSend)
|
||||||
|
{
|
||||||
|
TXREG = DataSend[(unsigned)CountSend - 1];
|
||||||
|
CountSend--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(CountSend)
|
||||||
|
{
|
||||||
|
TimeSend = 0;
|
||||||
|
}
|
||||||
|
else if(++TimeSend >= 10000/C_TimeUS_Int) //10ms
|
||||||
|
{
|
||||||
|
TimeSend = 0;
|
||||||
|
CountSend = sizeof(DataSend); //发码数据字节数
|
||||||
|
|
||||||
|
DataSend[0] = Buf_DataSend[0];
|
||||||
|
DataSend[1] = Buf_DataSend[1];
|
||||||
|
DataSend[2] = Buf_DataSend[2];
|
||||||
|
DataSend[3] = Buf_DataSend[3];
|
||||||
|
|
||||||
|
B_Refrsh_DataSend = 1; //发码数据刷新
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Deal_CommData
|
||||||
|
* 函数功能:通讯数据处理
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Deal_CommData()
|
||||||
|
{
|
||||||
|
static unsigned int Time_NoComm;
|
||||||
|
static unsigned char Num_CommSend;
|
||||||
|
static bit B_Init_Uart;
|
||||||
|
|
||||||
|
volatile unsigned char i,j;
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
UART初始化
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_Init_Uart)
|
||||||
|
{
|
||||||
|
B_Init_Uart = 1; //UART初始化完成
|
||||||
|
|
||||||
|
SPBRG = 103; //设置波特率为9600bps,误差0%
|
||||||
|
STOPBIT =0; //停止位为1bit
|
||||||
|
SYNC = 0; //0为异步模式,1为同步模式
|
||||||
|
SCKP = 0;
|
||||||
|
SPEN = 1; //允许串口操作
|
||||||
|
RX9EN = 0; //0为8位接收,1为9位接收
|
||||||
|
TX9EN = 0; //0为8位发送,1为9位发送
|
||||||
|
CREN = 1; //0为禁止接收,1为使能接收
|
||||||
|
TXEN = 1; //0为禁止发送,1为使能发送
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
发码数据处理
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have && B_Refrsh_DataSend)
|
||||||
|
{ //发码数据刷新
|
||||||
|
i = 0;
|
||||||
|
if(B_Pan_Error) SetBit(i,0); //检锅故障(未接线盘)
|
||||||
|
if(B_Pan_No) SetBit(i,1); //无锅
|
||||||
|
if(B_Pan_Have) SetBit(i,2); //有锅
|
||||||
|
if(B_Pan_Steel) SetBit(i,3); //钢锅
|
||||||
|
if(B_Pan_Iron) SetBit(i,4); //铁锅
|
||||||
|
if(B_Zero_No) SetBit(i,5); //无过零
|
||||||
|
if(B_Zero_60Hz) SetBit(i,6); //过零频率 = 60Hz
|
||||||
|
if(B_Protect_BackPress) SetBit(i,7); //过压保护
|
||||||
|
|
||||||
|
Status1_Work = i; //刷新工作状态1
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
i = 0;
|
||||||
|
if(B_Protect_Stop) SetBit(i,0); //保护停止加热
|
||||||
|
if(B_PPGStop_CheckPan) SetBit(i,1); //加热暂停但检锅
|
||||||
|
if(B_PPGStop_NoCheck) SetBit(i,2); //加热暂停不检锅
|
||||||
|
if(Status_PPGDP & 0x02) SetBit(i,3); //抖频开启
|
||||||
|
if(Status_LxLow & 0x02) SetBit(i,4); //连续低功率开启
|
||||||
|
|
||||||
|
Status2_Work = i; //刷新工作状态2
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
switch(Num_CommSend)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA0; //命令字
|
||||||
|
Buf_DataSend[2] = Status1_Work; //工作状态1
|
||||||
|
Buf_DataSend[1] = Status2_Work; //工作状态2
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA1; //命令字
|
||||||
|
Buf_DataSend[2] = Flag1_Error; //硬件故障标志1
|
||||||
|
Buf_DataSend[1] = Flag2_Error; //硬件故障标志2
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA2; //命令字
|
||||||
|
Buf_DataSend[2] = Status_PPGStop; //保护状态
|
||||||
|
|
||||||
|
i = (AD_Volatage >> 4) & 0xF0; //市电电压AD(高4位)
|
||||||
|
i |= (AD_Current >> 8) & 0x0F; //工作电流AD(高4位)
|
||||||
|
Buf_DataSend[1] = i;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA3; //命令字
|
||||||
|
Buf_DataSend[2] = AD_Volatage; //市电电压AD(低8位)
|
||||||
|
Buf_DataSend[1] = AD_Current; //工作电流AD(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA4; //命令字
|
||||||
|
Buf_DataSend[2] = AD_TmprPan; //锅底温度AD
|
||||||
|
Buf_DataSend[1] = AD_TmprIgbt; //IGBT温度AD
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA5; //命令字
|
||||||
|
Buf_DataSend[2] = AD_TmprTop; //顶部温度AD
|
||||||
|
Buf_DataSend[1] = AD_VRef; //内部基准电压(1.2V)AD
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA6; //命令字
|
||||||
|
Buf_DataSend[2] = Vol.flo.integer; //市电电压 - 80V
|
||||||
|
Buf_DataSend[1] = Count_Syn; //检锅振荡个数
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA7; //命令字
|
||||||
|
Buf_DataSend[2] = Time_Syn >> 8; //检锅振荡脉宽(高8位)
|
||||||
|
Buf_DataSend[1] = Time_Syn; //检锅振荡脉宽(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA8; //命令字
|
||||||
|
Buf_DataSend[2] = PowerReal >> 8; //实际输出功率(高8位)
|
||||||
|
Buf_DataSend[1] = PowerReal; //实际输出功率(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xA9; //命令字
|
||||||
|
Buf_DataSend[2] = Buf_PPGTMR >> 8; //当前PPG导通值(高8位)
|
||||||
|
Buf_DataSend[1] = Buf_PPGTMR; //当前PPG导通值(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAA; //命令字
|
||||||
|
Buf_DataSend[2] = Count_BackPress >> 8; //1级过压保护计数(高8位)
|
||||||
|
Buf_DataSend[1] = Count_BackPress; //1级过压保护计数(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAB; //命令字
|
||||||
|
Buf_DataSend[2] = Count_IgbtProtect >> 8; //IGBT硬件保护计数(高8位)
|
||||||
|
Buf_DataSend[1] = Count_IgbtProtect; //IGBT硬件保护计数(低8位)
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
{
|
||||||
|
Buf_DataSend[3] = 0xAC; //命令字
|
||||||
|
Buf_DataSend[2] = Elec.flo.integer; //电量高位
|
||||||
|
Buf_DataSend[1] = Elec.flo.radix; //电量低位
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:break;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = (unsigned)Buf_DataSend[1] + Buf_DataSend[2] + Buf_DataSend[3];
|
||||||
|
Buf_DataSend[0] = (unsigned)~i; //校验和
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
B_Refrsh_DataSend = 0; //发码数据刷新完成
|
||||||
|
|
||||||
|
if(++Num_CommSend >= 13) //发码切换
|
||||||
|
{
|
||||||
|
Num_CommSend = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
收码数据处理
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_Comm_No && B_Deal_DataRece)
|
||||||
|
{
|
||||||
|
B_Deal_DataRece = 0; //收码数据处理完成
|
||||||
|
|
||||||
|
i = (unsigned)Buf_DataRece[1] + Buf_DataRece[2] + Buf_DataRece[3];
|
||||||
|
i = (unsigned)~i;
|
||||||
|
j = (unsigned)Buf_DataRece[3] & 0xF0;
|
||||||
|
|
||||||
|
if((i == Buf_DataRece[0]) && ((0xB0 == j) || (0xD0 == j))) //数据校验
|
||||||
|
{
|
||||||
|
B_Comm_Have = 1; //有通讯
|
||||||
|
B_Comm_Error = 0; //清通讯故障标志
|
||||||
|
Time_NoComm = 0; //清无通讯计时
|
||||||
|
|
||||||
|
if(0xB0 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
Flag1_Work = Buf_DataRece[2]; //工作标志1
|
||||||
|
Flag2_Work = Buf_DataRece[1]; //工作标志2
|
||||||
|
}
|
||||||
|
else if(0xB1 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
PowerWork = Buf_DataRece[2]; //加热功率值
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(0xB2 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
Num_LxLowOn = Buf_DataRece[2]; //连续低功率开个数
|
||||||
|
Num_LxLowOff = Buf_DataRece[1]; //连续低功率关个数
|
||||||
|
}
|
||||||
|
else if(0xD0 == Buf_DataRece[3])
|
||||||
|
{
|
||||||
|
i = (unsigned)~Buf_DataRece[1];
|
||||||
|
if(Buf_DataRece[2] == i)
|
||||||
|
{
|
||||||
|
SlopeCurr_Adjust = Buf_DataRece[2]; //电流斜率调整值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if(TestOne(Flag1_Work,0))
|
||||||
|
{
|
||||||
|
B_Heat_En = 1; //加热使能
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Heat_En = 0; //加热关闭
|
||||||
|
B_Fan_En = 0; //风扇关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,1))
|
||||||
|
{
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Fan_En = 0; //风扇关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,2))
|
||||||
|
{
|
||||||
|
B_Buzz_En = 1; //蜂鸣器使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Buzz_En = 0; //蜂鸣器关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,3))
|
||||||
|
{
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Short_One(); //蜂鸣器短鸣1声(200ms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,4))
|
||||||
|
{
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Long_One(); //蜂鸣器长鸣1声(400ms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,5))
|
||||||
|
{
|
||||||
|
B_HeatStop_CheckPan = 1; //不加热但检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_HeatStop_CheckPan = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,6))
|
||||||
|
{
|
||||||
|
B_HeatStop_NoCheck = 1; //不加热不检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_HeatStop_NoCheck = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag1_Work,7))
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 1; //PPG抖频禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 0;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if(TestOne(Flag2_Work,0))
|
||||||
|
{
|
||||||
|
B_PanOver_Dis = 1; //锅底NTC超温判断禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PanOver_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag2_Work,1))
|
||||||
|
{
|
||||||
|
B_PanFail_Dis = 1; //锅底NTC失效判断禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PanFail_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(Flag2_Work,7))
|
||||||
|
{
|
||||||
|
B_PPGDP_Can = 1; //PPG抖频强制使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGDP_Can = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
通讯状态确认
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Comm_Have)
|
||||||
|
{ //已确认有通讯
|
||||||
|
if(++Time_NoComm > 2000/C_TimeMS_Main) //2s
|
||||||
|
{
|
||||||
|
Time_NoComm = 0;
|
||||||
|
|
||||||
|
B_Comm_Error = 1; //通讯故障
|
||||||
|
Buzz_Short_One(); //蜂鸣器短鸣1声
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(!B_Comm_No)
|
||||||
|
{ //未确认有无通讯
|
||||||
|
if(++Time_NoComm > 250/C_TimeMS_Main) //250ms
|
||||||
|
{
|
||||||
|
Time_NoComm = 0;
|
||||||
|
B_Comm_No = 1; //无通讯
|
||||||
|
|
||||||
|
TXSTA = 0; //关闭UART模块
|
||||||
|
RCSTA = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //已确认无通讯
|
||||||
|
Time_NoComm = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
215
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Define_Global.h
Normal file
215
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Define_Global.h
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _DEFINE_GLOBAL_H_
|
||||||
|
#define _DEFINE_GLOBAL_H_
|
||||||
|
#pragma warning disable 752
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
---------------------------------- 头文件 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
#include <cms.h>
|
||||||
|
#include "Define_Type.h"
|
||||||
|
#include "Setup_Global.h"
|
||||||
|
#include "Setup_IO.h"
|
||||||
|
|
||||||
|
#include "__REL_IhDebug.h"
|
||||||
|
#include "__CMS_IhPlus.h"
|
||||||
|
#include "Communicate.h"
|
||||||
|
#include "HMI.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 函数声明 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
unsigned char Memory_Write(unsigned char addr,unsigned char value);
|
||||||
|
unsigned char Memory_Read(unsigned char addr);
|
||||||
|
|
||||||
|
void Delay_Xus(unsigned char x);
|
||||||
|
void Delay_Xms(unsigned int x);
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
void Buzz_Short_One();
|
||||||
|
void Buzz_Long_One();
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
void Check_AD();
|
||||||
|
void Deal_Adc();
|
||||||
|
void Set_OutPut();
|
||||||
|
void Set_PPGWork();
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 变量定义 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned char Time_HMI; //人机界面处理计时
|
||||||
|
volatile unsigned char Time_BackPress; //过压保护处理计时
|
||||||
|
volatile unsigned char Status_PPGStop; //PPG停止状态
|
||||||
|
/*************************************************************************/
|
||||||
|
volatile unsigned char AdcCount[3]; //ADC计数
|
||||||
|
volatile unsigned char AdcData[3]; //ADC数据
|
||||||
|
volatile unsigned char Delay_Adc; //ADC延时计时
|
||||||
|
volatile unsigned char Delay_AdcNoOk; //ADC未完成延时计时
|
||||||
|
|
||||||
|
volatile unsigned int AD_VRef; //内部基准电压AD值
|
||||||
|
volatile unsigned char AD_Vdd; //VDD-AD值
|
||||||
|
volatile unsigned char AD_Gnd; //GND-AD值
|
||||||
|
|
||||||
|
volatile unsigned char AD_Current_Fst; //工作电流AD初值
|
||||||
|
volatile unsigned int AD_Current; //工作电流AD值
|
||||||
|
|
||||||
|
volatile unsigned int AD_Volatage; //市电电压AD值
|
||||||
|
|
||||||
|
volatile unsigned char AD_TmprIgbt; //IGBT温度AD值
|
||||||
|
volatile unsigned char AD_TmprPan; //锅底温度AD值
|
||||||
|
volatile unsigned char AD_TmprTop; //顶部温度AD值
|
||||||
|
|
||||||
|
volatile unsigned char Count_IgbtDown; //IGBT高温降功率次数
|
||||||
|
volatile VolElecType Vol; //电压计算结果
|
||||||
|
|
||||||
|
volatile unsigned char Min_CheckError; //故障检测计分
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_PanOver_Dis; //锅底NTC超温判断禁止
|
||||||
|
volatile bit B_PanFail_Dis; //锅底NTC失效判断禁止
|
||||||
|
volatile bit B_Dly_CheckErr; //硬件故障检测延时
|
||||||
|
volatile bit B_IgbtDown; //IGBT高温降功率
|
||||||
|
|
||||||
|
volatile bits AdcF1;
|
||||||
|
#define Flag1_Adc AdcF1.all
|
||||||
|
#define B_Adc_On AdcF1.one.b0 //ADC开启
|
||||||
|
#define B_Adc_Ok AdcF1.one.b1 //ADC完成
|
||||||
|
#define B_Adc_Error AdcF1.one.b2 //ADC错误
|
||||||
|
#define B_Adc_SetOk AdcF1.one.b3 //ADC设置完成
|
||||||
|
|
||||||
|
volatile bits AdcF2;
|
||||||
|
#define Flag2_Adc AdcF2.all
|
||||||
|
#define B_GetAD_MaxMin AdcF2.one.b0 //求AD最大最小值
|
||||||
|
#define B_GetAD_AllSum AdcF2.one.b1 //求AD总和值
|
||||||
|
#define B_CurrAdc_Fst AdcF2.one.b2 //工作电流AD初值检测完成
|
||||||
|
#define B_CurrAdc_Once AdcF2.one.b3 //工作电流ADC完成一次
|
||||||
|
#define B_VolAdc_Once AdcF2.one.b4 //市电电压ADC完成一次
|
||||||
|
|
||||||
|
volatile bits AdcCH;
|
||||||
|
#define Channel_Adc AdcCH.all //AD检测通道
|
||||||
|
#define B_Channel_Vol AdcCH.one.b0 //市电电压
|
||||||
|
#define B_Channel_Curr AdcCH.one.b1 //工作电流
|
||||||
|
#define B_Channel_Igbt AdcCH.one.b2 //IGBT温度
|
||||||
|
#define B_Channel_Pan AdcCH.one.b3 //锅底温度
|
||||||
|
#define B_Channel_Top AdcCH.one.b4 //顶部温度
|
||||||
|
#define B_Channel_VRef AdcCH.one.b5 //内部基准电压
|
||||||
|
#define B_Channel_Gnd AdcCH.one.b6 //GND
|
||||||
|
#define B_Channel_Vdd AdcCH.one.b7 //VDD
|
||||||
|
#define B_Channel_End B_Channel_Vdd //【最后一个ADC通道】
|
||||||
|
|
||||||
|
volatile bits ErrorF1;
|
||||||
|
#define Flag1_Error ErrorF1.all //硬件故障标志1
|
||||||
|
#define B_EVolLow ErrorF1.one.b0 //市电电压过低
|
||||||
|
#define B_EVolHigh ErrorF1.one.b1 //市电电压过高
|
||||||
|
#define B_EIgbtOpen ErrorF1.one.b2 //IGBT-NTC开路
|
||||||
|
#define B_EIgbtClose ErrorF1.one.b3 //IGBT-NTC短路
|
||||||
|
#define B_EIgbtOver ErrorF1.one.b4 //IGBT-NTC超温
|
||||||
|
#define B_EPanOpen ErrorF1.one.b5 //锅底NTC开路
|
||||||
|
#define B_EPanClose ErrorF1.one.b6 //锅底NTC短路
|
||||||
|
#define B_EPanOver ErrorF1.one.b7 //锅底NTC超温
|
||||||
|
|
||||||
|
volatile bits ErrorF2;
|
||||||
|
#define Flag2_Error ErrorF2.all //硬件故障标志2
|
||||||
|
#define B_EPanFail ErrorF2.one.b0 //锅底NTC失效
|
||||||
|
#define B_ETopOpen ErrorF2.one.b1 //顶部NTC开路
|
||||||
|
#define B_ETopClose ErrorF2.one.b2 //顶部NTC短路
|
||||||
|
#define B_ETopFail ErrorF2.one.b3 //顶部NTC失效
|
||||||
|
#define B_Comm_Error ErrorF2.one.b7 //通信故障
|
||||||
|
/*************************************************************************/
|
||||||
|
volatile unsigned int PwmPeriod_Fan; //风扇PWM周期
|
||||||
|
volatile unsigned int PwmDuty_Fan; //风扇PWM占空比
|
||||||
|
|
||||||
|
volatile unsigned int PwmPeriod_Buzz; //蜂鸣器PWM周期
|
||||||
|
volatile unsigned int PwmDuty_Buzz; //蜂鸣器PWM占空比
|
||||||
|
|
||||||
|
volatile unsigned char TimeBuzz; //蜂鸣器鸣叫时间
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bits OutPutF;
|
||||||
|
#define Flag_OutPut OutPutF.all //输出控制标志
|
||||||
|
#define B_Fan_En OutPutF.one.b0 //风扇使能
|
||||||
|
#define B_Buzz_En OutPutF.one.b1 //蜂鸣器使能
|
||||||
|
#define B_Buzz_Out OutPutF.one.b2 //蜂鸣器输出
|
||||||
|
#define B_HeatStop_CheckPan OutPutF.one.b4 //不加热但检锅
|
||||||
|
#define B_HeatStop_NoCheck OutPutF.one.b5 //不加热不检锅
|
||||||
|
/*************************************************************************/
|
||||||
|
volatile VolElecType Elec; //电量计算结果
|
||||||
|
|
||||||
|
volatile unsigned int Delay_ProtectStop; //IGBT硬件保护停止延时
|
||||||
|
volatile unsigned int Count_IgbtProtect; //IGBT硬件保护计数
|
||||||
|
|
||||||
|
volatile unsigned int SlopeCurr; //电流斜率
|
||||||
|
volatile unsigned char SlopeCurr_Adjust; //电流斜率调节值
|
||||||
|
|
||||||
|
volatile unsigned int CurrentReal; //实际工作电流
|
||||||
|
volatile unsigned int PowerReal; //实际输出功率
|
||||||
|
volatile unsigned int PowerSet; //目标输出功率
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_PPGTMR_Adjust; //PPGTMR调整
|
||||||
|
volatile bit B_Adjust_SlopeCurr; //电流斜率调节
|
||||||
|
|
||||||
|
volatile bits PPGF;
|
||||||
|
#define Flag_PPG PPGF.all //PPG控制标志
|
||||||
|
#define B_PPG_En PPGF.one.b0 //PPG使能
|
||||||
|
#define B_PPGStop_CheckPan PPGF.one.b1 //PPG暂停但检锅
|
||||||
|
#define B_PPGStop_NoCheck PPGF.one.b2 //PPG暂停不检锅
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 配置缓存 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned int Buf_PPGMin;
|
||||||
|
volatile unsigned int Buf_PPGMax;
|
||||||
|
volatile unsigned int Buf_PPGMax_Steel;
|
||||||
|
volatile unsigned int Buf_PPGMax_Iron;
|
||||||
|
|
||||||
|
volatile unsigned int Buf_Power_CurrerConst;
|
||||||
|
volatile unsigned int Buf_PowerLose_VHigh;
|
||||||
|
volatile unsigned int Buf_PowerLose_VLow;
|
||||||
|
|
||||||
|
volatile unsigned char Buf_Vol_LowErr_In;
|
||||||
|
volatile unsigned char Buf_Vol_LowErr_Out;
|
||||||
|
volatile unsigned char Buf_Vol_HighErr_In;
|
||||||
|
volatile unsigned char Buf_Vol_HighErr_Out;
|
||||||
|
|
||||||
|
volatile unsigned char Buf_AD_Pan_FanOn;
|
||||||
|
volatile unsigned char Buf_AD_Pan_FanOff;
|
||||||
|
volatile unsigned char Buf_AD_Pan_OverIn;
|
||||||
|
volatile unsigned char Buf_AD_Pan_OverOut;
|
||||||
|
|
||||||
|
volatile unsigned char Buf_AD_Igbt_FanOn;
|
||||||
|
volatile unsigned char Buf_AD_Igbt_FanOff;
|
||||||
|
volatile unsigned char Buf_AD_Igbt_OverIn;
|
||||||
|
volatile unsigned char Buf_AD_Igbt_OverOut;
|
||||||
|
volatile unsigned char Buf_AD_Igbt_HighIn;
|
||||||
|
volatile unsigned char Buf_AD_Igbt_HighOut;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------- 特殊功能寄存器自定义 --------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned char INTCON2 @ 0x08;
|
||||||
|
|
||||||
|
volatile unsigned char PIR1 @ 0x0C;
|
||||||
|
volatile bit ADIF @ ((unsigned)&PIR1*8)+6;
|
||||||
|
volatile bit RCIF @ ((unsigned)&PIR1*8)+5;
|
||||||
|
volatile bit TXIF @ ((unsigned)&PIR1*8)+4;
|
||||||
|
volatile bit TMR2IF @ ((unsigned)&PIR1*8)+1;
|
||||||
|
volatile bit TMR1IF @ ((unsigned)&PIR1*8)+0;
|
||||||
|
|
||||||
|
volatile unsigned char PIR2 @ 0x0D;
|
||||||
|
volatile bit PPGWDTIF @ ((unsigned)&PIR2*8)+1;
|
||||||
|
|
||||||
|
volatile unsigned char PIE1 @ 0x13;
|
||||||
|
volatile bit TMR2IE @ ((unsigned)&PIE1*8)+1;
|
||||||
|
|
||||||
|
volatile unsigned char ADCON0 @ 0x9E;
|
||||||
|
volatile bit GODONE @ ((unsigned)&ADCON0*8)+1;
|
||||||
|
volatile bit ADON @ ((unsigned)&ADCON0*8)+0;
|
||||||
|
|
||||||
|
volatile unsigned char CM1CON1 @ 0x117;
|
||||||
|
volatile bit CM1COF @ ((unsigned)&CM1CON1*8)+3;
|
||||||
|
|
||||||
|
volatile unsigned char PPGTMRL @ 0x190;
|
||||||
|
volatile unsigned char PPGTMRH @ 0x191;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
64
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Define_Type.h
Normal file
64
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Define_Type.h
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _DEFINE_TYPE_H_
|
||||||
|
#define _DEFINE_TYPE_H_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#define uchar unsigned char
|
||||||
|
#define uint unsigned int
|
||||||
|
#define ulong unsigned long
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define ExteralPin(Ram,Bit,Name) volatile bit Name @((unsigned)&Ram*8)+Bit
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define BOOL unsigned char //布尔型
|
||||||
|
|
||||||
|
#define TRUE 1 //真
|
||||||
|
#define FALSE 0 //假
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define SetBit(x,y) x |= (1<<y) //将寄存器x的第y位置1
|
||||||
|
#define ClrBit(x,y) x &= ~(1<<y) //将寄存器x的第y位清0
|
||||||
|
|
||||||
|
#define TestOne(Ram,Bit) (Ram & (1<<Bit)) //测试寄存器Ram的Bit位是否为1
|
||||||
|
#define TestZero(Ram,Bit) !(Ram & (1<<Bit)) //测试寄存器Ram的Bit位是否为0
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
typedef union
|
||||||
|
{
|
||||||
|
unsigned char all;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned b0:1;
|
||||||
|
unsigned b1:1;
|
||||||
|
unsigned b2:1;
|
||||||
|
unsigned b3:1;
|
||||||
|
unsigned b4:1;
|
||||||
|
unsigned b5:1;
|
||||||
|
unsigned b6:1;
|
||||||
|
unsigned b7:1;
|
||||||
|
}one;
|
||||||
|
}bits;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char radix; //低八位为小数
|
||||||
|
unsigned char integer; //高八位为整数
|
||||||
|
}TypeFloat;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
typedef union
|
||||||
|
{
|
||||||
|
unsigned int all;
|
||||||
|
TypeFloat flo;
|
||||||
|
}VolElecType;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
typedef union
|
||||||
|
{
|
||||||
|
unsigned long all;
|
||||||
|
unsigned char one[4];
|
||||||
|
}CommType;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
1061
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/HMI.c
Normal file
1061
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/HMI.c
Normal file
File diff suppressed because it is too large
Load Diff
341
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/HMI.h
Normal file
341
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/HMI.h
Normal file
@@ -0,0 +1,341 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#if !_MODE_IHDEBUG_ && (_MODE_COMM_NO_ || !_MODE_COMM_HAVE_)
|
||||||
|
#ifndef _HMI_H_
|
||||||
|
#define _HMI_H_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 꿎桿<EABF8E>零 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//<2F>零綱츠:唐땍屢 = 꿎桿鞫刻,轟땍屢 = 攣끽鞫刻
|
||||||
|
//#define _TEST_DISP_
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//꽝鑒츰냔:꿎桿鞫刻鑒앴1
|
||||||
|
//꽝鑒綱츠:鑒앴槨16bit
|
||||||
|
//#define C_Data1_TestDisp SlopeCurr
|
||||||
|
#define C_Data1_TestDisp (AD_TmprIgbt << 8) + AD_TmprPan
|
||||||
|
//#define C_Data1_TestDisp AD_Current_Fst
|
||||||
|
//#define C_Data1_TestDisp AD_Current
|
||||||
|
//#define C_Data1_TestDisp AD_Volatage
|
||||||
|
//#define C_Data1_TestDisp (AD_Volatage << 8) + Vol.flo.integer
|
||||||
|
//#define C_Data1_TestDisp (Time_Syn << 8) + Count_Syn
|
||||||
|
//#define C_Data1_TestDisp Buf_PPGTMR
|
||||||
|
//#define C_Data1_TestDisp Status_PPGStop//PowerWork
|
||||||
|
//#define C_Data1_TestDisp RealPower//(AD_Current << 8) + PPGTMRL
|
||||||
|
//#define C_Data1_TestDisp (PPGTMRH << 8) + PPGTMRL
|
||||||
|
//#define C_Data1_TestDisp (Flag2_Error << 8) + Flag1_Error
|
||||||
|
//#define C_Data1_TestDisp (AD_VRef<< 8) + AD_Vdd
|
||||||
|
//#define C_Data1_TestDisp (Num_LxLowOn << 8) + Num_LxLowOff
|
||||||
|
//#define C_Data1_TestDisp (AD_Current << 8) + AD_Volatage
|
||||||
|
//#define C_Data1_TestDisp (AD_VRef << 8) + AD_Volatage
|
||||||
|
//#define C_Data1_TestDisp (Status_PPGStop << 8) + AD_TmprIgbt
|
||||||
|
|
||||||
|
//꽝鑒츰냔:꿎桿鞫刻鑒앴2
|
||||||
|
//꽝鑒綱츠:鑒앴槨16bit
|
||||||
|
#define C_Data2_TestDisp C_Data1_TestDisp//(AD_Current << 8) + AD_Volatage//
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 객숩<EAB09D>零 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_Key_OnOff TestOne(data[4],0) //역밑숩
|
||||||
|
#define C_Key_Add TestOne(data[4],3) //속숩
|
||||||
|
#define C_Key_Sub TestOne(data[3],3) //숑숩
|
||||||
|
#define C_Key_Time TestOne(data[3],0) //珂쇌숩
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define C_KeyValue_OnOff 1 //역밑숩
|
||||||
|
#define C_KeyValue_Add 2 //속숩
|
||||||
|
#define C_KeyValue_Sub 3 //숑숩
|
||||||
|
#define C_KeyValue_Time 4 //珂쇌숩
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 鞫刻<E99EAB>零 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
#define Smg_Data1 ShowData[0] //鑒쯤밗1
|
||||||
|
#define Smg_Data2 ShowData[2] //鑒쯤밗2
|
||||||
|
#define Smg_Data3 ShowData[4] //鑒쯤밗3
|
||||||
|
#define Smg_Data4 ShowData[6] //鑒쯤밗4
|
||||||
|
|
||||||
|
#define Led_Data1 ShowData[8] //LED1
|
||||||
|
#define Led_Data2 ShowData[10] //LED2
|
||||||
|
#define Led_Data3 ShowData[12] //LED3
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define On_Smg_XSD SetBit(Smg_Data1,4) //鑒쯤밗鬼鑒듐
|
||||||
|
#define On_Smg_MH SetBit(Smg_Data2,4) //鑒쯤밗챨뵀
|
||||||
|
|
||||||
|
#define On_Led_M1 SetBit(Led_Data1,2) //M1寧刻됐
|
||||||
|
#define On_Led_M2 SetBit(Led_Data1,3) //M2寧刻됐
|
||||||
|
#define On_Led_M3 SetBit(Led_Data1,4) //M3寧刻됐
|
||||||
|
#define On_Led_M4 SetBit(Led_Data1,5) //M4寧刻됐
|
||||||
|
#define On_Led_M5 SetBit(Led_Data1,6) //M5寧刻됐
|
||||||
|
#define On_Led_M6 SetBit(Led_Data1,1) //M6寧刻됐
|
||||||
|
#define On_Led_M7 SetBit(Led_Data1,0) //M7寧刻됐
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 鑒쯤밗鞫刻긍쯤:bgc_deaf
|
||||||
|
**************************************************************************/
|
||||||
|
#define Aa 0x02
|
||||||
|
#define Bb 0x80
|
||||||
|
#define Cc 0x20
|
||||||
|
#define Dd 0x08
|
||||||
|
#define Ee 0x04
|
||||||
|
#define Ff 0x01
|
||||||
|
#define Gg 0x40
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define SMG_0 Aa|Bb|Cc|Dd|Ee|Ff
|
||||||
|
#define SMG_1 Bb|Cc
|
||||||
|
#define SMG_2 Aa|Bb|Dd|Ee|Gg
|
||||||
|
#define SMG_3 Aa|Bb|Cc|Dd|Gg
|
||||||
|
#define SMG_4 Bb|Cc|Ff|Gg
|
||||||
|
#define SMG_5 Aa|Cc|Dd|Ff|Gg
|
||||||
|
#define SMG_6 Aa|Cc|Dd|Ee|Ff|Gg
|
||||||
|
#define SMG_7 Aa|Bb|Cc
|
||||||
|
#define SMG_8 Aa|Bb|Cc|Dd|Ee|Ff|Gg
|
||||||
|
#define SMG_9 Aa|Bb|Cc|Dd|Ff|Gg
|
||||||
|
#define SMG_A Aa|Bb|Cc|Ee|Ff|Gg
|
||||||
|
#define SMG_B Cc|Dd|Ee|Ff|Gg
|
||||||
|
#define SMG_C Aa|Dd|Ee|Ff
|
||||||
|
#define SMG_D Bb|Cc|Dd|Ee|Gg
|
||||||
|
#define SMG_E Aa|Dd|Ee|Ff|Gg
|
||||||
|
#define SMG_F Aa|Ee|Ff|Gg
|
||||||
|
|
||||||
|
#define SMG_GG Gg
|
||||||
|
#define SMG_L Dd|Ee|Ff
|
||||||
|
#define SMG_O_MIN Cc|Dd|Ee|Gg
|
||||||
|
#define SMG_C_MIN Dd|Ee|Gg
|
||||||
|
#define SMG_K_MIN Dd|Ee|Ff|Gg
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 번뒀侊똑뚤壇AD令
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_TmprPan_300C 245
|
||||||
|
#define C_TmprPan_270C 225
|
||||||
|
#define C_TmprPan_260C 220
|
||||||
|
#define C_TmprPan_240C 219
|
||||||
|
#define C_TmprPan_230C 217
|
||||||
|
#define C_TmprPan_220C 216
|
||||||
|
#define C_TmprPan_210C 210
|
||||||
|
#define C_TmprPan_200C 208
|
||||||
|
#define C_TmprPan_190C 204
|
||||||
|
#define C_TmprPan_180C 195
|
||||||
|
#define C_TmprPan_170C 192
|
||||||
|
#define C_TmprPan_160C 188
|
||||||
|
#define C_TmprPan_150C 179
|
||||||
|
#define C_TmprPan_140C 170
|
||||||
|
#define C_TmprPan_135C 163
|
||||||
|
#define C_TmprPan_130C 155
|
||||||
|
#define C_TmprPan_120C 142
|
||||||
|
#define C_TmprPan_110C 125
|
||||||
|
#define C_TmprPan_100C 111
|
||||||
|
#define C_TmprPan_90C 94
|
||||||
|
#define C_TmprPan_80C 74
|
||||||
|
#define C_TmprPan_70C 62
|
||||||
|
#define C_TmprPan_60C 55
|
||||||
|
#define C_TmprPan_56C 53
|
||||||
|
#define C_TmprPan_50C 37
|
||||||
|
#define C_TmprPan_40C 16
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 젯崎됴묘쪽珂쇌
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_Num_LxLowOn_1D 1
|
||||||
|
#define C_Num_LxLowOff_1D 9
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_2D 2
|
||||||
|
#define C_Num_LxLowOff_2D 8
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_3D 3
|
||||||
|
#define C_Num_LxLowOff_3D 7
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_4D 4
|
||||||
|
#define C_Num_LxLowOff_4D 6
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_5D 5
|
||||||
|
#define C_Num_LxLowOff_5D 5
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_6D 6
|
||||||
|
#define C_Num_LxLowOff_6D 4
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_7D 7
|
||||||
|
#define C_Num_LxLowOff_7D 3
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_8D 8
|
||||||
|
#define C_Num_LxLowOff_8D 2
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_9D 9
|
||||||
|
#define C_Num_LxLowOff_9D 1
|
||||||
|
|
||||||
|
#define C_Num_LxLowOn_10D 0
|
||||||
|
#define C_Num_LxLowOff_10D 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define C_Num_LxLow_1D (C_Num_LxLowOff_1D<<8) + C_Num_LxLowOn_1D
|
||||||
|
#define C_Num_LxLow_2D (C_Num_LxLowOff_2D<<8) + C_Num_LxLowOn_2D
|
||||||
|
#define C_Num_LxLow_3D (C_Num_LxLowOff_3D<<8) + C_Num_LxLowOn_3D
|
||||||
|
#define C_Num_LxLow_4D (C_Num_LxLowOff_4D<<8) + C_Num_LxLowOn_4D
|
||||||
|
#define C_Num_LxLow_5D (C_Num_LxLowOff_5D<<8) + C_Num_LxLowOn_5D
|
||||||
|
#define C_Num_LxLow_6D (C_Num_LxLowOff_6D<<8) + C_Num_LxLowOn_6D
|
||||||
|
#define C_Num_LxLow_7D (C_Num_LxLowOff_7D<<8) + C_Num_LxLowOn_7D
|
||||||
|
#define C_Num_LxLow_8D (C_Num_LxLowOff_8D<<8) + C_Num_LxLowOn_8D
|
||||||
|
#define C_Num_LxLow_9D (C_Num_LxLowOff_9D<<8) + C_Num_LxLowOn_9D
|
||||||
|
#define C_Num_LxLow_10D (C_Num_LxLowOff_10D<<8)+ C_Num_LxLowOn_10D
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 鑒쯤밗긍쯤깊목
|
||||||
|
**************************************************************************/
|
||||||
|
const unsigned char Tab_Smg[] =
|
||||||
|
{
|
||||||
|
SMG_0, // 0
|
||||||
|
SMG_1, // 1
|
||||||
|
SMG_2, // 2
|
||||||
|
SMG_3, // 3
|
||||||
|
SMG_4, // 4
|
||||||
|
SMG_5, // 5
|
||||||
|
SMG_6, // 6
|
||||||
|
SMG_7, // 7
|
||||||
|
SMG_8, // 8
|
||||||
|
SMG_9, // 9
|
||||||
|
SMG_A, // A
|
||||||
|
SMG_B, // B
|
||||||
|
SMG_C, // C
|
||||||
|
SMG_D, // D
|
||||||
|
SMG_E, // E
|
||||||
|
SMG_F, // F
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 묘쪽鞫刻깊목
|
||||||
|
**************************************************************************/
|
||||||
|
const unsigned char Tab_DispPower[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
0x01, // 1도--100W
|
||||||
|
0x02, // 2도--200W
|
||||||
|
0x03, // 3도--300W
|
||||||
|
0x04, // 4도--400W
|
||||||
|
0x05, // 5도--500W
|
||||||
|
0x06, // 6도--600W
|
||||||
|
0x07, // 7도--700W
|
||||||
|
0x08, // 8도--800W
|
||||||
|
0x09, // 9도--900W
|
||||||
|
0x10, //10도--1000W
|
||||||
|
0x11, //11도--1100W
|
||||||
|
0x12, //12도--1200W
|
||||||
|
0x13, //13도--1300W
|
||||||
|
0x14, //14도--1400W
|
||||||
|
0x15, //15도--1500W
|
||||||
|
0x16, //16도--1600W
|
||||||
|
0x17, //17도--1700W
|
||||||
|
0x18, //18도--1800W
|
||||||
|
0x19, //19도--1900W
|
||||||
|
0x20, //20도--2000W
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 젯崎됴묘쪽몸鑒깊목
|
||||||
|
**************************************************************************/
|
||||||
|
const unsigned int Tab_LxLowNum[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
C_Num_LxLow_1D, // 1도
|
||||||
|
C_Num_LxLow_2D, // 2도
|
||||||
|
C_Num_LxLow_3D, // 3도
|
||||||
|
C_Num_LxLow_4D, // 4도
|
||||||
|
C_Num_LxLow_5D, // 5도
|
||||||
|
C_Num_LxLow_6D, // 6도
|
||||||
|
C_Num_LxLow_7D, // 7도
|
||||||
|
C_Num_LxLow_8D, // 8도
|
||||||
|
C_Num_LxLow_9D, // 9도
|
||||||
|
C_Num_LxLow_10D, //10도
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 侊똑왠齡깊목
|
||||||
|
**************************************************************************/
|
||||||
|
/*const unsigned int Tab_ModeTmpr[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
(unsigned int)(65 <<8) + 60, // 1도
|
||||||
|
(unsigned int)(75 <<8) + 70, // 2도
|
||||||
|
(unsigned int)(85 <<8) + 80, // 3도
|
||||||
|
(unsigned int)(95 <<8) + 90, // 4도
|
||||||
|
(unsigned int)(105 <<8) + 100, // 5도
|
||||||
|
(unsigned int)(115 <<8) + 110, // 6도
|
||||||
|
(unsigned int)(125 <<8) + 120, // 7도
|
||||||
|
(unsigned int)(135 <<8) + 130, // 8도
|
||||||
|
(unsigned int)(145 <<8) + 140, // 9도
|
||||||
|
(unsigned int)(155 <<8) + 150, //10도
|
||||||
|
(unsigned int)(165 <<8) + 160, //11도
|
||||||
|
(unsigned int)(175 <<8) + 170, //12도
|
||||||
|
(unsigned int)(185 <<8) + 180, //13도
|
||||||
|
(unsigned int)(195 <<8) + 190, //14도
|
||||||
|
(unsigned int)(205 <<8) + 200, //15도
|
||||||
|
(unsigned int)(210 <<8) + 205, //16도
|
||||||
|
(unsigned int)(215 <<8) + 210, //17도
|
||||||
|
(unsigned int)(220 <<8) + 215, //18도
|
||||||
|
(unsigned int)(225 <<8) + 220, //19도
|
||||||
|
(unsigned int)(230 <<8) + 225, //20도
|
||||||
|
};*/
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 묘쪽渴놔깊목
|
||||||
|
**************************************************************************/
|
||||||
|
const unsigned char Tab_DangOut[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
1000/C_Mult_Power, // 1도--100W
|
||||||
|
1000/C_Mult_Power, // 2도--200W
|
||||||
|
1000/C_Mult_Power, // 3도--300W
|
||||||
|
1000/C_Mult_Power, // 4도--400W
|
||||||
|
1000/C_Mult_Power, // 5도--500W
|
||||||
|
1000/C_Mult_Power, // 6도--600W
|
||||||
|
1000/C_Mult_Power, // 7도--700W
|
||||||
|
1000/C_Mult_Power, // 8도--800W
|
||||||
|
1000/C_Mult_Power, // 9도--900W
|
||||||
|
1000/C_Mult_Power, //10도--1000W
|
||||||
|
1100/C_Mult_Power, //11도--1100W
|
||||||
|
1200/C_Mult_Power, //12도--1200W
|
||||||
|
1300/C_Mult_Power, //13도--1300W
|
||||||
|
1400/C_Mult_Power, //14도--1400W
|
||||||
|
1500/C_Mult_Power, //15도--1500W
|
||||||
|
1600/C_Mult_Power, //16도--1600W
|
||||||
|
1700/C_Mult_Power, //17도--1700W
|
||||||
|
1800/C_Mult_Power, //18도--1800W
|
||||||
|
1900/C_Mult_Power, //19도--1900W
|
||||||
|
2000/C_Mult_Power, //20도--2000W
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 변鑒<EBB380>츠 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
void Init_HMI();
|
||||||
|
void Deal_HMI();
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 긴좆땍屢 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned char ShowData[14];
|
||||||
|
volatile unsigned char KeyValue;
|
||||||
|
|
||||||
|
volatile unsigned char DangWei,DangOut;
|
||||||
|
|
||||||
|
volatile unsigned char Delay_Flash,Wait_Flash;
|
||||||
|
volatile unsigned char Delay_Sec,Delay_5S;
|
||||||
|
volatile unsigned char Delay_NoPan,Delay_Error;
|
||||||
|
|
||||||
|
volatile unsigned char Delay_DS;
|
||||||
|
volatile unsigned char Min_Set,Hour_Set;
|
||||||
|
|
||||||
|
volatile unsigned int Sec_Mode;
|
||||||
|
volatile unsigned char Min_Mode;
|
||||||
|
volatile unsigned char Cnt1_Mode,Cnt2_Mode;
|
||||||
|
|
||||||
|
volatile bit B_OnOff;
|
||||||
|
volatile bit B_KeyLong;
|
||||||
|
volatile bit B_DingShi,B_TimeSet;
|
||||||
|
volatile bit B_Dly_PowerOn,B_DispFlash,B_DispTurn;
|
||||||
|
volatile bit B_TmprStop;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
31
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IH-CMS79F53X5-C-V1.0.cmw
Normal file
31
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IH-CMS79F53X5-C-V1.0.cmw
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
[PROJECT]
|
||||||
|
Version=2.03.25.5
|
||||||
|
Compile=1
|
||||||
|
Device=CMS79F5335
|
||||||
|
OptValue=-local,-asmfile,+asm,-speed,+space,-debug
|
||||||
|
RuntimeValue=
|
||||||
|
WarningValue=-9
|
||||||
|
config=F7FD,F9EF,
|
||||||
|
[FILE]
|
||||||
|
SourceFile=Subfunction.c
|
||||||
|
SourceFile=Setup_IO.c
|
||||||
|
SourceFile=Main.c
|
||||||
|
SourceFile=IRQ.c
|
||||||
|
SourceFile=ADC.c
|
||||||
|
SourceFile=PPG.c
|
||||||
|
SourceFile=OutPut.c
|
||||||
|
SourceFile=HMI.c
|
||||||
|
SourceFile=Communicate_Uart.c
|
||||||
|
SourceFile=__REL_IhDebug.c
|
||||||
|
HeadFile=Setup_IO.h
|
||||||
|
HeadFile=Setup_Global.h
|
||||||
|
HeadFile=Define_Type.h
|
||||||
|
HeadFile=Define_Global.h
|
||||||
|
HeadFile=HMI.h
|
||||||
|
HeadFile=Communicate.h
|
||||||
|
HeadFile=__CMS_IhPlus.h
|
||||||
|
HeadFile=__REL_IhDebug.h
|
||||||
|
LibraryFile=__REL_IhDebug_Comm_V1.0.0.lpp
|
||||||
|
LibraryFile=__CMS_IhPlus_CMS79F53x5_V1.0.0.lpp
|
||||||
|
OtherFile=工程版本说明.txt
|
||||||
|
OtherFile=库版本说明.txt
|
||||||
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IH-CMS79F53X5-C-V1.0.cmx
Normal file
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/IH-CMS79F53X5-C-V1.0.cmx
Normal file
Binary file not shown.
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
306
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Main.c
Normal file
306
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Main.c
Normal file
@@ -0,0 +1,306 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Init_UserRam
|
||||||
|
* 函数功能:初始化用户寄存器
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:初始化调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Init_UserRam()
|
||||||
|
{
|
||||||
|
#if _MODE_COMM_NO_
|
||||||
|
B_Comm_No = 1; //无通信模式
|
||||||
|
#elif _MODE_COMM_HAVE_
|
||||||
|
B_Comm_Have = 1; //有通信模式
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Buzz_Long_One(); //蜂鸣器长鸣1声
|
||||||
|
B_Adc_Curr = 1; //检测工作电流AD
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
//配置缓存初始化:
|
||||||
|
Buf_PPGMin = C_PPGMin;
|
||||||
|
Buf_PPGMax = C_PPGMax;
|
||||||
|
Buf_PPGMax_Steel = C_PPGMax_Steel;
|
||||||
|
Buf_PPGMax_Iron = C_PPGMax_Iron;
|
||||||
|
|
||||||
|
Buf_Power_CurrerConst = (unsigned int)(C_Vol_Low * C_Currer_Const);
|
||||||
|
Buf_PowerLose_VHigh = C_PowerLose_VHigh;
|
||||||
|
Buf_PowerLose_VLow = C_PowerLose_VLow;
|
||||||
|
|
||||||
|
Buf_Vol_LowErr_In = C_Vol_LowErr_In - C_Vol_Comp;
|
||||||
|
Buf_Vol_LowErr_Out = C_Vol_LowErr_Out - C_Vol_Comp;
|
||||||
|
Buf_Vol_HighErr_In = C_Vol_HighErr_In - C_Vol_Comp;
|
||||||
|
Buf_Vol_HighErr_Out = C_Vol_HighErr_Out - C_Vol_Comp;
|
||||||
|
|
||||||
|
Buf_AD_Pan_FanOn = C_AD_Pan_FanOn;
|
||||||
|
Buf_AD_Pan_FanOff = C_AD_Pan_FanOff;
|
||||||
|
Buf_AD_Pan_OverIn = C_AD_Pan_OverIn;
|
||||||
|
Buf_AD_Pan_OverOut = C_AD_Pan_OverOut;
|
||||||
|
|
||||||
|
Buf_AD_Igbt_FanOn = C_AD_Igbt_FanOn;
|
||||||
|
Buf_AD_Igbt_FanOff = C_AD_Igbt_FanOff;
|
||||||
|
Buf_AD_Igbt_OverIn = C_AD_Igbt_OverIn;
|
||||||
|
Buf_AD_Igbt_OverOut = C_AD_Igbt_OverOut;
|
||||||
|
Buf_AD_Igbt_HighIn = C_AD_Igbt_HighIn;
|
||||||
|
Buf_AD_Igbt_HighOut = C_AD_Igbt_HighOut;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
ValueOPA_Set = 0B00000000;
|
||||||
|
|
||||||
|
#ifdef _TEST_PGAOUT_
|
||||||
|
ValuePGA_Set = 0B10000010 | ((C_Times_PGA & 0x03) << 5);
|
||||||
|
#else
|
||||||
|
ValuePGA_Set = 0B10000000 | ((C_Times_PGA & 0x03) << 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _TEST_CMPOUT_
|
||||||
|
ValueCM_Test = 0x08 | (C_CMOUTEN_Num & 0x07);
|
||||||
|
#else
|
||||||
|
ValueCM_Test = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ValuePPG_Single = C_PPGSingle;
|
||||||
|
ValueCnt_HaveNoPan = C_Vaule_HaveNoPan;
|
||||||
|
|
||||||
|
ValueTime_PPGDly = C_PPGDly;
|
||||||
|
|
||||||
|
ValueVol_VolSurge = C_Vol_VolSurge;
|
||||||
|
ValueVol_CurrSurge = C_Vol_CurrSurge;
|
||||||
|
ValueVol_OnStep = C_Vol_OnStep;
|
||||||
|
|
||||||
|
ValueVol_BackPress1 = C_Vol_BackPress1;
|
||||||
|
ValuePPG_BackPress1 = C_PPG_BackPress1;
|
||||||
|
ValueVol_BackPress2 = C_Vol_BackPress2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Clean_Ram
|
||||||
|
* 函数功能:清通用寄存器
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:初始化调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Clean_Ram()
|
||||||
|
{
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
|
||||||
|
for(FSR = 0x20; FSR < 0x7F; FSR++)
|
||||||
|
{
|
||||||
|
INDF = 0;
|
||||||
|
}
|
||||||
|
for(FSR = 0xA0; FSR < 0xEF; FSR++)
|
||||||
|
{
|
||||||
|
INDF = 0;
|
||||||
|
}
|
||||||
|
IRP = 1;
|
||||||
|
|
||||||
|
for(FSR = 0x20; FSR < 0x7F; FSR++)
|
||||||
|
{
|
||||||
|
INDF = 0;
|
||||||
|
}
|
||||||
|
for(FSR = 0xA0; FSR < 0xEF; FSR++)
|
||||||
|
{
|
||||||
|
INDF = 0;
|
||||||
|
}
|
||||||
|
IRP = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Init_System
|
||||||
|
* 函数功能:初始化系统
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:初始化调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Init_System()
|
||||||
|
{
|
||||||
|
NOP();
|
||||||
|
INTCON = 0; //中断禁止
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
|
||||||
|
OSCCON = 0x70; //内部振荡频率为32MHz(默认为16MHz)
|
||||||
|
OPTION_REG = 0B00001100; //WDT分频:1/16
|
||||||
|
|
||||||
|
PORTA = C_Init_PORTA;
|
||||||
|
PORTB = C_Init_PORTB; //初始化IO电平
|
||||||
|
PORTC = C_Init_PORTC;
|
||||||
|
|
||||||
|
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
|
||||||
|
WPUA = SetWPUX_CommNo(0xA);
|
||||||
|
WPUB = SetWPUX_CommNo(0xB); //初始化IO上拉
|
||||||
|
WPUC = SetWPUX_CommNo(0xC);
|
||||||
|
|
||||||
|
TRISA = SetTRISX_CommNo(0xA);
|
||||||
|
TRISB = SetTRISX_CommNo(0xB); //初始化IO方向
|
||||||
|
TRISC = SetTRISX_CommNo(0xC);
|
||||||
|
#else
|
||||||
|
WPUA = SetWPUX_CommHave(0xA);
|
||||||
|
WPUB = SetWPUX_CommHave(0xB); //初始化IO上拉
|
||||||
|
WPUC = SetWPUX_CommHave(0xC);
|
||||||
|
|
||||||
|
TRISA = SetTRISX_CommHave(0xA);
|
||||||
|
TRISB = SetTRISX_CommHave(0xB); //初始化IO方向
|
||||||
|
TRISC = SetTRISX_CommHave(0xC);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PORTA = C_Init_PORTA;
|
||||||
|
PORTB = C_Init_PORTB; //初始化IO电平
|
||||||
|
PORTC = C_Init_PORTC;
|
||||||
|
|
||||||
|
INTCON = 0; //中断禁止
|
||||||
|
INTCON2 = 0;
|
||||||
|
PIR1 = 0; //清中断请求标志
|
||||||
|
PIR2 = 0;
|
||||||
|
PIR3 = 0;
|
||||||
|
PIE1 = 0; //清中断允许标志
|
||||||
|
PIE2 = 0;
|
||||||
|
PIE3 = 0;
|
||||||
|
|
||||||
|
OPTION_REG = 0B00000111; //Timer0分频:1/256
|
||||||
|
TMR0 = 0;
|
||||||
|
|
||||||
|
TMR1H = 0;
|
||||||
|
TMR1L = 0;
|
||||||
|
T1CON = 0B00110001; //使能Timer1,预分频=8
|
||||||
|
|
||||||
|
PR2 = C_TimeUS_Int * 4; //设置Timer2时间
|
||||||
|
T2CON = 0B00001100; //使能Timer2,预分频=1,后分频=2
|
||||||
|
TMR2IE = 1; //Timer2中断使能
|
||||||
|
|
||||||
|
INTCON = 0xC0; //中断使能
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Refurbish_IO
|
||||||
|
* 函数功能:刷新IO
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用,可增强抗干扰能力
|
||||||
|
*【注 意】:RB1必须设为推挽输出,RB2必须设为上拉输入(程序默认设置,可不改动)
|
||||||
|
**************************************************************************/
|
||||||
|
void Refresh_IO()
|
||||||
|
{
|
||||||
|
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
|
||||||
|
if(B_Comm_No)
|
||||||
|
#endif
|
||||||
|
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
|
||||||
|
{
|
||||||
|
WPUA = SetWPUX_CommNo(0xA);
|
||||||
|
WPUB = SetWPUX_CommNo(0xB);
|
||||||
|
WPUC = SetWPUX_CommNo(0xC);
|
||||||
|
|
||||||
|
TRISA = SetTRISX_CommNo(0xA);
|
||||||
|
TRISB = SetTRISX_CommNo(0xB);
|
||||||
|
TRISC = SetTRISX_CommNo(0xC);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
#if !_MODE_COMM_NO_
|
||||||
|
{
|
||||||
|
WPUA = SetWPUX_CommHave(0xA);
|
||||||
|
WPUB = SetWPUX_CommHave(0xB);
|
||||||
|
WPUC = SetWPUX_CommHave(0xC);
|
||||||
|
|
||||||
|
TRISA = SetTRISX_CommHave(0xA);
|
||||||
|
TRISB = SetTRISX_CommHave(0xB);
|
||||||
|
TRISC = SetTRISX_CommHave(0xC);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Refurbish_Sfr
|
||||||
|
* 函数功能:刷新特殊功能寄存器
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用,可增强抗干扰能力
|
||||||
|
**************************************************************************/
|
||||||
|
void Refresh_Sfr()
|
||||||
|
{
|
||||||
|
PIE1 = 0x02;
|
||||||
|
PIE2 = 0;
|
||||||
|
PIE3 = 0;
|
||||||
|
INTCON = 0xC0; //中断使能
|
||||||
|
INTCON2 = 0;
|
||||||
|
|
||||||
|
OPTION_REG = 0B00000111; //Timer0分频:1/256
|
||||||
|
|
||||||
|
if(0B00110001 != T1CON) //T1CON值不变就不写
|
||||||
|
{ //写操作会影响计时,在T1CON没有乱的时候不写
|
||||||
|
T1CON = 0B00110000;
|
||||||
|
T1CON |= 0x01;
|
||||||
|
}
|
||||||
|
|
||||||
|
PR2 = C_TimeUS_Int * 4; //设置Timer2时间
|
||||||
|
if(0B00001100 != T2CON) //T2CON值不变就不写
|
||||||
|
{ //写操作会影响计时,在T2CON没有乱的时候不写
|
||||||
|
T2CON = 0B00001000;
|
||||||
|
T2CON |= 0x04;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
-------------------------------- 主循环处理 -------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
void main() @0x0800
|
||||||
|
{
|
||||||
|
CRCDL--;CRCDH--;
|
||||||
|
|
||||||
|
Clean_Ram(); //清通用寄存器
|
||||||
|
Init_System(); //初始化系统
|
||||||
|
|
||||||
|
#if !_MODE_IHDEBUG_ && (_MODE_COMM_NO_ || !_MODE_COMM_HAVE_)
|
||||||
|
Init_HMI(); //初始化人机界面
|
||||||
|
#endif
|
||||||
|
Delay_Xms(200); //上电延时
|
||||||
|
Init_UserRam(); //初始化用户寄存器
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
if(TMR1IF)
|
||||||
|
{
|
||||||
|
TMR1IF = 0;
|
||||||
|
TMR1L = 0xFFFF - C_TimeMS_Main * 4000;
|
||||||
|
TMR1H = (0xFFFF - C_TimeMS_Main * 4000) >> 8;
|
||||||
|
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
Refresh_IO(); //刷新IO
|
||||||
|
Refresh_Sfr(); //刷新特殊功能寄存器
|
||||||
|
|
||||||
|
Deal_Adc(); //ADC处理
|
||||||
|
Set_OutPut(); //输出设置
|
||||||
|
Set_PPGWork(); //PPG工作设置
|
||||||
|
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
REL_IhDebug_Main(); //IH调试处理(主循环)
|
||||||
|
#else
|
||||||
|
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
|
||||||
|
if(B_Comm_No)
|
||||||
|
#endif
|
||||||
|
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
|
||||||
|
{
|
||||||
|
Deal_HMI(); //人机界面处理
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
#if !_MODE_COMM_NO_
|
||||||
|
{
|
||||||
|
Deal_CommData(); //通信数据处理
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
505
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/OutPut.c
Normal file
505
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/OutPut.c
Normal file
@@ -0,0 +1,505 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:OutPut_PWM
|
||||||
|
* 函数功能:PWM输出
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void OutPut_PWM()
|
||||||
|
{
|
||||||
|
volatile unsigned char i;
|
||||||
|
volatile unsigned char bak_PWMCON0 = 0B01100000; //PWM时钟分频=32
|
||||||
|
volatile unsigned char bak_PWMCON1 = 0;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
//风扇:
|
||||||
|
#if _FAN_OUT_PWM_ && ((C_PwmChannel_Buzz&0xE0)!=(C_PwmChannel_Fan&0xE0)) && (C_PwmChannel_Fan!=0xFF)
|
||||||
|
if(PwmDuty_Fan)
|
||||||
|
{
|
||||||
|
PwmDuty_Fan--;
|
||||||
|
PwmDuty_Fan &= 0x3FF;
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Fan)
|
||||||
|
{
|
||||||
|
PwmPeriod_Fan--;
|
||||||
|
PwmPeriod_Fan &= 0x3FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (C_PwmChannel_Fan>>4)==0
|
||||||
|
PWMDH &= ~(3 << 0); //Bit0~Bit1:PWM0占空比高2位
|
||||||
|
if(PwmDuty_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMD0L = PwmDuty_Fan; //PWM0占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 0); //Bit0~Bit1:PWM0\PWM1周期高2位
|
||||||
|
if(PwmPeriod_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMTL = PwmPeriod_Fan; //PWM0~PWM1周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Fan)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 0); //使能PWM0
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Fan&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= 0; //PWM的IO位置选择:PWM0A
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= 1; //PWM的IO位置选择:PWM0B
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= 2; //PWM的IO位置选择:PWM0C
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= 3; //PWM的IO位置选择:PWM0D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif (C_PwmChannel_Fan>>4)==1
|
||||||
|
PWMDH &= ~(3 << 2); //Bit2~Bit3:PWM1占空比高2位
|
||||||
|
if(PwmDuty_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 3);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 2);
|
||||||
|
}
|
||||||
|
PWMD1L = PwmDuty_Fan; //PWM1占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 0); //Bit0~Bit1:PWM0\PWM1周期高2位
|
||||||
|
if(PwmPeriod_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMTL = PwmPeriod_Fan; //PWM0~PWM1周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Fan)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 1); //使能PWM1
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Fan&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= (0 << 2); //PWM的IO位置选择:PWM1A
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= (1 << 2); //PWM的IO位置选择:PWM1B
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= (2 << 2); //PWM的IO位置选择:PWM1C
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= (3 << 2); //PWM的IO位置选择:PWM1D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif (C_PwmChannel_Fan>>4)==2
|
||||||
|
PWMDH &= ~(3 << 4); //Bit4~Bit5:PWM2占空比高2位
|
||||||
|
if(PwmDuty_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 5);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 4);
|
||||||
|
}
|
||||||
|
PWMD2L = PwmDuty_Fan; //PWM2占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 2); //Bit2~Bit3:PWM2周期高2位
|
||||||
|
if(PwmPeriod_Fan & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 3);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Fan & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 2);
|
||||||
|
}
|
||||||
|
PWM2TL = PwmPeriod_Fan; //PWM2周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Fan)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 2); //使能PWM2
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Fan&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= (0 << 4); //PWM的IO位置选择:PWM2A
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= (1 << 4); //PWM的IO位置选择:PWM2B
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= (2 << 4); //PWM的IO位置选择:PWM2C
|
||||||
|
#elif (C_PwmChannel_Fan&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= (3 << 4); //PWM的IO位置选择:PWM2D
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
//蜂鸣器:
|
||||||
|
#if (C_PwmChannel_Buzz!=0xFF)
|
||||||
|
if(PwmDuty_Buzz)
|
||||||
|
{
|
||||||
|
PwmDuty_Buzz--;
|
||||||
|
PwmDuty_Buzz &= 0x3FF;
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Buzz)
|
||||||
|
{
|
||||||
|
PwmPeriod_Buzz--;
|
||||||
|
PwmPeriod_Buzz &= 0x3FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (C_PwmChannel_Buzz>>4)==0
|
||||||
|
PWMDH &= ~(3 << 0); //Bit0~Bit1:PWM0占空比高2位
|
||||||
|
if(PwmDuty_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMD0L = PwmDuty_Buzz; //PWM0占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 0); //Bit0~Bit1:PWM0\PWM1周期高2位
|
||||||
|
if(PwmPeriod_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMTL = PwmPeriod_Buzz; //PWM0~PWM1周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Buzz)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 0); //使能PWM0
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Buzz&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= 0; //PWM的IO位置选择:PWM0A
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= 1; //PWM的IO位置选择:PWM0B
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= 2; //PWM的IO位置选择:PWM0C
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= 3; //PWM的IO位置选择:PWM0D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif (C_PwmChannel_Buzz>>4)==1
|
||||||
|
PWMDH &= ~(3 << 2); //Bit2~Bit3:PWM1占空比高2位
|
||||||
|
if(PwmDuty_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 3);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 2);
|
||||||
|
}
|
||||||
|
PWMD1L = PwmDuty_Buzz; //PWM1占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 0); //Bit0~Bit1:PWM0\PWM1周期高2位
|
||||||
|
if(PwmPeriod_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 1);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 0);
|
||||||
|
}
|
||||||
|
PWMTL = PwmPeriod_Buzz; //PWM0~PWM1周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Buzz)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 1); //使能PWM1
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Buzz&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= (0 << 2); //PWM的IO位置选择:PWM1A
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= (1 << 2); //PWM的IO位置选择:PWM1B
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= (2 << 2); //PWM的IO位置选择:PWM1C
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= (3 << 2); //PWM的IO位置选择:PWM1D
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif (C_PwmChannel_Buzz>>4)==2
|
||||||
|
PWMDH &= ~(3 << 4); //Bit4~Bit5:PWM2占空比高2位
|
||||||
|
if(PwmDuty_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 5);
|
||||||
|
}
|
||||||
|
if(PwmDuty_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMDH |= (1 << 4);
|
||||||
|
}
|
||||||
|
PWMD2L = PwmDuty_Buzz; //PWM2占空比低8位
|
||||||
|
|
||||||
|
PWMTH &= ~(3 << 2); //Bit2~Bit3:PWM2周期高2位
|
||||||
|
if(PwmPeriod_Buzz & 0x0200)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 3);
|
||||||
|
}
|
||||||
|
if(PwmPeriod_Buzz & 0x0100)
|
||||||
|
{
|
||||||
|
PWMTH |= (1 << 2);
|
||||||
|
}
|
||||||
|
PWM2TL = PwmPeriod_Buzz; //PWM2周期低8位
|
||||||
|
|
||||||
|
if(PwmDuty_Buzz)
|
||||||
|
{
|
||||||
|
bak_PWMCON0 |= (1 << 2); //使能PWM2
|
||||||
|
}
|
||||||
|
#if (C_PwmChannel_Buzz&0xF)==0xA
|
||||||
|
bak_PWMCON1 |= (0 << 4); //PWM的IO位置选择:PWM2A
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xB
|
||||||
|
bak_PWMCON1 |= (1 << 4); //PWM的IO位置选择:PWM2B
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xC
|
||||||
|
bak_PWMCON1 |= (2 << 4); //PWM的IO位置选择:PWM2C
|
||||||
|
#elif (C_PwmChannel_Buzz&0xF)==0xD
|
||||||
|
bak_PWMCON1 |= (3 << 4); //PWM的IO位置选择:PWM2D
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
PWMCON1 = bak_PWMCON1; //PWM的IO位置设置
|
||||||
|
|
||||||
|
if(bak_PWMCON0 != PWMCON0)
|
||||||
|
{
|
||||||
|
PWMCON0 = bak_PWMCON0; //PWM时钟分频设置,使能\禁止PWM
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Buzz_Short_One
|
||||||
|
* 函数功能:蜂鸣器短鸣一声
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:
|
||||||
|
**************************************************************************/
|
||||||
|
void Buzz_Short_One()
|
||||||
|
{
|
||||||
|
TimeBuzz = 200/C_TimeMS_Main; //200ms
|
||||||
|
B_Buzz_Out = 1; //蜂鸣器输出
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Buzz_Long_One
|
||||||
|
* 函数功能:蜂鸣器长鸣一声
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:
|
||||||
|
**************************************************************************/
|
||||||
|
void Buzz_Long_One()
|
||||||
|
{
|
||||||
|
TimeBuzz = 400/C_TimeMS_Main; //400ms
|
||||||
|
B_Buzz_Out = 1; //蜂鸣器输出
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:OutPut_Buzz
|
||||||
|
* 函数功能:蜂鸣器输出
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void OutPut_Buzz()
|
||||||
|
{
|
||||||
|
if(TimeBuzz) //蜂鸣器鸣叫计时
|
||||||
|
{
|
||||||
|
TimeBuzz--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Buzz_Out = 0; //蜂鸣器输出停止
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#if (C_PwmChannel_Buzz!=0xFF)
|
||||||
|
PwmPeriod_Buzz = 250; //蜂鸣器PWM周期:250us
|
||||||
|
|
||||||
|
if(B_Buzz_En || B_Buzz_Out)
|
||||||
|
{ //蜂鸣器输出
|
||||||
|
PwmDuty_Buzz = 125; //蜂鸣器PWM占空比:125us
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //蜂鸣器关闭
|
||||||
|
PwmDuty_Buzz = 0; //蜂鸣器PWM占空比:0us
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:OutPut_Fan
|
||||||
|
* 函数功能:风扇输出
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void OutPut_Fan()
|
||||||
|
{
|
||||||
|
static unsigned int Delay_FanOut;
|
||||||
|
static unsigned char Flag_FanOut;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if((AD_TmprPan > Buf_AD_Pan_FanOn) || (AD_TmprIgbt > Buf_AD_Igbt_FanOn))
|
||||||
|
{ //锅底高温、IGBT高温
|
||||||
|
SetBit(Flag_FanOut,0);
|
||||||
|
}
|
||||||
|
else if((AD_TmprPan < Buf_AD_Pan_FanOff) && (AD_TmprIgbt < Buf_AD_Igbt_FanOff))
|
||||||
|
{
|
||||||
|
ClrBit(Flag_FanOut,0);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_Heat_En)
|
||||||
|
{ //加热使能
|
||||||
|
SetBit(Flag_FanOut,1);
|
||||||
|
|
||||||
|
if(TestOne(Flag_FanOut,0))
|
||||||
|
{ //锅底高温、IGBT高温
|
||||||
|
Delay_FanOut = 1000u/C_TimeMS_Main*180; //3min
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //锅底和IGBT温度正常
|
||||||
|
Delay_FanOut = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClrBit(Flag_FanOut,1);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_Fan_En || B_Zero_Lose)
|
||||||
|
{ //风扇使能、过零丢失
|
||||||
|
SetBit(Flag_FanOut,2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClrBit(Flag_FanOut,2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(Delay_FanOut)
|
||||||
|
{ //风扇延时
|
||||||
|
Delay_FanOut--;
|
||||||
|
SetBit(Flag_FanOut,3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClrBit(Flag_FanOut,3);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#if !_FAN_OUT_PWM_ || ((C_PwmChannel_Buzz&0xE0)==(C_PwmChannel_Fan&0xE0)) || (C_PwmChannel_Fan==0xFF)
|
||||||
|
if(Flag_FanOut && B_CurrAdc_Fst)
|
||||||
|
{
|
||||||
|
Pin_Fan = 1; //风扇输出(IO口输出高)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Pin_Fan = 0; //风扇输出停止(IO口输出低)
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#else
|
||||||
|
PwmPeriod_Fan = 60; //风扇PWM周期:60us
|
||||||
|
|
||||||
|
if(Flag_FanOut && B_CurrAdc_Fst)
|
||||||
|
{
|
||||||
|
PwmDuty_Fan = 60; //风扇PWM占空比:60us
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PwmDuty_Fan = 0; //风扇PWM占空比:0us
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:OutPut_Heat
|
||||||
|
* 函数功能:加热输出
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void OutPut_Heat()
|
||||||
|
{
|
||||||
|
if(B_Protect_Stop)
|
||||||
|
{ //IGBT保护停止
|
||||||
|
Flag_PPG = 0; //PPG输出关闭
|
||||||
|
B_PPG_On = B_PPG_Out = 0;
|
||||||
|
B_Pan_Error = B_Pan_No = B_Pan_Have = 0;
|
||||||
|
}
|
||||||
|
#ifndef _TEST_PPGOUT_ //PPG输出测试
|
||||||
|
#ifndef _TEST_PANCHECK_ //检锅测试
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
else if((!B_Heat_En || Flag1_Error || Flag2_Error) &&\
|
||||||
|
!B_Test_PPGOut && !B_Test_PanCheck)
|
||||||
|
#else
|
||||||
|
else if(!B_Heat_En || Flag1_Error || Flag2_Error)
|
||||||
|
#endif
|
||||||
|
{ //加热关闭、故障
|
||||||
|
Flag_PPG = 0; //PPG输出关闭
|
||||||
|
B_PPG_On = B_PPG_Out = 0;
|
||||||
|
B_Pan_Error = B_Pan_No = B_Pan_Have = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
{ //正常加热输出
|
||||||
|
B_PPG_En = 1; //使能PPG输出
|
||||||
|
|
||||||
|
#ifndef _TEST_PPGOUT_ //PPG输出测试
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
if(!B_Test_PPGOut)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if(B_HeatStop_CheckPan)
|
||||||
|
{
|
||||||
|
B_PPGStop_CheckPan = 1; //PPG暂停但检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGStop_CheckPan = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(B_HeatStop_NoCheck)
|
||||||
|
{
|
||||||
|
B_PPGStop_NoCheck = 1; //PPG暂停不检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGStop_NoCheck = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _TEST_PANCHECK_ //检锅测试
|
||||||
|
B_PPGStop_CheckPan = 1; //PPG暂停但检锅
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
if(B_Test_PanCheck) //检锅测试
|
||||||
|
{
|
||||||
|
B_PPGStop_CheckPan = 1; //PPG暂停但检锅
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Set_OutPut
|
||||||
|
* 函数功能:输出设置
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Set_OutPut()
|
||||||
|
{
|
||||||
|
OutPut_PWM(); //PWM输出
|
||||||
|
|
||||||
|
OutPut_Heat(); //加热输出
|
||||||
|
OutPut_Fan(); //风扇输出
|
||||||
|
OutPut_Buzz(); //蜂鸣器输出
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
580
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/PPG.c
Normal file
580
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/PPG.c
Normal file
@@ -0,0 +1,580 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Calc_Electric
|
||||||
|
* 函数功能:计算工作电量
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用,计算结果放于Elec结构中
|
||||||
|
* P*t = 0.01度 = 1度/100 = 1KW.h/100 = 36000W.s
|
||||||
|
* P*7/1000 = 36*7 = 252
|
||||||
|
**************************************************************************/
|
||||||
|
void Calc_Electric()
|
||||||
|
{
|
||||||
|
static unsigned char ElecTime,ElecBasic;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_PPG_Out && (0 == --ElecTime))
|
||||||
|
{
|
||||||
|
//256*256*256*7/1000/2 = 0xE560,放大256^3倍
|
||||||
|
//运算结果取最高位还原数据
|
||||||
|
ElecBasic += ((unsigned long)0xE560 * PowerReal) >> 24;
|
||||||
|
|
||||||
|
//1s为7个值,误差补偿4s即28个值,252-4*7=224
|
||||||
|
if(ElecBasic >= 224)
|
||||||
|
{
|
||||||
|
ElecBasic -= 224;
|
||||||
|
|
||||||
|
if(++Elec.flo.radix >= 100) //0.01度
|
||||||
|
{
|
||||||
|
Elec.flo.radix = 0;
|
||||||
|
Elec.flo.integer++; //1度
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ElecTime = 500/C_TimeMS_Main; //0.5s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Igbt_Protect
|
||||||
|
* 函数功能:IGBT硬件保护
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Igbt_Protect()
|
||||||
|
{
|
||||||
|
static bit B_Bak_IgbtProtect;
|
||||||
|
|
||||||
|
volatile unsigned char i;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(CM1COF || CM2IF || CM3IF || CM4IF || CM5IF || PPGWDTIF)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
if(CM1COF) SetBit(i,0); //1级过压比较器计数溢出
|
||||||
|
if(CM2IF) SetBit(i,1); //电压浪涌
|
||||||
|
if(CM3IF) SetBit(i,2); //电流浪涌
|
||||||
|
if(CM4IF) SetBit(i,3); //2级过压
|
||||||
|
if(CM5IF) SetBit(i,4); //导通台阶过高
|
||||||
|
if(PPGWDTIF) SetBit(i,5); //PPG看门狗溢出
|
||||||
|
|
||||||
|
Status_PPGStop = i; //PPG停止状态
|
||||||
|
|
||||||
|
B_ProtectCM_Restart = 1; //保护比较器重启
|
||||||
|
B_Protect_Stop = 1; //硬件保护停止
|
||||||
|
Delay_ProtectStop = 0;
|
||||||
|
|
||||||
|
if(!B_Bak_IgbtProtect)
|
||||||
|
{
|
||||||
|
if(Count_IgbtProtect < 0xFFFF)
|
||||||
|
{
|
||||||
|
Count_IgbtProtect++; //IGBT硬件保护计数+1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
B_Bak_IgbtProtect = 1; //备份状态
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Bak_IgbtProtect = 0; //备份状态
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_Protect_Stop)
|
||||||
|
{ //硬件保护停止
|
||||||
|
Flag_PPG = 0; //PPG输出关闭
|
||||||
|
B_PPG_On = B_PPG_Out = 0;
|
||||||
|
B_Pan_Error = B_Pan_No = B_Pan_Have = 0;
|
||||||
|
|
||||||
|
if(++Delay_ProtectStop > 2000/C_TimeMS_Main) //2s
|
||||||
|
{
|
||||||
|
Delay_ProtectStop = 0;
|
||||||
|
|
||||||
|
B_Protect_Stop = 0; //退出硬件保护停止状态
|
||||||
|
Status_PPGStop = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
CM1COF = 0; //清比较器标志
|
||||||
|
CM2IF = 0;
|
||||||
|
CM3IF = 0;
|
||||||
|
CM4IF = 0;
|
||||||
|
CM5IF = 0;
|
||||||
|
PPGWDTIF = 0;
|
||||||
|
|
||||||
|
if(!B_Heat_En)
|
||||||
|
{ //加热关闭
|
||||||
|
Count_IgbtProtect = 0; //清IGBT硬件保护计数
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Set_SlopeCurr
|
||||||
|
* 函数功能:电流斜率设置
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Set_SlopeCurr()
|
||||||
|
{
|
||||||
|
static unsigned char OldAdjust;
|
||||||
|
static bit B_Init_CurrSlope;
|
||||||
|
|
||||||
|
volatile unsigned char i,j;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(!B_Init_CurrSlope) //电流斜率调整值初始化
|
||||||
|
{
|
||||||
|
i = Memory_Read(C_EEAddr_CheckAA);
|
||||||
|
j = Memory_Read(C_EEAddr_Check55);
|
||||||
|
|
||||||
|
if((0xAA == i) && (0x55 == j))
|
||||||
|
{
|
||||||
|
i = Memory_Read(C_EEAddr_DataP);
|
||||||
|
j = (unsigned)~Memory_Read(C_EEAddr_DataI);
|
||||||
|
|
||||||
|
if(i == j)
|
||||||
|
{
|
||||||
|
SlopeCurr_Adjust = i; //EE数据校验通过,选用EE读取值
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SlopeCurr_Adjust = 0x80; //EE数据校验不通过,选用默认值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SlopeCurr_Adjust = 0x80; //EE数据校验不通过,选用默认值
|
||||||
|
}
|
||||||
|
|
||||||
|
OldAdjust = SlopeCurr_Adjust;
|
||||||
|
B_Init_CurrSlope = 1; //初始化完成
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(OldAdjust != SlopeCurr_Adjust) //电流斜率调整值写入EE
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
i |= Memory_Write(C_EEAddr_CheckAA,0xAA);
|
||||||
|
i |= Memory_Write(C_EEAddr_Check55,0x55);
|
||||||
|
i |= Memory_Write(C_EEAddr_DataP,SlopeCurr_Adjust);
|
||||||
|
i |= Memory_Write(C_EEAddr_DataI,(unsigned)~SlopeCurr_Adjust);
|
||||||
|
|
||||||
|
if(0 == i)
|
||||||
|
{ //写入EE成功
|
||||||
|
OldAdjust = SlopeCurr_Adjust; //更新电流斜率调整值旧值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(SlopeCurr_Adjust & 0x80) //电流斜率调整
|
||||||
|
{
|
||||||
|
SlopeCurr = SlopeCurr_Set + (((unsigned int)SlopeCurr_Adjust & 0x7F) << 4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SlopeCurr = SlopeCurr_Set - (((unsigned int)0x80 - SlopeCurr_Adjust) << 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
if(B_Test_SlopeCurr) //电流斜率测试
|
||||||
|
{
|
||||||
|
SlopeCurr = SlopeCurr_Test; //测试电流斜率
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Set_PPGPower
|
||||||
|
* 函数功能:PPG功率设置
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Set_PPGPower()
|
||||||
|
{
|
||||||
|
static unsigned char Cnt_AddPPG,Cnt_SubPPG;
|
||||||
|
static unsigned int Delay_LosePan;
|
||||||
|
static bit B_PPGStop1,B_PPGStop2;
|
||||||
|
|
||||||
|
volatile unsigned int realpower,setpower;
|
||||||
|
volatile unsigned int data;
|
||||||
|
volatile unsigned char i,j,x,y;
|
||||||
|
/*********************************************************************/
|
||||||
|
if(!B_CurrAdc_Fst || !B_PPG_En)
|
||||||
|
{ //电流AD初值检测未完成、未使能PPG输出
|
||||||
|
B_PPG_On = 0; //PPG停止
|
||||||
|
B_PPG_Out = 0; //PPG输出关闭
|
||||||
|
|
||||||
|
B_PPGStop1 = 1; //PPG停止
|
||||||
|
B_PPGStop2 = 0;
|
||||||
|
|
||||||
|
Delay_CheckPan = 0; //清检锅延时时间
|
||||||
|
}
|
||||||
|
else if(B_PPGStop_CheckPan || B_PPGStop_NoCheck)
|
||||||
|
{
|
||||||
|
B_PPG_On = 0; //PPG停止
|
||||||
|
B_PPG_Out = 0; //PPG输出关闭
|
||||||
|
|
||||||
|
B_PPGStop1 = 0;
|
||||||
|
B_PPGStop2 = 1; //PPG暂停
|
||||||
|
|
||||||
|
if(B_PPGStop_CheckPan || B_Pan_No)
|
||||||
|
{
|
||||||
|
if(Delay_CheckPan)
|
||||||
|
{ //检锅延时计时
|
||||||
|
Delay_CheckPan--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //检锅延时完成
|
||||||
|
Delay_CheckPan = C_Time_StopCheck; //PPG暂停检锅间隔时间
|
||||||
|
|
||||||
|
B_Pan_Check = 1; //检锅
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Delay_CheckPan = 0; //清检锅延时时间
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!B_Pan_Have || B_PPGStop1 || B_PPGStop2)
|
||||||
|
{
|
||||||
|
B_PPG_Out = 0; //PPG输出关闭
|
||||||
|
|
||||||
|
if(!Delay_CheckPan || B_PPGStop2)
|
||||||
|
{ //检锅延时完成
|
||||||
|
Delay_CheckPan = C_Time_CheckPan; //正常工作检锅间隔时间
|
||||||
|
|
||||||
|
B_Pan_Check = 1; //检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //检锅延时计时
|
||||||
|
Delay_CheckPan--;
|
||||||
|
}
|
||||||
|
|
||||||
|
B_PPGStop1 = B_PPGStop2 = 0;
|
||||||
|
}
|
||||||
|
else if(B_Pan_Check)
|
||||||
|
{
|
||||||
|
B_PPG_Out = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Delay_CheckPan = 0; //清检锅延时时间
|
||||||
|
|
||||||
|
if(!B_PPG_Out)
|
||||||
|
{
|
||||||
|
B_PPG_Out = 1; //PPG输出
|
||||||
|
|
||||||
|
B_PPGTMR_WriteLock = 1; //写上锁
|
||||||
|
if(B_Vol_Low)
|
||||||
|
{
|
||||||
|
if(B_Pan_Iron)
|
||||||
|
{
|
||||||
|
Buf_PPGTMR = C_PPGFirst_VL_Iron;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Buf_PPGTMR = C_PPGFirst_VL_Steel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(B_Pan_Iron)
|
||||||
|
{
|
||||||
|
Buf_PPGTMR = C_PPGFirst_Iron;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Buf_PPGTMR = C_PPGFirst_Steel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
B_PPGTMR_WriteLock = 0; //写解锁
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
B_PPG_On = 1; //PPG开启
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(!B_PPG_Out)
|
||||||
|
{ //PPG输出关闭
|
||||||
|
B_CurrAdc_Once = 0;
|
||||||
|
CurrentReal = PowerReal = 0;
|
||||||
|
|
||||||
|
B_Pan_LoseDly = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/*********************************************************************/
|
||||||
|
//实际功率计算
|
||||||
|
//斜率放大了256^2倍,运算结果取中间2字节相当于实际电流放大了256倍
|
||||||
|
CurrentReal = ((unsigned long)SlopeCurr * AD_Current) >> 8;
|
||||||
|
i = SlopeCurr >> 8;
|
||||||
|
|
||||||
|
if(B_Vol_Low)
|
||||||
|
{ //低压区间的实际功率计算
|
||||||
|
PowerReal = ((unsigned long)C_Vol_Low * CurrentReal) >> 8;
|
||||||
|
realpower = ((unsigned long)C_Vol_Low * (CurrentReal + i)) >> 8;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PowerReal = (((unsigned long)Vol.all + (C_Vol_Comp << 8)) * CurrentReal) >> 16;
|
||||||
|
realpower = (((unsigned long)Vol.all + (C_Vol_Comp << 8)) * (CurrentReal + i)) >> 16;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
//设定功率计算
|
||||||
|
PowerSet = (unsigned int)PowerWork * C_Mult_Power; //其他区间的设定功率值计算
|
||||||
|
|
||||||
|
if(B_Vol_Low)
|
||||||
|
{ //低压区间的设定功率值计算
|
||||||
|
PowerSet = Buf_Power_CurrerConst;
|
||||||
|
}
|
||||||
|
else if(B_Vol_Mid)
|
||||||
|
{ //低中压区间的设定功率值计算
|
||||||
|
if(Vol.flo.integer < (C_Vol_Low - C_Vol_Comp))
|
||||||
|
{
|
||||||
|
PowerSet = Buf_Power_CurrerConst;
|
||||||
|
}
|
||||||
|
else if(Vol.flo.integer <= (C_Vol_Mid - C_Vol_Comp))
|
||||||
|
{ //线性下降功率,相同档位下,不同的电压采用不同的功率
|
||||||
|
if(PowerSet > Buf_Power_CurrerConst)
|
||||||
|
{
|
||||||
|
data = PowerSet - Buf_Power_CurrerConst;
|
||||||
|
data = (unsigned long)data * 256 / (C_Vol_Mid - C_Vol_Low);
|
||||||
|
data = ((unsigned long)data * (unsigned char)(C_Vol_Mid - C_Vol_Comp - Vol.flo.integer)) >> 8;
|
||||||
|
|
||||||
|
PowerSet -= data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*********************************************************************/
|
||||||
|
if(!B_Pan_LoseDly)
|
||||||
|
{ //电流丢锅检测延时未完成
|
||||||
|
B_CurrAdc_Once = 0;
|
||||||
|
}
|
||||||
|
#ifdef _TEST_PPGOUT_ //PPG输出测试
|
||||||
|
else if(1)
|
||||||
|
{
|
||||||
|
B_CurrAdc_Once = 0;
|
||||||
|
|
||||||
|
B_PPGTMR_WriteLock = 1; //写上锁
|
||||||
|
Buf_PPGTMR = _TEST_PPGOUT_;
|
||||||
|
B_PPGTMR_WriteLock = 0; //写解锁
|
||||||
|
}
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
else if(B_Test_PPGOut && PPGTMR_TestPPG)
|
||||||
|
{
|
||||||
|
B_CurrAdc_Once = 0;
|
||||||
|
|
||||||
|
B_PPGTMR_WriteLock = 1; //写上锁
|
||||||
|
Buf_PPGTMR = PPGTMR_TestPPG;
|
||||||
|
B_PPGTMR_WriteLock = 0; //写解锁
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
//调整功率:根据实际功率和设定功率,输出PPG
|
||||||
|
else if(B_CurrAdc_Once)
|
||||||
|
{
|
||||||
|
B_CurrAdc_Once = 0; //工作电流ADC完成一次,调整一次功率
|
||||||
|
|
||||||
|
B_PPGTMR_ReadLock = 1; //读上锁
|
||||||
|
Value_PPGTMR = Buf_PPGTMR; //读取当前PPGTMR值
|
||||||
|
B_PPGTMR_ReadLock = 0; //读解锁
|
||||||
|
|
||||||
|
B_PPGTMR_Adjust = 1; //PPGTMR调整
|
||||||
|
|
||||||
|
if((PowerReal < PowerSet) && (realpower < PowerSet))
|
||||||
|
{ //实际功率比设定功率小,增加PPG
|
||||||
|
Cnt_SubPPG = 0;
|
||||||
|
|
||||||
|
data = PowerSet - PowerReal; //获得功率差值
|
||||||
|
x = data;
|
||||||
|
y = data >> 8;
|
||||||
|
|
||||||
|
if(0 == y)
|
||||||
|
{
|
||||||
|
{i = 2; j = 1;} //功率差值<8W
|
||||||
|
if(x & 0x08) {i = 2; j = 1;} //功率差值>=8W
|
||||||
|
if(x & 0x10) {i = 2; j = 2;} //功率差值>=16W
|
||||||
|
if(x & 0x20) {i = 1; j = 3;} //功率差值>=32W
|
||||||
|
if(x & 0x40) {i = 1; j = 4;} //功率差值>=64W
|
||||||
|
if(x & 0x80) {i = 1; j = 5;} //功率差值>=128W
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //功率差值>=256W
|
||||||
|
i = 0; j = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(B_Protect_BackPress)
|
||||||
|
{ //过压保护
|
||||||
|
Cnt_AddPPG = 0;
|
||||||
|
}
|
||||||
|
else if(++Cnt_AddPPG >= i)
|
||||||
|
{
|
||||||
|
Cnt_AddPPG = 0;
|
||||||
|
Value_PPGTMR += j; //PPG增加
|
||||||
|
|
||||||
|
if(B_Pan_Iron) data = Buf_PPGMax_Iron;
|
||||||
|
else if(B_Pan_Steel) data = Buf_PPGMax_Steel;
|
||||||
|
else data = Buf_PPGMax;
|
||||||
|
|
||||||
|
if(Value_PPGTMR > data) //判断是否已达到设定最大值
|
||||||
|
{
|
||||||
|
Value_PPGTMR = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if((PowerReal > PowerSet) && (realpower > PowerSet))
|
||||||
|
{ //实际功率比设定功率大,减小PPG
|
||||||
|
Cnt_AddPPG = 0;
|
||||||
|
|
||||||
|
data = realpower - PowerSet; //获得功率差值
|
||||||
|
x = data;
|
||||||
|
y = data >> 8;
|
||||||
|
|
||||||
|
if(0 == y)
|
||||||
|
{
|
||||||
|
{i = 4; j = 1;} //功率差值<8W
|
||||||
|
if(x & 0x08) {i = 4; j = 1;} //功率差值>=8W
|
||||||
|
if(x & 0x10) {i = 4; j = 2;} //功率差值>=16W
|
||||||
|
if(x & 0x20) {i = 2; j = 3;} //功率差值>=32W
|
||||||
|
if(x & 0x40) {i = 1; j = 16;} //功率差值>=64W
|
||||||
|
if(x & 0x80) {i = 0; j = 32;} //功率差值>=128W
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //功率差值>=256W
|
||||||
|
i = 0; j = 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(++Cnt_SubPPG >= i)
|
||||||
|
{
|
||||||
|
Cnt_SubPPG = 0;
|
||||||
|
Value_PPGTMR -= j; //PPG减小
|
||||||
|
|
||||||
|
data = Buf_PPGMin;
|
||||||
|
|
||||||
|
if(Value_PPGTMR < data) //判断是否已达到设定最小值
|
||||||
|
{
|
||||||
|
Value_PPGTMR = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //实际功率跟设定功率相等
|
||||||
|
Cnt_AddPPG = 0;
|
||||||
|
Cnt_SubPPG = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(B_PPGTMR_Adjust)
|
||||||
|
{
|
||||||
|
B_PPGTMR_Adjust = 0;
|
||||||
|
|
||||||
|
B_PPGTMR_WriteLock = 1; //写上锁
|
||||||
|
Buf_PPGTMR = Value_PPGTMR; //写回当前PPGTMR值
|
||||||
|
B_PPGTMR_WriteLock = 0; //写解锁
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*********************************************************************/
|
||||||
|
//电流丢锅判断:
|
||||||
|
if(!B_Pan_LoseDly) //开启PPG延时一定时间,才检测丢锅
|
||||||
|
{
|
||||||
|
if(B_Vol_Low)
|
||||||
|
{
|
||||||
|
if(B_Pan_Iron)
|
||||||
|
{
|
||||||
|
data = C_PPGStart_VL_Iron;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = C_PPGStart_VL_Steel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(B_Pan_Iron)
|
||||||
|
{
|
||||||
|
data = C_PPGStart_Iron;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = C_PPGStart_Steel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
B_PPGTMR_ReadLock = 1; //读上锁
|
||||||
|
Value_PPGTMR = Buf_PPGTMR; //读取当前PPGTMR值
|
||||||
|
B_PPGTMR_ReadLock = 0; //读解锁
|
||||||
|
|
||||||
|
if(Value_PPGTMR < data) //功率爬升
|
||||||
|
{
|
||||||
|
B_PPGTMR_WriteLock = 1; //写上锁
|
||||||
|
Buf_PPGTMR += 4;
|
||||||
|
B_PPGTMR_WriteLock = 0; //写解锁
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Pan_LoseDly = 1; //延时完成
|
||||||
|
Delay_LosePan = 1500/C_TimeMS_Main; //1.5s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
else if(B_LosePanCheck_Dis) //禁止电流丢锅检测
|
||||||
|
{
|
||||||
|
Delay_LosePan = 1000/C_TimeMS_Main; //1s
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
{ //开始判断
|
||||||
|
if(!B_Vol_Mid)
|
||||||
|
{ //其他区间,电流丢锅值计算
|
||||||
|
setpower = Buf_PowerLose_VHigh; //非低压电流丢锅判断功率
|
||||||
|
i = C_Vol_High;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ //低压\低中压区间,电流丢锅值计算
|
||||||
|
setpower = Buf_PowerLose_VLow; //低压电流丢锅判断功率
|
||||||
|
i = C_Vol_Low;
|
||||||
|
}
|
||||||
|
realpower = ((unsigned long)i * CurrentReal) >> 8;
|
||||||
|
|
||||||
|
if(setpower > realpower)
|
||||||
|
{
|
||||||
|
if(Delay_LosePan)
|
||||||
|
{
|
||||||
|
Delay_LosePan--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Pan_LoseDly = 0;
|
||||||
|
|
||||||
|
B_Pan_No = 1; //无锅状态
|
||||||
|
B_Pan_Have = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(Delay_LosePan > 500/C_TimeMS_Main)
|
||||||
|
{
|
||||||
|
Delay_LosePan--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Delay_LosePan = 500/C_TimeMS_Main; //500ms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Set_PPGWork
|
||||||
|
* 函数功能:PPG工作设置
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Set_PPGWork()
|
||||||
|
{
|
||||||
|
__CMS_Plus_PPG(); //PPG增强处理
|
||||||
|
|
||||||
|
Igbt_Protect(); //IGBT硬件保护
|
||||||
|
Set_SlopeCurr(); //电流斜率设置
|
||||||
|
Set_PPGPower(); //PPG功率设置
|
||||||
|
|
||||||
|
Calc_Electric(); //计算工作电量
|
||||||
|
}
|
||||||
|
|
||||||
359
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_Global.h
Normal file
359
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_Global.h
Normal file
@@ -0,0 +1,359 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _SETUP_GLOBAL_H_
|
||||||
|
#define _SETUP_GLOBAL_H_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 硬件配置 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//配置内容:测温NTC上下拉
|
||||||
|
//配置说明:1 = IGBT测温NTC为上拉,0 = 下拉
|
||||||
|
#define _UP_NTC_IGBT_ 0
|
||||||
|
//配置说明:1 = 锅底测温NTC为上拉,0 = 下拉
|
||||||
|
#define _UP_NTC_PAN_ 1
|
||||||
|
//配置说明:1 = 顶部测温NTC为上拉,0 = 下拉
|
||||||
|
#define _UP_NTC_TOP_ 0
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 软件配置 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//配置内容:工作模式
|
||||||
|
//配置说明:1 = 调试模式,0 = 非调试模式
|
||||||
|
#define _MODE_IHDEBUG_ 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//配置内容:通信模式
|
||||||
|
//配置说明:00 = 系统自动识别
|
||||||
|
// 01 = 强制为有通信模式
|
||||||
|
// 1x = 强制为无通信模式
|
||||||
|
#define _MODE_COMM_NO_ 0
|
||||||
|
#define _MODE_COMM_HAVE_ 1
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//配置内容:风扇输出模式
|
||||||
|
//配置说明:1 = PWM输出,0 = 普通IO输出
|
||||||
|
#define _FAN_OUT_PWM_ 0
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 市电电压 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//【市电电压对应AD值】:
|
||||||
|
|
||||||
|
//参数名称:市电电压对应AD值
|
||||||
|
//参数说明:通过上电实测获取
|
||||||
|
#define C_AD_V290 219
|
||||||
|
#define C_AD_V220 167
|
||||||
|
#define C_AD_V160 121
|
||||||
|
#define C_AD_V100 75
|
||||||
|
#define C_AD_V80 59
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//【市电电压故障】:
|
||||||
|
|
||||||
|
//参数名称:高压故障判断电压值(V)
|
||||||
|
#define C_Vol_HighErr_In 285
|
||||||
|
//参数名称:高压故障恢复电压值(V)
|
||||||
|
#define C_Vol_HighErr_Out 260
|
||||||
|
|
||||||
|
//参数名称:低压故障恢复电压值(V)
|
||||||
|
#define C_Vol_LowErr_Out 115
|
||||||
|
//参数名称:低压故障判断电压值(V)
|
||||||
|
#define C_Vol_LowErr_In 100
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//【市电电压区间】:
|
||||||
|
|
||||||
|
//参数名称:低压区间判断电压值(V)
|
||||||
|
#define C_Vol_Low 160
|
||||||
|
//参数名称:中压区间判断电压值(V)
|
||||||
|
#define C_Vol_Mid 210
|
||||||
|
//参数名称:高压区间判断电压值(V)
|
||||||
|
#define C_Vol_High 240
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//【市电电压计算】:
|
||||||
|
|
||||||
|
//参数名称:最大处理电压值(V)
|
||||||
|
#define C_Vol_Max 290
|
||||||
|
//参数名称:最小处理电压值(V)
|
||||||
|
#define C_Vol_Min 80
|
||||||
|
|
||||||
|
//参数名称:计算补偿电压值(V)
|
||||||
|
//参数说明:便于使用8bit寄存器保存电压值
|
||||||
|
#define C_Vol_Comp C_Vol_Min
|
||||||
|
|
||||||
|
//参数名称:最大处理电压AD值
|
||||||
|
#define C_AD_VolMax C_AD_V290
|
||||||
|
//参数名称:最小处理电压AD值
|
||||||
|
#define C_AD_VolMin C_AD_V80
|
||||||
|
|
||||||
|
//参数名称:电压斜率
|
||||||
|
//计算公式:256 *(最大处理电压值-最小处理电压值)/(最大处理电压AD值-最小处理电压AD值)
|
||||||
|
#define C_Slope_Volatage (unsigned int)256 * (C_Vol_Max - C_Vol_Min) / (C_AD_VolMax - C_AD_VolMin)
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 工作电流 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//计算公式:电流斜率 = 256 * 256 * 实际电流 / 检测的电流AD
|
||||||
|
//参数说明:电流斜率越大,功率越小
|
||||||
|
|
||||||
|
//参数名称:铁锅电流斜率
|
||||||
|
#define C_SlopeIron_Curr 5900
|
||||||
|
//参数名称:钢锅电流斜率
|
||||||
|
#define C_SlopeSteel_Curr 5900
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 锅具检测 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:有无锅判断值
|
||||||
|
//参数说明:>此判断值,即判断为无锅
|
||||||
|
#define C_Vaule_HaveNoPan 5
|
||||||
|
|
||||||
|
//参数名称:钢铁锅判断值
|
||||||
|
//参数说明:<=此判断值,即判断为钢锅,否则为铁锅
|
||||||
|
//实际数据:铁=215~239、钢=187~192
|
||||||
|
#define C_Vaule_SteelIron (215+192)/2
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:检锅间隔时间(实际:2秒)
|
||||||
|
#define C_Time_CheckPan 2000/C_TimeMS_Main
|
||||||
|
|
||||||
|
//参数名称:停止加热检锅间隔时间(实际:2秒)
|
||||||
|
#define C_Time_StopCheck 2000/C_TimeMS_Main
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
---------------------------------- PPG输出 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:PPG导通延时值
|
||||||
|
//取值范围:0~15
|
||||||
|
//对应关系:0=不延时,1=4~5*125ns,2=8~9*125ns,……15=64~65*125ns
|
||||||
|
#define C_PPGDly 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//取值范围:0~4095
|
||||||
|
//计算公式:PPG导通时间 = PPG导通值 / 32MHz
|
||||||
|
|
||||||
|
//参数名称:单次检锅PPG导通值
|
||||||
|
#define C_PPGSingle 192
|
||||||
|
|
||||||
|
//参数名称:铁锅点火PPG导通值
|
||||||
|
#define C_PPGFirst_Iron 250
|
||||||
|
//参数名称:钢锅点火PPG导通值
|
||||||
|
#define C_PPGFirst_Steel 250
|
||||||
|
//参数名称:低压铁锅点火PPG导通值
|
||||||
|
#define C_PPGFirst_VL_Iron 400
|
||||||
|
//参数名称:低压钢锅点火PPG导通值
|
||||||
|
#define C_PPGFirst_VL_Steel 400
|
||||||
|
|
||||||
|
//参数名称:铁锅起始PPG导通值
|
||||||
|
#define C_PPGStart_Iron 350
|
||||||
|
//参数名称:钢锅起始PPG导通值
|
||||||
|
#define C_PPGStart_Steel 280
|
||||||
|
//参数名称:低压铁锅起始PPG导通值
|
||||||
|
#define C_PPGStart_VL_Iron 550
|
||||||
|
//参数名称:低压钢锅起始PPG导通值
|
||||||
|
#define C_PPGStart_VL_Steel 550
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//取值范围:0~4095
|
||||||
|
//计算公式:PPG导通时间 = PPG导通值 / 32MHz
|
||||||
|
|
||||||
|
//参数名称:默认最大PPG导通值
|
||||||
|
#define C_PPGMax 960
|
||||||
|
//参数名称:铁锅最大PPG导通值
|
||||||
|
#define C_PPGMax_Iron 960
|
||||||
|
//参数名称:钢锅最大PPG导通值
|
||||||
|
#define C_PPGMax_Steel 780
|
||||||
|
|
||||||
|
//参数名称:最小PPG导通值
|
||||||
|
#define C_PPGMin 150
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 功率处理 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:功率处理因数
|
||||||
|
#define C_Mult_Power 10
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:恒流阶段电流(A)
|
||||||
|
#define C_Currer_Const 6.0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:低压电流丢锅判断功率(W)
|
||||||
|
#define C_PowerLose_VLow 350
|
||||||
|
//参数名称:非低压电流丢锅判断功率(W)
|
||||||
|
#define C_PowerLose_VHigh 650
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
---------------------------------- 比较器 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:电压浪涌保护设置值
|
||||||
|
//取值范围:0~24
|
||||||
|
//对应关系:1.6V~4V(共25档,每档0.1V)
|
||||||
|
#define C_Vol_VolSurge 18
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:电流浪涌保护设置值
|
||||||
|
//取值范围:0~255
|
||||||
|
//计算公式:保护电压(IO) = 设置值 * 4 / 255
|
||||||
|
#define C_Vol_CurrSurge 90
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:导通台阶保护设置值
|
||||||
|
//取值范围:0~255
|
||||||
|
//计算公式:保护电压(IO) = 设置值 * 4 / 255
|
||||||
|
#define C_Vol_OnStep 80
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:1级过压保护设置值(实际:1.22KV)
|
||||||
|
//取值范围:0~255
|
||||||
|
//计算公式:保护电压(IO) = 设置值 * 4 / 255
|
||||||
|
#define C_Vol_BackPress1 165
|
||||||
|
|
||||||
|
|
||||||
|
//参数名称:1级过压保护PPG下降步进
|
||||||
|
//取值范围:0~15
|
||||||
|
//对应关系:0=0个,1=2个,……15=30个
|
||||||
|
#define C_PPG_BackPress1 10
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:2级过压保护设置值(实际:1.3KV)
|
||||||
|
//取值范围:0~24
|
||||||
|
//对应关系:1.6V~4V(共25档,每档0.1V)
|
||||||
|
#define C_Vol_BackPress2 11
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:线盘电压判断值
|
||||||
|
//取值范围:0~19
|
||||||
|
//对应关系:0.1V~2V(共20档,每档0.1V)
|
||||||
|
#define C_Vol_CoilVol 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:过零翻转判断值(常压)
|
||||||
|
//取值范围:0~31
|
||||||
|
//对应关系:0.1V~3.2V(共32档,每档0.1V)
|
||||||
|
#define C_Vol_ZeroTurn 8
|
||||||
|
|
||||||
|
//参数名称:过零翻转判断值(高压)
|
||||||
|
//取值范围:0~31
|
||||||
|
//对应关系:0.1V~3.2V(共32档,每档0.1V)
|
||||||
|
#define C_Vol_ZeroTurn_VH 12
|
||||||
|
|
||||||
|
//参数名称:过零翻转判断值(低压)
|
||||||
|
//取值范围:0~31
|
||||||
|
//对应关系:0.1V~3.2V(共32档,每档0.1V)
|
||||||
|
#define C_Vol_ZeroTurn_VL 8
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
----------------------------------- PGA -----------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:PGA放大倍数设置值
|
||||||
|
//取值范围:0~3
|
||||||
|
//对应关系:0=8倍、1=16倍、2=32倍、3=64倍
|
||||||
|
#define C_Times_PGA 1
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 顶部NTC ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//硬件结构:100K热敏电阻 + 10K固定电阻
|
||||||
|
//软件结构:8bit-AD
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:顶部NTC开路判断温度AD值
|
||||||
|
#define C_AD_Top_OpenIn 3
|
||||||
|
//参数名称:顶部NTC开路恢复温度AD值
|
||||||
|
#define C_AD_Top_OpenOut 7
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:顶部NTC短路判断温度AD值
|
||||||
|
#define C_AD_Top_CloseIn 252
|
||||||
|
//参数名称:顶部NTC短路恢复温度AD值
|
||||||
|
#define C_AD_Top_CloseOut 248
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 锅底NTC ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//硬件结构:100K热敏电阻 + 10K固定电阻
|
||||||
|
//软件结构:8bit-AD
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:锅底开风扇判断温度AD值
|
||||||
|
#define C_AD_Pan_FanOn 73
|
||||||
|
//参数名称:锅底关风扇判断温度AD值
|
||||||
|
#define C_AD_Pan_FanOff 64
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:锅底超温判断温度AD值
|
||||||
|
#define C_AD_Pan_OverIn 224
|
||||||
|
//参数名称:锅底超温恢复温度AD值
|
||||||
|
#define C_AD_Pan_OverOut 220
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:锅底NTC开路判断温度AD值
|
||||||
|
#define C_AD_Pan_OpenIn 3
|
||||||
|
//参数名称:锅底NTC开路恢复温度AD值
|
||||||
|
#define C_AD_Pan_OpenOut 7
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:锅底NTC短路判断温度AD值
|
||||||
|
#define C_AD_Pan_CloseIn 252
|
||||||
|
//参数名称:锅底NTC短路恢复温度AD值
|
||||||
|
#define C_AD_Pan_CloseOut 248
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
-------------------------------- IGBT-NTC ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//硬件结构:100K热敏电阻 + 20K固定电阻
|
||||||
|
//软件结构:8bit-AD
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:IGBT开风扇判断温度AD值
|
||||||
|
#define C_AD_Igbt_FanOn 91
|
||||||
|
//参数名称:IGBT关风扇判断温度AD值
|
||||||
|
#define C_AD_Igbt_FanOff 80
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:IGBT超温判断温度AD值
|
||||||
|
#define C_AD_Igbt_OverIn 204
|
||||||
|
//参数名称:IGBT超温恢复温度AD值
|
||||||
|
#define C_AD_Igbt_OverOut 198
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:IGBT高温判断温度AD值
|
||||||
|
#define C_AD_Igbt_HighIn 191
|
||||||
|
//参数名称:IGBT高温恢复温度AD值
|
||||||
|
#define C_AD_Igbt_HighOut 184
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:IGBT-NTC开路判断温度AD值
|
||||||
|
#define C_AD_Igbt_OpenIn 3
|
||||||
|
//参数名称:IGBT-NTC开路恢复温度AD值
|
||||||
|
#define C_AD_Igbt_OpenOut 7
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:IGBT-NTC短路判断温度AD值
|
||||||
|
#define C_AD_Igbt_CloseIn 252
|
||||||
|
//参数名称:IGBT-NTC短路恢复温度AD值
|
||||||
|
#define C_AD_Igbt_CloseOut 248
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
-------------------------------- 系统时间 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:中断时间(us)
|
||||||
|
#define C_TimeUS_Int 50
|
||||||
|
//参数名称:主循环时间(ms)
|
||||||
|
#define C_TimeMS_Main 5
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- EE地址 ----------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:电流斜率调节值EE寄存地址
|
||||||
|
//取值范围:0~127
|
||||||
|
#define C_EEAddr_CheckAA 100
|
||||||
|
#define C_EEAddr_DataP 101
|
||||||
|
#define C_EEAddr_DataI 102
|
||||||
|
#define C_EEAddr_Check55 103
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 测试设置 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//测试内容:检锅
|
||||||
|
//设置说明:有定义 = 检锅测试,无定义 = 正常检锅
|
||||||
|
//#define _TEST_PANCHECK_
|
||||||
|
|
||||||
|
//测试内容:PPG输出
|
||||||
|
//设置说明:有定义 = PPG测试输出,无定义 = PPG正常输出
|
||||||
|
//#define _TEST_PPGOUT_ 500
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//测试内容:比较器结果
|
||||||
|
//设置说明:有定义 = IO输出比较器结果,无定义 = IO正常输出
|
||||||
|
// 测试输出口只能选择RA0或RB7,由config中的“CMPOUT_SEL”决定
|
||||||
|
//#define _TEST_CMPOUT_ 0xA0 //比较器测试输出口(RA0)
|
||||||
|
//#define _TEST_CMPOUT_ 0xB7 //比较器测试输出口(RB7)
|
||||||
|
|
||||||
|
//参数名称:被测试比较器通道
|
||||||
|
//取值范围:0~7
|
||||||
|
#define C_CMOUTEN_Num 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//测试内容:PGA放大结果
|
||||||
|
//设置说明:有定义 = IO输出PGA放大结果,无定义 = IO正常输出
|
||||||
|
// 测试输出口只能选择RC0
|
||||||
|
//#define _TEST_PGAOUT_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
221
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_IO.c
Normal file
221
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_IO.c
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IO¿ÚÉÏÀÉèÖÃ
|
||||||
|
**************************************************************************/
|
||||||
|
#if !_MODE_COMM_NO_
|
||||||
|
unsigned char SetWPUX_CommHave(unsigned char x)
|
||||||
|
{
|
||||||
|
volatile unsigned char i = 0;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _pIGBT_OVUV
|
||||||
|
if(x == (_pIGBT_OVUV >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pIGBT_OVUV);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _pCOMM_IN
|
||||||
|
if(x == (_pCOMM_IN >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pCOMM_IN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/*************************************************************************/
|
||||||
|
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
|
||||||
|
unsigned char SetWPUX_CommNo(unsigned char x)
|
||||||
|
{
|
||||||
|
volatile unsigned char i = 0;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _pIGBT_OVUV
|
||||||
|
if(x == (_pIGBT_OVUV >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pIGBT_OVUV);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IO¿Ú·½ÏòÉèÖÃ
|
||||||
|
**************************************************************************/
|
||||||
|
#if !_MODE_COMM_NO_
|
||||||
|
unsigned char SetTRISX_CommHave(unsigned char x)
|
||||||
|
{
|
||||||
|
volatile unsigned char i = 0;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _pBUZZ
|
||||||
|
if(x == (_pBUZZ >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pBUZZ);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _pFAN
|
||||||
|
if(x == (_pFAN >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pFAN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _pIGBT_SUP
|
||||||
|
if(x == (_pIGBT_SUP >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pIGBT_SUP);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef _pCOMM_OUT
|
||||||
|
if(x == (_pCOMM_OUT >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pCOMM_OUT);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _TEST_CMPOUT_
|
||||||
|
#if _TEST_CMPOUT_ == _Pin_CMPOUT1
|
||||||
|
if(x == (_Pin_CMPOUT1 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT1);
|
||||||
|
}
|
||||||
|
#elif _TEST_CMPOUT_ == _Pin_CMPOUT2
|
||||||
|
if(x == (_Pin_CMPOUT2 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT2);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
if(B_Test_CM_RA0)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_CMPOUT1 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(B_Test_CM_RB7)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_CMPOUT2 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _TEST_PGAOUT_
|
||||||
|
if(x == (_Pin_PGAOUT >> 4))
|
||||||
|
{
|
||||||
|
i &= ~(1 << (unsigned)(0xF & _Pin_PGAOUT));
|
||||||
|
}
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
if(B_Test_PGA)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_PGAOUT >> 4))
|
||||||
|
{
|
||||||
|
i &= ~(1 << (unsigned)(0xF & _Pin_PGAOUT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
return (unsigned)~i;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/*************************************************************************/
|
||||||
|
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
|
||||||
|
unsigned char SetTRISX_CommNo(unsigned char x)
|
||||||
|
{
|
||||||
|
volatile unsigned char i = 0;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _pBUZZ
|
||||||
|
if(x == (_pBUZZ >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pBUZZ);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _pFAN
|
||||||
|
if(x == (_pFAN >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pFAN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _pIGBT_SUP
|
||||||
|
if(x == (_pIGBT_SUP >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pIGBT_SUP);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef _pSDA
|
||||||
|
if(x == (_pSDA >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pSDA);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef _pSCK
|
||||||
|
if(x == (_pSCK >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pSCK);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef _pSTB
|
||||||
|
if(x == (_pSTB >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _pSTB);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#ifdef _TEST_CMPOUT_
|
||||||
|
#if _TEST_CMPOUT_ == _Pin_CMPOUT1
|
||||||
|
if(x == (_Pin_CMPOUT1 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT1);
|
||||||
|
}
|
||||||
|
#elif _TEST_CMPOUT_ == _Pin_CMPOUT2
|
||||||
|
if(x == (_Pin_CMPOUT2 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT2);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
if(B_Test_CM_RA0)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_CMPOUT1 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(B_Test_CM_RB7)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_CMPOUT2 >> 4))
|
||||||
|
{
|
||||||
|
i |= 1 << (unsigned)(0xF & _Pin_CMPOUT2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _TEST_PGAOUT_
|
||||||
|
if(x == (_Pin_PGAOUT >> 4))
|
||||||
|
{
|
||||||
|
i &= ~(1 << (unsigned)(0xF & _Pin_PGAOUT));
|
||||||
|
}
|
||||||
|
#elif _MODE_IHDEBUG_
|
||||||
|
if(B_Test_PGA)
|
||||||
|
{
|
||||||
|
if(x == (_Pin_PGAOUT >> 4))
|
||||||
|
{
|
||||||
|
i &= ~(1 << (unsigned)(0xF & _Pin_PGAOUT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
return (unsigned)~i;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
514
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_IO.h
Normal file
514
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Setup_IO.h
Normal file
@@ -0,0 +1,514 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _SETUP_IO_H_
|
||||||
|
#define _SETUP_IO_H_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
-------------------------------- IO口配置 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//配置内容:IO脚位排序
|
||||||
|
//配置说明:有定义 = 该型号对应IO脚位排序
|
||||||
|
#define _IO_CMS79F5335 //CMS79F5335脚位
|
||||||
|
//#define _IO_CMS79F5365 //CMS79F5365脚位
|
||||||
|
//=========================================================================
|
||||||
|
//配置内容:功能对应IO脚位
|
||||||
|
//配置说明:无相应功能,可直接屏蔽或者删除
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define _pBUZZ _Pin7 //蜂鸣器控制口
|
||||||
|
#define _pFAN _Pin7 //风扇控制口
|
||||||
|
|
||||||
|
//#define _pAD_TOP _Pin //顶部测温ADC口
|
||||||
|
#define _pAD_PAN _Pin8 //锅底测温ADC口
|
||||||
|
#define _pAD_IGBT _Pin12 //IGBT测温ADC口
|
||||||
|
#define _pAD_VOL _Pin11 //电压ADC口
|
||||||
|
|
||||||
|
#define _pCON1 _Pin15 //CON1口
|
||||||
|
#define _pCON2 _Pin14 //CON2口
|
||||||
|
#define _pCON3 _Pin13 //CON3口
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define _pCOMM_IN _pCON2 //通信输入口(有通信)
|
||||||
|
#define _pCOMM_OUT _pCON3 //通信输出口(有通信)
|
||||||
|
|
||||||
|
#define _pSDA _pCON1 //驱动SDA口(无通信)
|
||||||
|
#define _pSCK _pCON2 //驱动SCK口(无通信)
|
||||||
|
#define _pSTB _pCON3 //驱动STB口(无通信)
|
||||||
|
//=========================================================================
|
||||||
|
//配置内容:上电初始化IO电平
|
||||||
|
//配置说明:0 = 低电平,1 = 高电平
|
||||||
|
#define C_Init_PORTA 0B00000000
|
||||||
|
#define C_Init_PORTB 0B00000000
|
||||||
|
#define C_Init_PORTC 0B00000000
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
-------------------------------- AD通道配置 -------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//配置内容:工作电流ADC通道
|
||||||
|
//配置说明:通道27 = 有RC滤波、通道28 = 无RC滤波
|
||||||
|
#define C_AdcChannel_Curr 28
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 芯片测试脚位
|
||||||
|
**************************************************************************/
|
||||||
|
#define _Pin_CMPOUT1 0xA0 //比较器测试输出口1
|
||||||
|
#define _Pin_CMPOUT2 0xB7 //比较器测试输出口2
|
||||||
|
#define _Pin_PGAOUT 0xC0 //PGA测试输出口
|
||||||
|
/**************************************************************************
|
||||||
|
* 芯片专用脚位
|
||||||
|
**************************************************************************/
|
||||||
|
#define _pIGBT_SUP 0xB1 //IGBT辅助驱动口
|
||||||
|
#define _pIGBT_OVUV 0xB2 //IGBT驱动过欠压检测口
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* CMS79F5335脚位(16pin)
|
||||||
|
**************************************************************************/
|
||||||
|
#ifdef _IO_CMS79F5335
|
||||||
|
//#define _Pin1 VCC //Pin1
|
||||||
|
//#define _Pin2 VIN //Pin2
|
||||||
|
//#define _Pin3 GND //Pin3
|
||||||
|
//#define _Pin4 VDD //Pin4
|
||||||
|
#define _Pin5 0xA7 //Pin5
|
||||||
|
#define _Pin6 0xA5 //Pin6
|
||||||
|
#define _Pin7 0xC0 //Pin7
|
||||||
|
#define _Pin8 0xA4 //Pin8
|
||||||
|
#define _Pin9 0xA3 //Pin9
|
||||||
|
#define _Pin10 0xA2 //Pin10
|
||||||
|
#define _Pin11 0xA1 //Pin11
|
||||||
|
#define _Pin12 0xB7 //Pin12
|
||||||
|
#define _Pin13 0xB6 //Pin13
|
||||||
|
#define _Pin14 0xB4 //Pin14
|
||||||
|
#define _Pin15 0xB3 //Pin15
|
||||||
|
//#define _Pin16 PPG //Pin16
|
||||||
|
#endif
|
||||||
|
/**************************************************************************
|
||||||
|
* CMS79F5365脚位(20pin)
|
||||||
|
**************************************************************************/
|
||||||
|
#ifdef _IO_CMS79F5365
|
||||||
|
//#define _Pin1 VCC //Pin1
|
||||||
|
//#define _Pin2 VIN //Pin2
|
||||||
|
//#define _Pin3 GND //Pin3
|
||||||
|
//#define _Pin4 VDD //Pin4
|
||||||
|
#define _Pin5 0xC2 //Pin5
|
||||||
|
#define _Pin6 0xC1 //Pin6
|
||||||
|
#define _Pin7 0xA7 //Pin7
|
||||||
|
#define _Pin8 0xA5 //Pin8
|
||||||
|
#define _Pin9 0xC0 //Pin9
|
||||||
|
#define _Pin10 0xA4 //Pin10
|
||||||
|
#define _Pin11 0xA3 //Pin11
|
||||||
|
#define _Pin12 0xA2 //Pin12
|
||||||
|
#define _Pin13 0xA1 //Pin13
|
||||||
|
#define _Pin14 0xA0 //Pin14
|
||||||
|
#define _Pin15 0xB7 //Pin15
|
||||||
|
#define _Pin16 0xB6 //Pin16
|
||||||
|
#define _Pin17 0xB5 //Pin17
|
||||||
|
#define _Pin18 0xB4 //Pin18
|
||||||
|
#define _Pin19 0xB3 //Pin19
|
||||||
|
//#define _Pin20 PPG //Pin20
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* IO口定义
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _pIGBT_SUP
|
||||||
|
ExteralPin(PORTC,7,Pin_Igbt_Sup);
|
||||||
|
#elif (_pIGBT_SUP>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
|
||||||
|
#elif (_pIGBT_SUP>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
|
||||||
|
#elif (_pIGBT_SUP>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_Igbt_Sup);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pIGBT_OVUV
|
||||||
|
ExteralPin(PORTC,7,Pin_Igbt_OVUV);
|
||||||
|
#elif (_pIGBT_OVUV>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
|
||||||
|
#elif (_pIGBT_OVUV>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
|
||||||
|
#elif (_pIGBT_OVUV>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_Igbt_OVUV);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pBUZZ
|
||||||
|
ExteralPin(PORTC,7,Pin_Buzz);
|
||||||
|
#elif (_pBUZZ>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pBUZZ&0xF),Pin_Buzz);
|
||||||
|
#elif (_pBUZZ>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pBUZZ&0xF),Pin_Buzz);
|
||||||
|
#elif (_pBUZZ>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pBUZZ&0xF),Pin_Buzz);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_Buzz);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pFAN
|
||||||
|
ExteralPin(PORTC,7,Pin_Fan);
|
||||||
|
#elif (_pFAN>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pFAN&0xF),Pin_Fan);
|
||||||
|
#elif (_pFAN>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pFAN&0xF),Pin_Fan);
|
||||||
|
#elif (_pFAN>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pFAN&0xF),Pin_Fan);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_Fan);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pCOMM_IN
|
||||||
|
ExteralPin(PORTC,7,Pin_CommIn);
|
||||||
|
#elif (_pCOMM_IN>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pCOMM_IN&0xF),Pin_CommIn);
|
||||||
|
#elif (_pCOMM_IN>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pCOMM_IN&0xF),Pin_CommIn);
|
||||||
|
#elif (_pCOMM_IN>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pCOMM_IN&0xF),Pin_CommIn);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_CommIn);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pCOMM_OUT
|
||||||
|
ExteralPin(PORTC,7,Pin_CommOut);
|
||||||
|
#elif (_pCOMM_OUT>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pCOMM_OUT&0xF),Pin_CommOut);
|
||||||
|
#elif (_pCOMM_OUT>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pCOMM_OUT&0xF),Pin_CommOut);
|
||||||
|
#elif (_pCOMM_OUT>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pCOMM_OUT&0xF),Pin_CommOut);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_CommOut);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pSDA
|
||||||
|
ExteralPin(PORTC,7,Pin_SDA);
|
||||||
|
ExteralPin(TRISC,7,Io_SDA);
|
||||||
|
#elif (_pSDA>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pSDA&0xF),Pin_SDA);
|
||||||
|
ExteralPin(TRISA,(_pSDA&0xF),Io_SDA);
|
||||||
|
#elif (_pSDA>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pSDA&0xF),Pin_SDA);
|
||||||
|
ExteralPin(TRISB,(_pSDA&0xF),Io_SDA);
|
||||||
|
#elif (_pSDA>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pSDA&0xF),Pin_SDA);
|
||||||
|
ExteralPin(TRISC,(_pSDA&0xF),Io_SDA);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_SDA);
|
||||||
|
ExteralPin(TRISC,7,Io_SDA);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pSCK
|
||||||
|
ExteralPin(PORTC,7,Pin_SCK);
|
||||||
|
#elif (_pSCK>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pSCK&0xF),Pin_SCK);
|
||||||
|
#elif (_pSCK>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pSCK&0xF),Pin_SCK);
|
||||||
|
#elif (_pSCK>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pSCK&0xF),Pin_SCK);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_SCK);
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pSTB
|
||||||
|
ExteralPin(PORTC,7,Pin_STB);
|
||||||
|
#elif (_pSTB>>4)==0xA
|
||||||
|
ExteralPin(PORTA,(_pSTB&0xF),Pin_STB);
|
||||||
|
#elif (_pSTB>>4)==0xB
|
||||||
|
ExteralPin(PORTB,(_pSTB&0xF),Pin_STB);
|
||||||
|
#elif (_pSTB>>4)==0xC
|
||||||
|
ExteralPin(PORTC,(_pSTB&0xF),Pin_STB);
|
||||||
|
#else
|
||||||
|
ExteralPin(PORTC,7,Pin_STB);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* PWM通道定义
|
||||||
|
**************************************************************************/
|
||||||
|
#if _pBUZZ==0xA0
|
||||||
|
#define C_PwmChannel_Buzz 0x0A
|
||||||
|
#elif _pBUZZ==0xB5
|
||||||
|
#define C_PwmChannel_Buzz 0x0B
|
||||||
|
#elif _pBUZZ==0xB2
|
||||||
|
#define C_PwmChannel_Buzz 0x0C
|
||||||
|
#elif _pBUZZ==0xC2
|
||||||
|
#define C_PwmChannel_Buzz 0x0D
|
||||||
|
|
||||||
|
#elif _pBUZZ==0xB7
|
||||||
|
#define C_PwmChannel_Buzz 0x1A
|
||||||
|
#elif _pBUZZ==0xB4
|
||||||
|
#define C_PwmChannel_Buzz 0x1B
|
||||||
|
#elif _pBUZZ==0xB1
|
||||||
|
#define C_PwmChannel_Buzz 0x1C
|
||||||
|
#elif _pBUZZ==0xC1
|
||||||
|
#define C_PwmChannel_Buzz 0x1D
|
||||||
|
|
||||||
|
#elif _pBUZZ==0xB6
|
||||||
|
#define C_PwmChannel_Buzz 0x2A
|
||||||
|
#elif _pBUZZ==0xB3
|
||||||
|
#define C_PwmChannel_Buzz 0x2B
|
||||||
|
#elif _pBUZZ==0xB0
|
||||||
|
#define C_PwmChannel_Buzz 0x2C
|
||||||
|
#elif _pBUZZ==0xC0
|
||||||
|
#define C_PwmChannel_Buzz 0x2D
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_PwmChannel_Buzz 0xFF
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#if !_FAN_OUT_PWM_
|
||||||
|
#define C_PwmChannel_Fan 0xFF
|
||||||
|
|
||||||
|
#elif _pFAN==0xA0
|
||||||
|
#define C_PwmChannel_Fan 0x0A
|
||||||
|
#elif _pFAN==0xB5
|
||||||
|
#define C_PwmChannel_Fan 0x0B
|
||||||
|
#elif _pFAN==0xB2
|
||||||
|
#define C_PwmChannel_Fan 0x0C
|
||||||
|
#elif _pFAN==0xC2
|
||||||
|
#define C_PwmChannel_Fan 0x0D
|
||||||
|
|
||||||
|
#elif _pFAN==0xB7
|
||||||
|
#define C_PwmChannel_Fan 0x1A
|
||||||
|
#elif _pFAN==0xB4
|
||||||
|
#define C_PwmChannel_Fan 0x1B
|
||||||
|
#elif _pFAN==0xB1
|
||||||
|
#define C_PwmChannel_Fan 0x1C
|
||||||
|
#elif _pFAN==0xC1
|
||||||
|
#define C_PwmChannel_Fan 0x1D
|
||||||
|
|
||||||
|
#elif _pFAN==0xB6
|
||||||
|
#define C_PwmChannel_Fan 0x2A
|
||||||
|
#elif _pFAN==0xB3
|
||||||
|
#define C_PwmChannel_Fan 0x2B
|
||||||
|
#elif _pFAN==0xB0
|
||||||
|
#define C_PwmChannel_Fan 0x2C
|
||||||
|
#elif _pFAN==0xC0
|
||||||
|
#define C_PwmChannel_Fan 0x2D
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_PwmChannel_Fan 0xFF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 非固定ADC通道定义
|
||||||
|
**************************************************************************/
|
||||||
|
#if _pAD_VOL==0xA0
|
||||||
|
#define C_AdcChannel_Vol 0
|
||||||
|
#elif _pAD_VOL==0xA1
|
||||||
|
#define C_AdcChannel_Vol 1
|
||||||
|
#elif _pAD_VOL==0xA2
|
||||||
|
#define C_AdcChannel_Vol 2
|
||||||
|
#elif _pAD_VOL==0xA3
|
||||||
|
#define C_AdcChannel_Vol 3
|
||||||
|
#elif _pAD_VOL==0xA4
|
||||||
|
#define C_AdcChannel_Vol 4
|
||||||
|
#elif _pAD_VOL==0xA5
|
||||||
|
#define C_AdcChannel_Vol 5
|
||||||
|
#elif _pAD_VOL==0xA6
|
||||||
|
#define C_AdcChannel_Vol 6
|
||||||
|
#elif _pAD_VOL==0xA7
|
||||||
|
#define C_AdcChannel_Vol 7
|
||||||
|
|
||||||
|
#elif _pAD_VOL==0xB0
|
||||||
|
#define C_AdcChannel_Vol 8
|
||||||
|
#elif _pAD_VOL==0xB1
|
||||||
|
#define C_AdcChannel_Vol 9
|
||||||
|
#elif _pAD_VOL==0xB2
|
||||||
|
#define C_AdcChannel_Vol 10
|
||||||
|
#elif _pAD_VOL==0xB3
|
||||||
|
#define C_AdcChannel_Vol 11
|
||||||
|
#elif _pAD_VOL==0xB4
|
||||||
|
#define C_AdcChannel_Vol 12
|
||||||
|
#elif _pAD_VOL==0xB5
|
||||||
|
#define C_AdcChannel_Vol 13
|
||||||
|
#elif _pAD_VOL==0xB6
|
||||||
|
#define C_AdcChannel_Vol 14
|
||||||
|
#elif _pAD_VOL==0xB7
|
||||||
|
#define C_AdcChannel_Vol 15
|
||||||
|
|
||||||
|
#elif _pAD_VOL==0xC0
|
||||||
|
#define C_AdcChannel_Vol 16
|
||||||
|
#elif _pAD_VOL==0xC1
|
||||||
|
#define C_AdcChannel_Vol 17
|
||||||
|
#elif _pAD_VOL==0xC2
|
||||||
|
#define C_AdcChannel_Vol 18
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_AdcChannel_Vol C_AdcChannel_VRef
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pAD_IGBT
|
||||||
|
#define C_AdcChannel_Igbt C_AdcChannel_VRef
|
||||||
|
|
||||||
|
#elif _pAD_IGBT==0xA0
|
||||||
|
#define C_AdcChannel_Igbt 0
|
||||||
|
#elif _pAD_IGBT==0xA1
|
||||||
|
#define C_AdcChannel_Igbt 1
|
||||||
|
#elif _pAD_IGBT==0xA2
|
||||||
|
#define C_AdcChannel_Igbt 2
|
||||||
|
#elif _pAD_IGBT==0xA3
|
||||||
|
#define C_AdcChannel_Igbt 3
|
||||||
|
#elif _pAD_IGBT==0xA4
|
||||||
|
#define C_AdcChannel_Igbt 4
|
||||||
|
#elif _pAD_IGBT==0xA5
|
||||||
|
#define C_AdcChannel_Igbt 5
|
||||||
|
#elif _pAD_IGBT==0xA6
|
||||||
|
#define C_AdcChannel_Igbt 6
|
||||||
|
#elif _pAD_IGBT==0xA7
|
||||||
|
#define C_AdcChannel_Igbt 7
|
||||||
|
|
||||||
|
#elif _pAD_IGBT==0xB0
|
||||||
|
#define C_AdcChannel_Igbt 8
|
||||||
|
#elif _pAD_IGBT==0xB1
|
||||||
|
#define C_AdcChannel_Igbt 9
|
||||||
|
#elif _pAD_IGBT==0xB2
|
||||||
|
#define C_AdcChannel_Igbt 10
|
||||||
|
#elif _pAD_IGBT==0xB3
|
||||||
|
#define C_AdcChannel_Igbt 11
|
||||||
|
#elif _pAD_IGBT==0xB4
|
||||||
|
#define C_AdcChannel_Igbt 12
|
||||||
|
#elif _pAD_IGBT==0xB5
|
||||||
|
#define C_AdcChannel_Igbt 13
|
||||||
|
#elif _pAD_IGBT==0xB6
|
||||||
|
#define C_AdcChannel_Igbt 14
|
||||||
|
#elif _pAD_IGBT==0xB7
|
||||||
|
#define C_AdcChannel_Igbt 15
|
||||||
|
|
||||||
|
#elif _pAD_IGBT==0xC0
|
||||||
|
#define C_AdcChannel_Igbt 16
|
||||||
|
#elif _pAD_IGBT==0xC1
|
||||||
|
#define C_AdcChannel_Igbt 17
|
||||||
|
#elif _pAD_IGBT==0xC2
|
||||||
|
#define C_AdcChannel_Igbt 18
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_AdcChannel_Igbt C_AdcChannel_VRef
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pAD_PAN
|
||||||
|
#define C_AdcChannel_Pan C_AdcChannel_VRef
|
||||||
|
|
||||||
|
#elif _pAD_PAN==0xA0
|
||||||
|
#define C_AdcChannel_Pan 0
|
||||||
|
#elif _pAD_PAN==0xA1
|
||||||
|
#define C_AdcChannel_Pan 1
|
||||||
|
#elif _pAD_PAN==0xA2
|
||||||
|
#define C_AdcChannel_Pan 2
|
||||||
|
#elif _pAD_PAN==0xA3
|
||||||
|
#define C_AdcChannel_Pan 3
|
||||||
|
#elif _pAD_PAN==0xA4
|
||||||
|
#define C_AdcChannel_Pan 4
|
||||||
|
#elif _pAD_PAN==0xA5
|
||||||
|
#define C_AdcChannel_Pan 5
|
||||||
|
#elif _pAD_PAN==0xA6
|
||||||
|
#define C_AdcChannel_Pan 6
|
||||||
|
#elif _pAD_PAN==0xA7
|
||||||
|
#define C_AdcChannel_Pan 7
|
||||||
|
|
||||||
|
#elif _pAD_PAN==0xB0
|
||||||
|
#define C_AdcChannel_Pan 8
|
||||||
|
#elif _pAD_PAN==0xB1
|
||||||
|
#define C_AdcChannel_Pan 9
|
||||||
|
#elif _pAD_PAN==0xB2
|
||||||
|
#define C_AdcChannel_Pan 10
|
||||||
|
#elif _pAD_PAN==0xB3
|
||||||
|
#define C_AdcChannel_Pan 11
|
||||||
|
#elif _pAD_PAN==0xB4
|
||||||
|
#define C_AdcChannel_Pan 12
|
||||||
|
#elif _pAD_PAN==0xB5
|
||||||
|
#define C_AdcChannel_Pan 13
|
||||||
|
#elif _pAD_PAN==0xB6
|
||||||
|
#define C_AdcChannel_Pan 14
|
||||||
|
#elif _pAD_PAN==0xB7
|
||||||
|
#define C_AdcChannel_Pan 15
|
||||||
|
|
||||||
|
#elif _pAD_PAN==0xC0
|
||||||
|
#define C_AdcChannel_Pan 16
|
||||||
|
#elif _pAD_PAN==0xC1
|
||||||
|
#define C_AdcChannel_Pan 17
|
||||||
|
#elif _pAD_PAN==0xC2
|
||||||
|
#define C_AdcChannel_Pan 18
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_AdcChannel_Pan C_AdcChannel_VRef
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#ifndef _pAD_TOP
|
||||||
|
#define C_AdcChannel_Top C_AdcChannel_VRef
|
||||||
|
|
||||||
|
#elif _pAD_TOP==0xA0
|
||||||
|
#define C_AdcChannel_Top 0
|
||||||
|
#elif _pAD_TOP==0xA1
|
||||||
|
#define C_AdcChannel_Top 1
|
||||||
|
#elif _pAD_TOP==0xA2
|
||||||
|
#define C_AdcChannel_Top 2
|
||||||
|
#elif _pAD_TOP==0xA3
|
||||||
|
#define C_AdcChannel_Top 3
|
||||||
|
#elif _pAD_TOP==0xA4
|
||||||
|
#define C_AdcChannel_Top 4
|
||||||
|
#elif _pAD_TOP==0xA5
|
||||||
|
#define C_AdcChannel_Top 5
|
||||||
|
#elif _pAD_TOP==0xA6
|
||||||
|
#define C_AdcChannel_Top 6
|
||||||
|
#elif _pAD_TOP==0xA7
|
||||||
|
#define C_AdcChannel_Top 7
|
||||||
|
|
||||||
|
#elif _pAD_TOP==0xB0
|
||||||
|
#define C_AdcChannel_Top 8
|
||||||
|
#elif _pAD_TOP==0xB1
|
||||||
|
#define C_AdcChannel_Top 9
|
||||||
|
#elif _pAD_TOP==0xB2
|
||||||
|
#define C_AdcChannel_Top 10
|
||||||
|
#elif _pAD_TOP==0xB3
|
||||||
|
#define C_AdcChannel_Top 11
|
||||||
|
#elif _pAD_TOP==0xB4
|
||||||
|
#define C_AdcChannel_Top 12
|
||||||
|
#elif _pAD_TOP==0xB5
|
||||||
|
#define C_AdcChannel_Top 13
|
||||||
|
#elif _pAD_TOP==0xB6
|
||||||
|
#define C_AdcChannel_Top 14
|
||||||
|
#elif _pAD_TOP==0xB7
|
||||||
|
#define C_AdcChannel_Top 15
|
||||||
|
|
||||||
|
#elif _pAD_TOP==0xC0
|
||||||
|
#define C_AdcChannel_Top 16
|
||||||
|
#elif _pAD_TOP==0xC1
|
||||||
|
#define C_AdcChannel_Top 17
|
||||||
|
#elif _pAD_TOP==0xC2
|
||||||
|
#define C_AdcChannel_Top 18
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define C_AdcChannel_Top C_AdcChannel_VRef
|
||||||
|
#endif
|
||||||
|
/**************************************************************************
|
||||||
|
* 固定ADC通道定义
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_AdcChannel_Gnd 29 //GND-ADC通道
|
||||||
|
#define C_AdcChannel_Vdd 30 //VDD-ADC通道
|
||||||
|
#define C_AdcChannel_VRef 31 //内部参考电压(1.2V)ADC通道
|
||||||
|
/**************************************************************************
|
||||||
|
* AD检测设置(00xxxx01)
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_AdcSet_Gnd 0x01 | (C_AdcChannel_Gnd<<2) //GND
|
||||||
|
#define C_AdcSet_Vdd 0x01 | (C_AdcChannel_Vdd<<2) //VDD
|
||||||
|
#define C_AdcSet_VRef 0x01 | (C_AdcChannel_VRef<<2) //内部参考电压
|
||||||
|
|
||||||
|
#define C_AdcSet_Curr 0x01 | (C_AdcChannel_Curr<<2) //工作电流
|
||||||
|
#define C_AdcSet_Vol 0x01 | (C_AdcChannel_Vol<<2) //市电电压
|
||||||
|
|
||||||
|
#define C_AdcSet_Igbt 0x01 | (C_AdcChannel_Igbt<<2) //IGBT-NTC
|
||||||
|
#define C_AdcSet_Pan 0x01 | (C_AdcChannel_Pan<<2) //锅底NTC
|
||||||
|
#define C_AdcSet_Top 0x01 | (C_AdcChannel_Top<<2) //顶部NTC
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 函数声明 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
unsigned char SetWPUX_CommHave(unsigned char x);
|
||||||
|
unsigned char SetWPUX_CommNo(unsigned char x);
|
||||||
|
unsigned char SetTRISX_CommHave(unsigned char x);
|
||||||
|
unsigned char SetTRISX_CommNo(unsigned char x);
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
118
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Subfunction.c
Normal file
118
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/Subfunction.c
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Delay_Xus
|
||||||
|
* 函数功能:延时处理
|
||||||
|
* 入口参数:x=延时时间
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:死循环处理,注意调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Delay_Xus(unsigned char x)
|
||||||
|
{
|
||||||
|
GIE = 0; //关闭中断
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
|
||||||
|
while(--x)
|
||||||
|
{
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
}
|
||||||
|
|
||||||
|
GIE = 1; //恢复中断
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:Delay_Xms
|
||||||
|
* 函数功能:延时处理
|
||||||
|
* 入口参数:x=延时时间
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:死循环处理,注意调用
|
||||||
|
**************************************************************************/
|
||||||
|
void Delay_Xms(unsigned int x)
|
||||||
|
{
|
||||||
|
volatile unsigned int i = 728;
|
||||||
|
|
||||||
|
GIE = 0; //关闭中断
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
|
||||||
|
while(--x)
|
||||||
|
{
|
||||||
|
while(--i);
|
||||||
|
i = 728;
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
}
|
||||||
|
|
||||||
|
GIE = 1; //恢复中断
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* 函数名称:Memory_Write
|
||||||
|
* 函数功能:写入EE数据
|
||||||
|
* 入口参数:addr=写入地址,value=写入数据
|
||||||
|
* 出口参数:EE写操作完成状态
|
||||||
|
* 备 注:无
|
||||||
|
***********************************************************************/
|
||||||
|
unsigned char Memory_Write(unsigned char addr, unsigned char value)
|
||||||
|
{
|
||||||
|
EEADR = addr; //写入地址
|
||||||
|
EEDAT = value; //写入数据
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
|
||||||
|
EECON1 = 0x10; //EE烧写时间 = 2.5ms
|
||||||
|
EEPGD = 0; //访问数据存储器
|
||||||
|
WREN = 1; //允许写周期
|
||||||
|
|
||||||
|
GIE = 0; //关闭中断
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
GIE = 0; //确保中断已关闭
|
||||||
|
|
||||||
|
EECON2 = 0x55; //给EECON2写入0x55
|
||||||
|
EECON2 = 0xAA; //给EECON2写入0xAA
|
||||||
|
|
||||||
|
WR = 1; //启动写周期
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
CLRWDT(); //清看门狗
|
||||||
|
WREN = 0; //写结束,关闭写入操作
|
||||||
|
GIE = 1; //恢复中断
|
||||||
|
|
||||||
|
if(WRERR)
|
||||||
|
{
|
||||||
|
return 0xFF; //EE写操作出错
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0; //EE写操作OK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/***********************************************************************
|
||||||
|
* 函数名称:Memory_Read
|
||||||
|
* 函数功能:读取EE数据
|
||||||
|
* 入口参数:addr=读取地址
|
||||||
|
* 出口参数:读取数据
|
||||||
|
* 备 注:无
|
||||||
|
***********************************************************************/
|
||||||
|
unsigned char Memory_Read(unsigned char addr)
|
||||||
|
{
|
||||||
|
EEADR = addr; //读取地址
|
||||||
|
|
||||||
|
EEPGD = 0; //访问数据存储器
|
||||||
|
RD = 1; //使能读信号
|
||||||
|
NOP(); //这里读取数据,必须加NOP指令
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
NOP();
|
||||||
|
return EEDAT; //读取数据
|
||||||
|
}
|
||||||
|
|
||||||
185
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__CMS_IhPlus.h
Normal file
185
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__CMS_IhPlus.h
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _CMS_IHPLUS_H_
|
||||||
|
#define _CMS_IHPLUS_H_
|
||||||
|
#pragma warning disable 752,759
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
---------------------------------- 头文件 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 函数声明 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
extern void __CMS_Plus_Interrupt();
|
||||||
|
extern void __CMS_Plus_PPG();
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
------------------------------- 连续低功率 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//参数名称:PPG导通延时值(连续低功率)
|
||||||
|
//取值范围:0~15
|
||||||
|
//对应关系:0=不延时,1=4~5*125ns,2=8~9*125ns,……15=64~65*125ns
|
||||||
|
#define C_PPGDly_LxLow 0
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:连续低功率开启功率下限阀值(实际:800W)
|
||||||
|
//参数说明:>=此阀值,才开启连续低功率功能
|
||||||
|
#define C_MinPower_LxLow 800/C_Mult_Power
|
||||||
|
/*************************************************************************/
|
||||||
|
const unsigned char ValueTime_PPGDly_LxLow = C_PPGDly_LxLow;
|
||||||
|
|
||||||
|
const unsigned char ValueMin_Power_LxLow = C_MinPower_LxLow;
|
||||||
|
/*************************************************************************/
|
||||||
|
extern volatile unsigned char Status_LxLow; //连续低功率状态
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
extern volatile unsigned char Num_LxLowOn; //连续低功率开个数
|
||||||
|
extern volatile unsigned char Num_LxLowOff; //连续低功率关个数
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- PPG抖频 ---------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
//计算公式:电流斜率 = 256 * 256 * 实际电流 / 检测的电流AD
|
||||||
|
//参数说明:电流斜率越大,功率越小
|
||||||
|
|
||||||
|
//参数名称:铁锅电流斜率(PPG抖频)
|
||||||
|
#define C_SlopeIron_Curr_PPGDP 5400
|
||||||
|
//参数名称:钢锅电流斜率(PPG抖频)
|
||||||
|
#define C_SlopeSteel_Curr_PPGDP 5400
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:PPG抖频开启PPGTMR下限阀值(实际:14us)
|
||||||
|
//参数说明:>=此阀值,才开启PPG抖频功能
|
||||||
|
#define C_MinPPGTMR_PPGDP 32*14
|
||||||
|
|
||||||
|
//参数名称:PPG抖频开启功率下限阀值(实际:1690W)
|
||||||
|
//参数说明:>=此阀值,才开启PPG抖频功能
|
||||||
|
#define C_MinPower_PPGDP 1690/C_Mult_Power
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
//参数名称:PPG抖频控制值
|
||||||
|
//参数说明:与市电频率、中断时间(ValueTime_Int)有关联
|
||||||
|
#define C_Data1_PPGDP 55 //抖频前补偿PPG值
|
||||||
|
#define C_Data2_PPGDP 4 //PPG递减步进
|
||||||
|
#define C_Data3_PPGDP 4 //PPG递加步进
|
||||||
|
#define C_Time1_PPGDP 40 //抖频开始等待时间
|
||||||
|
#define C_Time2_PPGDP 60 //PPG递减总时间
|
||||||
|
#define C_Time3_PPGDP 60 //PPG递加总时间
|
||||||
|
#define C_Time4_PPGDP 10 //PPG变化暂停时间
|
||||||
|
/*************************************************************************/
|
||||||
|
const unsigned int ValueSlopeIron_Curr_PPGDP = C_SlopeIron_Curr_PPGDP;
|
||||||
|
const unsigned int ValueSlopeSteel_Curr_PPGDP = C_SlopeSteel_Curr_PPGDP;
|
||||||
|
|
||||||
|
const unsigned int ValueMin_PPGTMR_PPGDP = C_MinPPGTMR_PPGDP;
|
||||||
|
const unsigned char ValueMin_Power_PPGDP = C_MinPower_PPGDP;
|
||||||
|
|
||||||
|
const unsigned char ValueData1_PPGDP = C_Data1_PPGDP;
|
||||||
|
const unsigned char ValueData2_PPGDP = C_Data2_PPGDP;
|
||||||
|
const unsigned char ValueData3_PPGDP = C_Data3_PPGDP;
|
||||||
|
const unsigned char ValueTime1_PPGDP = C_Time1_PPGDP;
|
||||||
|
const unsigned char ValueTime2_PPGDP = C_Time2_PPGDP;
|
||||||
|
const unsigned char ValueTime3_PPGDP = C_Time3_PPGDP;
|
||||||
|
const unsigned char ValueTime4_PPGDP = C_Time4_PPGDP;
|
||||||
|
/*************************************************************************/
|
||||||
|
extern volatile unsigned char Status_PPGDP; //PPG抖频状态
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
extern volatile bit B_PPGDP_Can; //PPG抖频强制打开
|
||||||
|
extern volatile bit B_PPGDP_Dis; //PPG抖频禁止
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 其他部分 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
const unsigned char ValuePPGSub_BackPress = 0;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
const unsigned char ValueTime_Int = C_TimeUS_Int;
|
||||||
|
const unsigned char ValueTime_Main = C_TimeMS_Main;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
const unsigned int ValueSlopeIron_Curr = C_SlopeIron_Curr;
|
||||||
|
const unsigned int ValueSlopeSteel_Curr = C_SlopeSteel_Curr;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
const unsigned char ValueTime_SteelIron = C_Vaule_SteelIron;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
const unsigned char ValueVol_CoilVol = C_Vol_CoilVol;
|
||||||
|
|
||||||
|
const unsigned char ValueVol_ZeroTurn = C_Vol_ZeroTurn;
|
||||||
|
const unsigned char ValueVol_ZeroTurn_VH = C_Vol_ZeroTurn_VH;
|
||||||
|
const unsigned char ValueVol_ZeroTurn_VL = C_Vol_ZeroTurn_VL;
|
||||||
|
/*************************************************************************/
|
||||||
|
volatile unsigned char ValueOPA_Set = 0B00000000;
|
||||||
|
|
||||||
|
#ifdef _TEST_PGAOUT_
|
||||||
|
volatile unsigned char ValuePGA_Set = 0B10000010 | ((C_Times_PGA & 0x03) << 5);
|
||||||
|
#else
|
||||||
|
volatile unsigned char ValuePGA_Set = 0B10000000 | ((C_Times_PGA & 0x03) << 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _TEST_CMPOUT_
|
||||||
|
volatile unsigned char ValueCM_Test = 0x08 | (C_CMOUTEN_Num & 0x07);
|
||||||
|
#else
|
||||||
|
volatile unsigned char ValueCM_Test = 0;
|
||||||
|
#endif
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile unsigned int ValuePPG_Single = C_PPGSingle;
|
||||||
|
volatile unsigned char ValueCnt_HaveNoPan = C_Vaule_HaveNoPan;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile unsigned char ValueTime_PPGDly = C_PPGDly;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile unsigned char ValueVol_VolSurge = C_Vol_VolSurge;
|
||||||
|
volatile unsigned char ValueVol_CurrSurge = C_Vol_CurrSurge;
|
||||||
|
volatile unsigned char ValueVol_OnStep = C_Vol_OnStep;
|
||||||
|
|
||||||
|
volatile unsigned char ValueVol_BackPress1 = C_Vol_BackPress1;
|
||||||
|
volatile unsigned char ValuePPG_BackPress1 = C_PPG_BackPress1;
|
||||||
|
volatile unsigned char ValueVol_BackPress2 = C_Vol_BackPress2;
|
||||||
|
/*************************************************************************/
|
||||||
|
volatile unsigned int Count_BackPress; //1级过压保护计数
|
||||||
|
volatile unsigned int BakCount_BackPress; //1级过压保护计数备份
|
||||||
|
|
||||||
|
volatile unsigned int Delay_CheckPan; //检锅延时时间
|
||||||
|
volatile unsigned int Time_Syn; //同步脉宽时间
|
||||||
|
volatile unsigned char Count_Syn; //同步次数
|
||||||
|
|
||||||
|
volatile unsigned int SlopeCurr_Set; //电流斜率设置值
|
||||||
|
|
||||||
|
volatile unsigned char PowerWork; //工作功率值
|
||||||
|
volatile unsigned int Buf_PPGTMR; //PPG导通缓存值
|
||||||
|
volatile unsigned int Value_PPGTMR; //PPG导通临时值
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_Zero_No; //无过零
|
||||||
|
volatile bit B_Zero_Have; //有过零
|
||||||
|
volatile bit B_Zero_Lose; //过零丢失
|
||||||
|
volatile bit B_Zero_60Hz; //过零频率=60Hz
|
||||||
|
|
||||||
|
volatile bit B_Zero_Time; //过零翻转(时间基准)
|
||||||
|
volatile bit B_Zero_Adc; //过零翻转(ADC)
|
||||||
|
|
||||||
|
volatile bit B_Vol_Low; //低压区间
|
||||||
|
volatile bit B_Vol_Mid; //中压区间
|
||||||
|
volatile bit B_Vol_High; //高压区间
|
||||||
|
|
||||||
|
volatile bit B_Adc_Auto; //ADC自动开始
|
||||||
|
volatile bit B_Adc_Curr; //检测工作电流AD
|
||||||
|
volatile bit B_Adc_Vol; //检测市电电压AD
|
||||||
|
|
||||||
|
volatile bit B_Pan_Check; //检锅
|
||||||
|
volatile bit B_Pan_Single; //单次检锅脉冲输出
|
||||||
|
volatile bit B_Pan_LoseDly; //丢锅检测延时
|
||||||
|
volatile bit B_Pan_Error; //检锅故障(未接线盘)
|
||||||
|
volatile bit B_Pan_No; //无锅
|
||||||
|
volatile bit B_Pan_Have; //有锅
|
||||||
|
volatile bit B_Pan_Iron; //铁锅
|
||||||
|
volatile bit B_Pan_Steel; //钢锅
|
||||||
|
|
||||||
|
volatile bit B_PPGTMR_ReadLock; //读PPGTMR锁保护
|
||||||
|
volatile bit B_PPGTMR_WriteLock; //写PPGTMR锁保护
|
||||||
|
|
||||||
|
volatile bit B_Protect_BackPress; //过压保护
|
||||||
|
volatile bit B_Protect_Stop; //硬件保护停止
|
||||||
|
volatile bit B_ProtectCM_Restart; //保护比较器重启
|
||||||
|
|
||||||
|
volatile bit B_PPG_On; //PPG开启
|
||||||
|
volatile bit B_PPG_Out; //PPG输出
|
||||||
|
volatile bit B_Heat_En; //加热使能
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
Binary file not shown.
661
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug.c
Normal file
661
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug.c
Normal file
@@ -0,0 +1,661 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#include "Define_Global.h"
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 变量定义 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned char Del_SendStatus;
|
||||||
|
volatile unsigned int StatusWork;
|
||||||
|
volatile unsigned int StatusError;
|
||||||
|
volatile unsigned int StatusProtect;
|
||||||
|
|
||||||
|
volatile unsigned char Count_IhDebugComm;
|
||||||
|
volatile unsigned int Del_IhDebugComm;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_SendStatus_IhDebug;
|
||||||
|
volatile bit B_TestComm_IhDebug;
|
||||||
|
volatile bit B_CommErr_IhDebug;
|
||||||
|
//*************************************************************************
|
||||||
|
volatile unsigned int Bak_StatusWork;
|
||||||
|
volatile unsigned int Bak_StatusError;
|
||||||
|
volatile unsigned int Bak_StatusProtect;
|
||||||
|
|
||||||
|
volatile unsigned char Bak_PowerWork;
|
||||||
|
volatile unsigned char Bak_TimeAll_JXHeat;
|
||||||
|
volatile unsigned char Bak_TimeOn_JXHeat;
|
||||||
|
volatile unsigned char Bak_Num_LxLowAll;
|
||||||
|
volatile unsigned char Bak_Num_LxLowOn;
|
||||||
|
|
||||||
|
volatile unsigned int Bak_Num_TestCM;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_Bak_JXNoCheck;
|
||||||
|
volatile bit B_Bak_JXCheckPan;
|
||||||
|
volatile bit B_Bak_LxLow;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:REL_DealSendCurve
|
||||||
|
* 函数功能:发送数据处理(曲线)
|
||||||
|
* 入口参数:id = 发送ID值
|
||||||
|
* 出口参数:发送数据值
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
unsigned int REL_DealSendCurve(unsigned char id)
|
||||||
|
{
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case 0: //【曲线1数据】
|
||||||
|
return (unsigned int)AD_Volatage; //市电电压AD【9bit】
|
||||||
|
case 1: //【曲线2数据】
|
||||||
|
return (unsigned int)AD_Current; //工作电流AD【9bit】
|
||||||
|
case 2: //【曲线3数据】
|
||||||
|
return (unsigned int)AD_TmprPan; //锅底温度AD【8bit】
|
||||||
|
case 3: //【曲线4数据】
|
||||||
|
#ifndef _pAD_TOP
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
return (unsigned int)AD_TmprTop; //顶部温度AD【8bit】
|
||||||
|
#endif
|
||||||
|
case 4: //【曲线5数据】
|
||||||
|
return (unsigned int)AD_TmprIgbt; //IGBT温度AD【8bit】
|
||||||
|
case 5: //【曲线6数据】
|
||||||
|
return (unsigned int)AD_VRef; //内部基准电压AD【9bit】
|
||||||
|
case 6: //【曲线7数据】
|
||||||
|
return (unsigned int)Vol.flo.integer + C_Vol_Comp; //市电电压(V)
|
||||||
|
case 7: //【曲线8数据】
|
||||||
|
return (unsigned int)CurrentReal; //实际工作电流(A*256)
|
||||||
|
case 8: //【曲线9数据】
|
||||||
|
return (unsigned int)PowerReal; //实际输出功率(W)
|
||||||
|
case 9: //【曲线10数据】
|
||||||
|
return (unsigned int)PowerSet; //设置输出功率(W)
|
||||||
|
case 10://【曲线11数据】
|
||||||
|
return (unsigned int)Buf_PPGTMR; //当前PPGTMR值
|
||||||
|
case 11://【曲线12数据】
|
||||||
|
return (unsigned int)Count_Syn; //检锅振荡个数
|
||||||
|
case 12://【曲线13数据】
|
||||||
|
return (unsigned int)Time_Syn; //检锅振荡脉宽
|
||||||
|
case 13://【曲线14数据】
|
||||||
|
return (unsigned int)Count_BackPress; //1级过压保护计数
|
||||||
|
case 14://【曲线15数据】
|
||||||
|
return (unsigned int)Count_IgbtProtect; //IGBT硬件保护计数
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:REL_DealSendStatus
|
||||||
|
* 函数功能:发送数据处理(状态)
|
||||||
|
* 入口参数:id = 发送ID值
|
||||||
|
* 出口参数:发送ID值 + 发送数据值
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
unsigned long REL_DealSendStatus(unsigned char id)
|
||||||
|
{
|
||||||
|
volatile unsigned long data;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_SendStatus_IhDebug)
|
||||||
|
{
|
||||||
|
B_SendStatus_IhDebug = 0; //完成状态发送
|
||||||
|
|
||||||
|
switch(id)
|
||||||
|
{
|
||||||
|
case 1: //【工作状态】
|
||||||
|
data = 0xE0;
|
||||||
|
data <<= 16;
|
||||||
|
data += StatusWork;
|
||||||
|
return data;
|
||||||
|
case 2: //【故障状态】
|
||||||
|
data = 0xE1;
|
||||||
|
data <<= 16;
|
||||||
|
data += StatusError;
|
||||||
|
return data;
|
||||||
|
case 3: //【保护状态】
|
||||||
|
data = 0xE2;
|
||||||
|
data <<= 16;
|
||||||
|
data += StatusProtect;
|
||||||
|
return data;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:REL_DealReceData
|
||||||
|
* 函数功能:接收数据处理
|
||||||
|
* 入口参数:id = 接收ID值、value = 接收数据值
|
||||||
|
* 出口参数:发送ID值 + 发送数据值
|
||||||
|
* 备 注:内部调用
|
||||||
|
**************************************************************************/
|
||||||
|
unsigned long REL_DealReceData(unsigned char id, unsigned int value)
|
||||||
|
{
|
||||||
|
volatile unsigned long data;
|
||||||
|
//*********************************************************************
|
||||||
|
if((id & 0xF0) == 0xE0) //【发送回传】
|
||||||
|
{
|
||||||
|
switch(id & 0x0F)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Bak_StatusWork = value; //工作状态
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Bak_StatusError = value; //故障状态
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Bak_StatusProtect = value; //保护状态
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*********************************************************************
|
||||||
|
else if(id == 0xA0) //【工作命令】
|
||||||
|
{
|
||||||
|
if(TestOne(value,0))
|
||||||
|
{
|
||||||
|
if(!B_Heat_En)
|
||||||
|
{
|
||||||
|
SetBit(value,1); //风扇强制使能
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
B_Heat_En = 1; //加热使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Heat_En = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,1))
|
||||||
|
{
|
||||||
|
B_Fan_En = 1; //风扇使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Fan_En = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,2))
|
||||||
|
{
|
||||||
|
B_Buzz_En = 1; //蜂鸣器使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Buzz_En = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,3))
|
||||||
|
{
|
||||||
|
ClrBit(value,3);
|
||||||
|
ClrBit(value,2); //蜂鸣器强制关闭
|
||||||
|
B_Buzz_En = 0;
|
||||||
|
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Short_One(); //蜂鸣器短鸣1声
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,4))
|
||||||
|
{
|
||||||
|
ClrBit(value,4);
|
||||||
|
ClrBit(value,2); //蜂鸣器强制关闭
|
||||||
|
B_Buzz_En = 0;
|
||||||
|
|
||||||
|
if(!B_Buzz_Out)
|
||||||
|
{
|
||||||
|
Buzz_Long_One(); //蜂鸣器长鸣1声
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,5))
|
||||||
|
{
|
||||||
|
if(!B_Bak_JXNoCheck)
|
||||||
|
{
|
||||||
|
ClrBit(value,6); //间隙加热使能(检锅)强制关闭
|
||||||
|
B_Bak_JXCheckPan = 0;
|
||||||
|
}
|
||||||
|
B_Bak_JXNoCheck = 1; //间隙加热使能(不检锅)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Bak_JXNoCheck = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,6))
|
||||||
|
{
|
||||||
|
if(!B_Bak_JXCheckPan)
|
||||||
|
{
|
||||||
|
ClrBit(value,5); //间隙加热使能(不检锅)强制关闭
|
||||||
|
B_Bak_JXNoCheck = 0;
|
||||||
|
}
|
||||||
|
B_Bak_JXCheckPan = 1; //间隙加热使能(检锅)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Bak_JXCheckPan = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,7))
|
||||||
|
{
|
||||||
|
if(!B_PPGDP_Can)
|
||||||
|
{
|
||||||
|
ClrBit(value,9); //连续低功率强制关闭
|
||||||
|
B_Bak_LxLow = 0;
|
||||||
|
}
|
||||||
|
B_PPGDP_Can = 1; //抖频使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(B_PPGDP_Can)
|
||||||
|
{
|
||||||
|
SetBit(value,8); //抖频使能强制禁止
|
||||||
|
B_PPGDP_Dis = 1; //抖频禁止
|
||||||
|
}
|
||||||
|
B_PPGDP_Can = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,8))
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 1; //抖频禁止
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_PPGDP_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,9))
|
||||||
|
{
|
||||||
|
if(!B_Bak_LxLow)
|
||||||
|
{
|
||||||
|
ClrBit(value,7); //抖频使能强制关闭
|
||||||
|
B_PPGDP_Can = 0;
|
||||||
|
SetBit(value,8); //抖频使能强制禁止
|
||||||
|
B_PPGDP_Dis = 1; //抖频禁止
|
||||||
|
}
|
||||||
|
B_Bak_LxLow = 1; //连续低功率使能
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Bak_LxLow = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
else if((id & 0xF0) == 0xB0) //【工作参数】
|
||||||
|
{
|
||||||
|
switch(id & 0x0F)
|
||||||
|
{
|
||||||
|
case 0: //加热输出功率(×10W)
|
||||||
|
Bak_PowerWork = value;
|
||||||
|
break;
|
||||||
|
case 1: //加热间隙总时间(×0.5秒)
|
||||||
|
Bak_TimeAll_JXHeat = value;
|
||||||
|
break;
|
||||||
|
case 2: //加热间隙开时间(×0.5秒)
|
||||||
|
Bak_TimeOn_JXHeat = value;
|
||||||
|
break;
|
||||||
|
case 3: //加热连续低功率总个数
|
||||||
|
Bak_Num_LxLowAll = value;
|
||||||
|
break;
|
||||||
|
case 4: //加热连续低功率开个数
|
||||||
|
Bak_Num_LxLowOn = value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
else if((id & 0xF0) == 0xC0) //【配置参数】
|
||||||
|
{
|
||||||
|
switch(id & 0x0F)
|
||||||
|
{
|
||||||
|
case 0: //PPG导通延时
|
||||||
|
ValueTime_PPGDly = value;
|
||||||
|
break;
|
||||||
|
case 1: //电压浪涌
|
||||||
|
ValueVol_VolSurge = value;
|
||||||
|
break;
|
||||||
|
case 2: //电流浪涌
|
||||||
|
ValueVol_CurrSurge = value;
|
||||||
|
break;
|
||||||
|
case 3: //导通台阶
|
||||||
|
ValueVol_OnStep = value;
|
||||||
|
break;
|
||||||
|
case 4: //1级过压
|
||||||
|
ValueVol_BackPress1 = value;
|
||||||
|
break;
|
||||||
|
case 5: //1级过压PPG下降步进
|
||||||
|
ValuePPG_BackPress1 = value;
|
||||||
|
break;
|
||||||
|
case 6: //2级过压
|
||||||
|
ValueVol_BackPress2 = value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*********************************************************************
|
||||||
|
else if(id == 0x80) //【测试命令】
|
||||||
|
{
|
||||||
|
if(TestOne(value,0))
|
||||||
|
{
|
||||||
|
if(!B_Test_PanCheck)
|
||||||
|
{
|
||||||
|
ClrBit(value,1); //PPG测试强制关闭
|
||||||
|
B_Test_PPGOut = 0;
|
||||||
|
}
|
||||||
|
B_Test_PanCheck = 1; //检锅测试开启
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_PanCheck = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,1))
|
||||||
|
{
|
||||||
|
if(!B_Test_PPGOut)
|
||||||
|
{
|
||||||
|
ClrBit(value,0); //检锅测试强制关闭
|
||||||
|
B_Test_PanCheck = 0;
|
||||||
|
}
|
||||||
|
B_Test_PPGOut = 1; //PPG测试开启
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_PPGOut = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,2))
|
||||||
|
{
|
||||||
|
B_Test_CM_RA0 = 1; //比较器测试开启(RA0)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_CM_RA0 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,3))
|
||||||
|
{
|
||||||
|
B_Test_CM_RB7 = 1; //比较器测试开启(RB7)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_CM_RB7 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,4))
|
||||||
|
{
|
||||||
|
B_Test_PGA = 1; //PGA测试开启(RC0)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_PGA = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,5))
|
||||||
|
{
|
||||||
|
B_Test_SlopeCurr = 1; //电流斜率测试开启
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Test_SlopeCurr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,6))
|
||||||
|
{
|
||||||
|
B_ErrorCheck_Dis = 1; //禁止硬件故障检测
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_ErrorCheck_Dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TestOne(value,7))
|
||||||
|
{
|
||||||
|
B_LosePanCheck_Dis = 1; //禁止电流丢锅检测
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_LosePanCheck_Dis = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
else if((id & 0xF0) == 0x90) //【测试参数】
|
||||||
|
{
|
||||||
|
switch(id & 0x0F)
|
||||||
|
{
|
||||||
|
case 0: //检锅测试-PPGTMR值
|
||||||
|
ValuePPG_Single = value;
|
||||||
|
break;
|
||||||
|
case 1: //PPG测试-PPGTMR值
|
||||||
|
PPGTMR_TestPPG = value;
|
||||||
|
break;
|
||||||
|
case 2: //比较器测试-通道
|
||||||
|
Bak_Num_TestCM = 0xFF00 | value;
|
||||||
|
break;
|
||||||
|
case 3: //电流斜率测试-斜率
|
||||||
|
SlopeCurr_Test = value;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//*********************************************************************
|
||||||
|
Del_IhDebugComm = 0; //清通信故障计时
|
||||||
|
B_CommErr_IhDebug = 0; //清通信故障标志
|
||||||
|
B_TestComm_IhDebug = 1; //开始检测通信故障
|
||||||
|
|
||||||
|
if((id >= 0xE0) || (id < 0x80))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = id;
|
||||||
|
data <<= 16;
|
||||||
|
data += value;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* 函数名称:REL_ReceSendCom
|
||||||
|
* 函数功能:接收发送公共处理
|
||||||
|
* 入口参数:无
|
||||||
|
* 出口参数:无
|
||||||
|
* 备 注:主循环调用
|
||||||
|
**************************************************************************/
|
||||||
|
void REL_ReceSendCom(void)
|
||||||
|
{
|
||||||
|
volatile unsigned int i;
|
||||||
|
|
||||||
|
static unsigned char Del_JXHeat,Cnt_JXHeat;
|
||||||
|
static unsigned char Del_DispBackPress;
|
||||||
|
static bit B_DispBackPress;
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
接收
|
||||||
|
**********************************************************************/
|
||||||
|
B_HeatStop_CheckPan = 0;
|
||||||
|
B_HeatStop_NoCheck = 0;
|
||||||
|
|
||||||
|
if((B_Bak_JXCheckPan || B_Bak_JXNoCheck) && Bak_TimeOn_JXHeat && (Bak_TimeAll_JXHeat > Bak_TimeOn_JXHeat))
|
||||||
|
{
|
||||||
|
if(++Del_JXHeat >= 500/C_TimeMS_Main) //0.5s
|
||||||
|
{
|
||||||
|
Del_JXHeat = 0;
|
||||||
|
|
||||||
|
if(++Cnt_JXHeat >= Bak_TimeAll_JXHeat)
|
||||||
|
{
|
||||||
|
Cnt_JXHeat = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Cnt_JXHeat >= Bak_TimeOn_JXHeat)
|
||||||
|
{
|
||||||
|
if(B_Bak_JXCheckPan)
|
||||||
|
{
|
||||||
|
B_HeatStop_CheckPan = 1; //不加热但检锅
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_HeatStop_NoCheck = 1; //不加热不检锅
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Del_JXHeat = 0;
|
||||||
|
Cnt_JXHeat = 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
PowerWork = Bak_PowerWork;
|
||||||
|
//*********************************************************************
|
||||||
|
if(B_Bak_LxLow && Bak_Num_LxLowOn && (Bak_Num_LxLowAll > Bak_Num_LxLowOn))
|
||||||
|
{
|
||||||
|
Num_LxLowOn = Bak_Num_LxLowOn;
|
||||||
|
Num_LxLowOff = (unsigned)Bak_Num_LxLowAll - Bak_Num_LxLowOn;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Num_LxLowOn = 0;
|
||||||
|
Num_LxLowOff = 0;
|
||||||
|
}
|
||||||
|
//*********************************************************************
|
||||||
|
if((B_Test_CM_RA0 || B_Test_CM_RB7) && Bak_Num_TestCM)
|
||||||
|
{
|
||||||
|
ValueCM_Test = 0x08 | ((unsigned)Bak_Num_TestCM & 0x07);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ValueCM_Test = 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(B_Test_PGA)
|
||||||
|
{
|
||||||
|
ValuePGA_Set |= 0x02;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ValuePGA_Set &= ~0x02;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
发送
|
||||||
|
**********************************************************************/
|
||||||
|
if(B_Protect_BackPress)
|
||||||
|
{
|
||||||
|
B_DispBackPress = 1; //过压保护显示
|
||||||
|
}
|
||||||
|
|
||||||
|
if(B_DispBackPress)
|
||||||
|
{
|
||||||
|
if(Del_DispBackPress >= 500/C_TimeMS_Main) //500ms
|
||||||
|
{
|
||||||
|
B_DispBackPress = 0; //退出过压保护显示
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Del_DispBackPress++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Del_DispBackPress = 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
i = 0;
|
||||||
|
if(B_Pan_Error) SetBit(i,0); //检锅故障(未接线盘)
|
||||||
|
if(B_Pan_No) SetBit(i,1); //无锅
|
||||||
|
if(B_Pan_Have) SetBit(i,2); //有锅
|
||||||
|
if(B_Pan_Steel) SetBit(i,3); //钢锅
|
||||||
|
if(B_Pan_Iron) SetBit(i,4); //铁锅
|
||||||
|
|
||||||
|
if(B_Zero_No) SetBit(i,5); //无过零
|
||||||
|
else
|
||||||
|
{if(!B_Zero_60Hz) SetBit(i,6); //过零频率 = 50Hz
|
||||||
|
else SetBit(i,7);} //过零频率 = 60Hz
|
||||||
|
|
||||||
|
if(B_PPG_Out) SetBit(i,8); //正常加热
|
||||||
|
if(B_PPGStop_NoCheck) SetBit(i,9); //加热暂停,不检锅
|
||||||
|
if(B_PPGStop_CheckPan) SetBit(i,10); //加热暂停,并检锅
|
||||||
|
if(Flag1_Error | Flag2_Error) SetBit(i,11); //故障停止加热
|
||||||
|
if(B_Protect_Stop) SetBit(i,12); //保护停止加热
|
||||||
|
if(Status_PPGDP & 0x02) SetBit(i,13); //抖频开启
|
||||||
|
if(Status_LxLow & 0x02) SetBit(i,14); //连续低功率开启
|
||||||
|
|
||||||
|
StatusWork = i; //工作状态
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
i = 0;
|
||||||
|
if(B_EVolLow) SetBit(i,0); //市电电压过低
|
||||||
|
if(B_EVolHigh) SetBit(i,1); //市电电压过高
|
||||||
|
if(B_EIgbtOpen) SetBit(i,2); //IGBT-NTC开路
|
||||||
|
if(B_EIgbtClose) SetBit(i,3); //IGBT-NTC短路
|
||||||
|
if(B_EIgbtOver) SetBit(i,4); //IGBT-NTC超温
|
||||||
|
if(B_EPanOpen) SetBit(i,5); //锅底-NTC开路
|
||||||
|
if(B_EPanClose) SetBit(i,6); //锅底-NTC短路
|
||||||
|
if(B_EPanOver) SetBit(i,7); //锅底-NTC超温
|
||||||
|
if(B_EPanFail) SetBit(i,8); //锅底-NTC失效
|
||||||
|
if(B_ETopOpen) SetBit(i,9); //顶部-NTC开路
|
||||||
|
if(B_ETopClose) SetBit(i,10); //顶部-NTC短路
|
||||||
|
if(B_ETopFail) SetBit(i,11); //顶部-NTC失效
|
||||||
|
if(B_CommErr_IhDebug) SetBit(i,12); //通信故障
|
||||||
|
|
||||||
|
StatusError = i; //故障状态
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
i = 0;
|
||||||
|
if(TestOne(Status_PPGStop,0)) SetBit(i,0); //1级过压比较器计数溢出
|
||||||
|
if(TestOne(Status_PPGStop,1)) SetBit(i,1); //电压浪涌
|
||||||
|
if(TestOne(Status_PPGStop,2)) SetBit(i,2); //电流浪涌
|
||||||
|
if(TestOne(Status_PPGStop,3)) SetBit(i,3); //2级过压
|
||||||
|
if(TestOne(Status_PPGStop,4)) SetBit(i,4); //导通台阶过高
|
||||||
|
if(TestOne(Status_PPGStop,5)) SetBit(i,5); //PPG看门狗溢出
|
||||||
|
if(B_DispBackPress) SetBit(i,6); //过压保护
|
||||||
|
|
||||||
|
StatusProtect = i; //保护状态
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
if(++Del_SendStatus >= 100/C_TimeMS_Main) //150ms
|
||||||
|
{
|
||||||
|
Del_SendStatus = 0;
|
||||||
|
B_SendStatus_IhDebug = 1; //发送状态
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
通信故障
|
||||||
|
**********************************************************************/
|
||||||
|
if(!B_TestComm_IhDebug)
|
||||||
|
{
|
||||||
|
Del_IhDebugComm = 0; //未开始检测通信故障
|
||||||
|
B_CommErr_IhDebug = 0; //清通信故障标志
|
||||||
|
}
|
||||||
|
else if(++Del_IhDebugComm >= 1000/C_TimeMS_Main) //1s
|
||||||
|
{
|
||||||
|
Del_IhDebugComm = 0;
|
||||||
|
B_CommErr_IhDebug = 1; //通信故障
|
||||||
|
|
||||||
|
if(++Count_IhDebugComm & 0x01)
|
||||||
|
{
|
||||||
|
B_Fan_En = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
B_Fan_En = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
B_Heat_En = 0;
|
||||||
|
B_Buzz_En = 0;
|
||||||
|
B_Test_PanCheck = 0;
|
||||||
|
B_Test_PPGOut = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
|
||||||
55
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug.h
Normal file
55
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#ifndef _REL_IHDEBUG_
|
||||||
|
#define _REL_IHDEBUG_
|
||||||
|
#if _MODE_IHDEBUG_
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 常量定义 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
#define C_IhDebug_Baudrate 9600 //波特率(最大支持波特率为9600)
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
#define C_IhDebug_SendTypeID 0 //发送数据类型ID
|
||||||
|
#define C_IhDebug_SendCntSum 15 //一共需要发送结构体个数
|
||||||
|
#define C_IhDebug_SendCntOnce 2 //一次循环最多发送结构体个数
|
||||||
|
//*************************************************************************
|
||||||
|
const unsigned char REL_IhDebug_Baudrate = 1000000 / C_IhDebug_Baudrate - 1;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
const unsigned char REL_IhDebug_SendTypeID = C_IhDebug_SendTypeID;
|
||||||
|
const unsigned char REL_IhDebug_SendCntOnce = C_IhDebug_SendCntOnce;
|
||||||
|
|
||||||
|
#if (C_IhDebug_SendCntSum % C_IhDebug_SendCntOnce)
|
||||||
|
const unsigned char REL_IhDebug_PackIDX_Max = C_IhDebug_SendCntSum / C_IhDebug_SendCntOnce;
|
||||||
|
const unsigned char REL_IhDebug_PackSend_CntFinal = C_IhDebug_SendCntSum % C_IhDebug_SendCntOnce;
|
||||||
|
#else
|
||||||
|
const unsigned char REL_IhDebug_PackIDX_Max = (C_IhDebug_SendCntSum - 1) / C_IhDebug_SendCntOnce;
|
||||||
|
const unsigned char REL_IhDebug_PackSend_CntFinal = C_IhDebug_SendCntOnce;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 变量定义 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
volatile unsigned int PPGTMR_TestPPG;
|
||||||
|
volatile unsigned int SlopeCurr_Test;
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
volatile bit B_Test_PGA;
|
||||||
|
volatile bit B_Test_CM_RA0;
|
||||||
|
volatile bit B_Test_CM_RB7;
|
||||||
|
|
||||||
|
volatile bit B_Test_PanCheck;
|
||||||
|
volatile bit B_Test_PPGOut;
|
||||||
|
volatile bit B_Test_SlopeCurr;
|
||||||
|
volatile bit B_ErrorCheck_Dis;
|
||||||
|
volatile bit B_LosePanCheck_Dis;
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
--------------------------------- 函数声明 --------------------------------
|
||||||
|
**************************************************************************/
|
||||||
|
extern void REL_IhDebug_Main();
|
||||||
|
extern void REL_IhDebug_Int();
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
**************************************************************************/
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug_Comm_V1.0.0.lpp
Normal file
BIN
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/__REL_IhDebug_Comm_V1.0.0.lpp
Normal file
Binary file not shown.
3
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/工程版本说明.txt
Normal file
3
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/工程版本说明.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/* 版本号:V1.0
|
||||||
|
/* 生成日期:2023.2.7
|
||||||
|
|
||||||
4
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/库版本说明.txt
Normal file
4
范例程序(C语言)/IH-CMS79F53X5-C-V1.0/库版本说明.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/* 库名称:__CMS_IhPlus_CMS79F53x5
|
||||||
|
/* 版本号:V1.0.0
|
||||||
|
/* 生成日期:2023.2.7
|
||||||
|
|
||||||
BIN
范例程序(C语言)/IH通讯协议-V1.0.pdf
Normal file
BIN
范例程序(C语言)/IH通讯协议-V1.0.pdf
Normal file
Binary file not shown.
BIN
调试软件和手册/CMS_IhDebug_V1.2.0.rar
Normal file
BIN
调试软件和手册/CMS_IhDebug_V1.2.0.rar
Normal file
Binary file not shown.
BIN
调试软件和手册/IH调试手册(CMS79F53x)-C语言版-V1.1.pdf
Normal file
BIN
调试软件和手册/IH调试手册(CMS79F53x)-C语言版-V1.1.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user