📄 moto_err.c
字号:
//========================================================================
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================================
//========================================================================
// Filename: Moto_Err.c
// Author: Lianshu Mou (email: Lianshu@sunnorth.com.cn)
// Date: 2005/01/26
// Description:
//
// Reference:
// Revision:
// 2005/01/26 First version
//========================================================================
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include ".\SPWM_Lib\SPWM_ISR.h"
#include "Option.h"
#include "Display_ISR.h"
#include "Backup_VAR.h"
#include "Data_Backup.h"
int Err_Num = 0;
int Dis_state_Temp = 0;
extern int SAVE_Flag;
void Moto_stop_RUN(void);
GEN_REG_DEF SPWM_flag;
#define UP_Down_Time_NEW SPWM_flag.B.bit0 //加减速时间更新标志
#define Moto_RUN_EN SPWM_flag.B.bit5 //电机启动允许
#define Moto_STOP_EN SPWM_flag.B.bit6 //电机停止允许
#define UP_current SPWM_flag.B.bit10 //过流
#define Over_Load SPWM_flag.B.bit11 //过载标志
#define Err_current SPWM_flag.B.bit12 //过流保护
#define Down_Voltage SPWM_flag.B.bit13 //欠压
#define UP_Voltage SPWM_flag.B.bit14 //过压
#define IPM_Err SPWM_flag.B.bit15 //IPM出错标志
//=============================================================
// ----Function: void Err_Init(void);
// -Description: 驱动系统出错检测初始化函数
// --Parameters: None
// -----Returns: None
// -------Notes:
//=============================================================
void Err_Init(void)
{
P_IOC_Dir->B.bit9 = 0; //IOB6 FTINP1
P_IOC_Attrib->B.bit9 = 1;
P_IOC_Data->B.bit9 = 1;
P_IOC_SPE->B.FTIN2EN = 1;
// P_Fault2_Ctrl->B.FTPINE = CB_TMR4_FCR_FTPINE;
// P_Fault2_Ctrl->B.FTPINIE = CB_TMR4_FCR_FTPINIE;
P_Fault2_Ctrl->B.FTCNT = 4;
Err_Num = 0;
Err_current = 0;
UP_Voltage = 0;
Down_Voltage = 0;
Over_Load = 0;
IPM_Err = 0;
UP_current = 0;
}
//=============================================================
// ----Function: void Err_RESET(void);
// -Description: 清除错误状态
// --Parameters: None
// -----Returns: None
// -------Notes:
//=============================================================
void Err_RESET(void)
{
Err_Num = 0;
Err_current = 0;
UP_Voltage = 0;
Down_Voltage = 0;
Over_Load = 0;
IPM_Err = 0;
UP_current = 0;
Dis_set.Display_state = Dis_state_Temp;
}
//=============================================================
// ----Function: void Err_ISR(void);
// -Description: 根据当前状态设置相应的的错误代码
// --Parameters: None
// -----Returns: None
// -------Notes:
//=============================================================
void Err_ISR(void)
{ //根据当前状态设置相应的的错误代码!
if((SPWM_flag.W&0xff00) > 0)
{ //有报警事件
//根据报警事件设置相应的错误事件号
if(Err_current > 0) //过流保护
Err_Num = 1;
else if(UP_Voltage > 0) //过压
Err_Num = 2;
else if(Down_Voltage > 0) //欠压
Err_Num = 3;
else if(IPM_Err > 0) //IPM出错标志
Err_Num = 4;
else if(UP_current > 0) //过流
Err_Num = 5;
}
if(Rating_Current == 0)
Err_Num = 6; //额定电流没设定
else Err_Num = 0; //没有异常事件
if(Err_Num > 0)
{
Dis_state_Temp = Dis_set.Display_state;
Dis_set.Display_state = 1;
}
}
//=================================================================================================
// Description: IRQ0 interrupt source is XXX,used to XXX
// Notes:
//=================================================================================================
void IRQ0(void) __attribute__ ((ISR));
void IRQ0(void)
{
if(P_Fault2_Ctrl->B.FTPINIF)
{
P_Fault2_Ctrl->B.FTPINIF = 1;
SPMC75_Stop_Moto(1); //立即断电
P_IOC_SPE->W |= CW_IOC_FTIN2_SFR_EN;
P_Fault2_Release->W = 0x55aa;
P_Fault2_Release->W = 0xaa55;
P_Fault2_Ctrl->B.FTPINE = 1;
IPM_Err = 1; //IPM Err flag
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -