📄 uart_isr.c
字号:
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include "Option.h"
#include ".\SPWM_Lib\SPWM_ISR.h"
#include "BCD-BIN.h"
#include "Backup_VAR.h"
#ifdef DMC
#include "DMC_Lib\Spmc75_dmc_uart_ext.h"
#include "DMC_Lib\Spmc_dmc_api_ext.h"
#endif
extern void Err_RESET(void);
extern int Err_Num;
extern unsigned int DC_BUS_Voltage;
extern unsigned int Moto_Current;
extern int UP_Down_Time_NEW; //加减速时间更新标志
unsigned int UART_F_Buffer = 0;
void DMC_UART_ISR(void)
{
//通信数据处理
int Speed;
MC75_DMC_UART_Service();
Speed = SPMC75_Return_Currently_F(); //获得当前频率
Speed = MUL_DIV(Speed,6,20); //计算当前的同步转速
if(Moto_DIR > 0) Speed = -Speed;
SPMC_DMC_Save_SpdNow(1,Speed);
SPMC_DMC_Save_Vbus(DC_BUS_Voltage/10); //当前直流干线的电压
SPMC_DMC_Save_Aux(0,Moto_Current); //当前的负载电流
if(F_CH_Set == 2)
{
if(SPMC_DMC_Load_MotorSig(1) == 0)
{
if((Err_Num > 0)&&(Err_Num != 5)) Err_RESET(); //异常时的复位
else if(SPMC75_Return_Moto_state() > MOTO_Start) //允许停止并且电机在运行状态
SPMC75_Stop_Moto(0);
}
else if((SPMC75_Return_Moto_state() == STOP)&&(UART_F_Buffer >= Down_F))//允许启动并且电机在停止状态
SPMC75_Start_Moto(Moto_DIR); //启动电机
Speed = SPMC_DMC_Load_Aux(0);
if(Speed != UP_Time)
{
UP_Time = Speed;
UP_Down_Time_NEW = 1;
}
Speed = SPMC_DMC_Load_Aux(1);
if(Speed != Down_Time)
{
Down_Time = Speed;
UP_Down_Time_NEW = 1;
}
}
Speed = SPMC_DMC_Load_SpdCmd(1); //得到当前的速度设置参数
if(Speed < 0)
{
Speed = -Speed;
Moto_DIR = 1;
}
else Moto_DIR = 0;
if(Speed > 0) UART_F_Buffer = MUL_DIV(Speed,20,6); //计算工作频率
else UART_F_Buffer = 0;
}
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
#ifdef DMC
if(P_INT_Status->B.UARTIF)
{
if(P_UART_Status->B.RXIF)
MC75_DMC_RcvStream(); //DMC Rxd服务
//if(P_UART_Status->B.TXIF && P_UART_Ctrl->B.TXIE);
}
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -