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

📄 normal.c

📁 用freescale公司的DSP56F8013芯片实现的PMSM的SVPWM 驱动
💻 C
字号:
#include "Cpu.h"
#include "Events.h"
#include "Start.h"
#include "Close.h"
#include "Smopos.h"
#include "Clarke.h"
#include "Iclarke.h"
#include "Park.h"
#include "Ipark.h"
#include "ADC1.h"
#include "Normal.h"

extern long int cnt2drtchg;
extern bool updown;	
extern unsigned int Vbus1;
extern unsigned int Vbusoffset;
extern int Vbus;
extern unsigned int Ia1;
extern unsigned int Ib1;
extern int Iaoffset;
extern int Iboffset;
extern int Ia;	
extern int Iaold;
extern int Iafst;		
extern int Ib;
extern int a;
extern int b;
extern int cnt2tabset;
extern bool tabset;
extern bool tabstop;
extern int cnt2ctlchg;
extern bool clzloop;
extern int cnt2autoadj;
extern bool autoadj;
extern int ktempchg;
extern int ktempmax;
extern int ktemp;
extern int gujun;
extern int Imax;
extern bool Imaxfst;
extern int cnt2Imax;
extern int index;					
extern unsigned int cnt2Imaxchg;
extern int Imaxtab[28];
extern int Imin;
extern int idx;
extern int Iminflag;
extern int d;
extern int e;
extern bool tab;
extern int sensebit;
extern bool stclz;
extern int delta;
extern int deltaold;

void Normal(void)
{
	long int temp32;

	if(tab==0)	
	{
		cnt2tabset++;									
/* count to start the table set */
		if((cnt2tabset>=30000) && (tabstop==0))			
		{
			tabset=1;
		}

/* indicate stop the table set */		
		if(tabstop==1)																		
		cnt2tabset=30000;		
	}

	cnt2ctlchg++;
	if(cnt2ctlchg>=32000)
	{
	clzloop=1;					
	cnt2ctlchg=32000;
	}
	
	Start();
	
	Vbus1=(getReg(ADC_ADRSLT1) & 0x7fff);				/* DC Bus voltage sample value */
 	Vbus1=Vbus1>>3;
 	Vbus1-=Vbusoffset;
 	if(Vbus1>65530)
 	Vbus1=0;
 	temp32=(L_mult(((int)(Vbus1+Vbusoffset)),3356))>>10;/* Q6 */
 	Vbus=(int)temp32;									/* Q6 */
 	
	Ia1=(getReg(ADC_ADRSLT0) & 0x7fff);    				/* phase u current sample value */			
	Ib1=(getReg(ADC_ADRSLT2) & 0x7fff);					/* phase v current sample value */
	Ia=(int)(Ia1>>3);
	Ib=(int)(Ib1>>3);

 	Ia-=Iaoffset; 
 	Ib-=Iboffset;
 	Ia=-Ia;												
 	Ib=-Ib;
 	
 	temp32=(L_mult(Ia,21))>>1;							/* 21(Q15)=0.0006409,result Q15 */
 	a=(int)temp32; 										/* Q15 */

 	temp32=(L_mult(Ib,21))>>1;							/* 21(Q15)=0.0006409,result Q15 */
	b=(int)temp32;										/* Q15 */
 
/* call close loop adjustment */
	Close();											
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -