⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_isr.c

📁 基于SPMC75的变频电机驱动例子,相当于一个简单的变频器. 望对变频器开发的工程式师有一定的帮助!
💻 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 + -