亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pmsm.c

?? PMSM F2812 (C程序版)
?? C
字號:

#include "DSP281x_Device.h"       // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"     // DSP281x Examples Include File
#include "IQmathLib.h"            // Include header for IQmath library
#include "pmsm.h"
#include "parameter.h"
#include <math.h>

//  主中斷
interrupt void MainISR(void);
void init_evb(void);              // EVB PWM 9 :

void scia_loopback_init(void);    // SCI寄存器設置
void scia_fifo_init(void);        // 初始化SCI_FIFO
void scia_xmit(int a);            // SCI發送

void spi_init(void);               //初始化spi
void spi_fifo_init(void);
unsigned int spi_read(void);             //spi接收 
void spi_xmit(int a);

void set_cs(void);
void reset_cs(void);

//  全局變量定義
long i=0;
long m=0;
unsigned int  Resolver[500];

Uint16 Resol_Mech_Theta = 0;
Uint16 Rotor_Mech_Theta = 0;
Uint16 Rotor_Elec_Theta_Temp=0;
float32  Ele_Theta_temp;
_iq Rotor_Elec_Theta;

//  Adc(內部AD)變量
Uint16 Voltage1;
Uint16 Voltage2;
Uint16 Voltage3;
Uint16 Voltage4;

Uint16 SendChar;                  // SCI發送變量
Uint16 ReceivedChar;

float32 VdTesting = 0;            // Vd testing (pu) 
float32 VqTesting = 0.5;          // Vq testing (pu)
float32 SpeedRef = 0.3;           // Speed reference (pu)
float32 T = 0.001/ISR_FREQUENCY;  // 采樣周期 (sec), see parameter.h 

int16 DlogCh1 = 0;                // 
int16 DlogCh2 = 0;
int16 DlogCh3 = 0;
int16 DlogCh4 = 0;

Uint16 IsrTicker = 0;
Uint16 BackTicker = 0;

//  CLARKE,PARK,IPARK:初始值
CLARKE clarke1 = CLARKE_DEFAULTS;
PARK park1 = PARK_DEFAULTS;
IPARK ipark1 = IPARK_DEFAULTS;

//  PWM:初始值
PWMGEN pwm1 = PWMGEN_DEFAULTS;

//  SVPWM:初始值
SVGENDQ svgen_dq1 = SVGENDQ_DEFAULTS;

//  RMPCNTL:初始值
RMPCNTL rc1 = RMPCNTL_DEFAULTS;

//  RAMPGEN:初始值
RAMPGEN rg1 = RAMPGEN_DEFAULTS;

//  DLOG:初始值
DLOG_4CH dlog = DLOG_4CH_DEFAULTS;

//  主程序
void main(void)
{

//  系統初始化,系統時鐘=150M,使能外設時鐘(高速,低速),在DSP281x_SysCtrl.c文件中
    InitSysCtrl();

//  GPIO為片內外設
    EALLOW;

    GpioMuxRegs.GPAMUX.all = 0x003F;   // GPIOA0-GPIO5 : EVA PWM 1-6  
    GpioMuxRegs.GPBMUX.bit.PWM9_GPIOB2 = 1;   //  EVB PWM 9 :Sample
    GpioMuxRegs.GPFMUX.all = 0x003f;   // GPIOF4 : SCITXDA

    EDIS;
    
//  禁止CPU中斷
    DINT;

//  PIE初始化,禁止PIE中斷,PIE中斷標志清零,在DSP281x_PieCtrl.c文件中
    InitPieCtrl();

//  禁止CPU中斷,CPU中斷標志清零
    IER = 0x0000;
    IFR = 0x0000;

//  PIE向量表初始化,在DSP281x_PieVect.c文件中
    InitPieVectTable();
   
//  Adc(內部AD)初始化,在DSP281x_Adc.c文件中
    InitAdc();
    AdcRegs.ADCTRL3.bit.ADCCLKPS = 8;
    AdcRegs.ADCMAXCONV.all=0x0003;
    AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0008;
    AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x0009;
    AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x00010;
    AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x00011;

    scia_fifo_init();      // 初始化SCI_FIFO
    scia_loopback_init();  // SCI寄存器設置

//  使能PIE外部中斷1
    IER|=M_INT1;
  
//  初始化 EVA Timer 1:
//  設置EVA寄存器
    EvaRegs.GPTCONA.all = 0;
   
//  使能 GP timer 1 下溢中斷
    EvaRegs.EVAIMRA.bit.T1UFINT = 1;
    EvaRegs.EVAIFRA.bit.T1UFINT = 1;

//  主中斷
	EALLOW;
	PieVectTable.T1UFINT = &MainISR;
	EDIS;

//  使能 PIE group 2 interrupt 6 for T1UFINT
    PieCtrlRegs.PIEIER2.all = M_INT6;

//  使能 CPU INT2 for T1UFINT
	IER |= M_INT2;

//  EVA時鐘是高速外設時鐘,是CPU的1/2	
    pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/2;
	pwm1.init(&pwm1);
	        
    init_evb();

//  初始化 DATALOG 模塊
    dlog.iptr1 = &DlogCh1;
    dlog.iptr2 = &DlogCh2;
    dlog.iptr3 = &DlogCh3;
    dlog.iptr4 = &DlogCh4;
    dlog.trig_value = 0x1;
    dlog.size = 0x400;
    dlog.prescalar = 1;
    dlog.init(&dlog);
        
//  初始化 RAMPGEN 模塊
    rg1.StepAngleMax = _IQ(BASE_FREQ*T);

//  使能CPU中斷

    EINT;
    ERTM;

	spi_fifo_init();
	spi_init();

    SciaRegs.SCITXBUF = 0;
    SpiaRegs.SPIRXBUF = 0;

    while (1)
    {
     BackTicker++;
     scia_xmit(Resolver[m]);
    }

}

interrupt void MainISR(void)
{
// Strat of Reading the Electric Theta
    spi_xmit(0x0fff);
    Resolver[m] = spi_read();

	Resolver[m] = Resolver[m]+518;
	if (Resolver[m]>=4095)
	  {
	   Resolver[m] = Resolver[m]-4095;
	  }
    Rotor_Mech_Theta = Resolver[m];

	Ele_Theta_temp = (float32)Rotor_Mech_Theta/819.0;  

	 if (Ele_Theta_temp <= 1)
	   {
	    Rotor_Elec_Theta = Ele_Theta_temp * (_IQ(1))+(_IQ(0));
	   }
     else if((Ele_Theta_temp > 1)&&(Ele_Theta_temp <= 2))
	   {
	    Rotor_Elec_Theta = (Ele_Theta_temp-1)*(_IQ(1))+(_IQ(0));
	   }
     else if((Ele_Theta_temp > 2)&&(Ele_Theta_temp <= 3))
	   {
	    Rotor_Elec_Theta = (Ele_Theta_temp-2)*(_IQ(1))+(_IQ(0));
	   } 
     else if((Ele_Theta_temp > 3)&&(Ele_Theta_temp <= 4))
	   {
	    Rotor_Elec_Theta = (Ele_Theta_temp-3)*(_IQ(1))+(_IQ(0));
	   } 
     else if((Ele_Theta_temp > 4)&&(Ele_Theta_temp <= 5))
	   {
	    Rotor_Elec_Theta = (Ele_Theta_temp-4)*(_IQ(1))+(_IQ(0));
	   }  
// End of Reading the Electric Theta 


// ------------------------------------------------------------------------------
//    RAMP_CNTL 模塊 
// ------------------------------------------------------------------------------
    rc1.TargetValue = _IQ(SpeedRef);
    rc1.calc(&rc1);

// ------------------------------------------------------------------------------
//    RAMP_GEN 模塊 
// ------------------------------------------------------------------------------
    rg1.Freq = rc1.SetpointValue;
    rg1.calc(&rg1);

// ------------------------------------------------------------------------------
//    I_PARK 模塊
// ------------------------------------------------------------------------------
    ipark1.Ds = _IQ(VdTesting);
    ipark1.Qs = _IQ(VqTesting);	
    ipark1.Angle = Rotor_Elec_Theta;
//    ipark1.Angle = rg1.Out;
    ipark1.calc(&ipark1);

// ------------------------------------------------------------------------------
//    SVGEN_DQ 模塊
// ------------------------------------------------------------------------------
  	svgen_dq1.Ualpha = ipark1.Alpha;
 	svgen_dq1.Ubeta = ipark1.Beta;
  	svgen_dq1.calc(&svgen_dq1);	

// ------------------------------------------------------------------------------
//    PWM 模塊
// ------------------------------------------------------------------------------
    pwm1.MfuncC1 = (int16)_IQtoIQ15(svgen_dq1.Ta); // MfuncC1 is in Q15
    pwm1.MfuncC2 = (int16)_IQtoIQ15(svgen_dq1.Tb); // MfuncC2 is in Q15  
    pwm1.MfuncC3 = (int16)_IQtoIQ15(svgen_dq1.Tc); // MfuncC3 is in Q15
	pwm1.update(&pwm1); 

// ------------------------------------------------------------------------------
//    DATALOG 模塊的顯示數據 
// ------------------------------------------------------------------------------
    DlogCh1 = (int16)_IQtoIQ15(svgen_dq1.Tc);
    DlogCh2 = (int16)_IQtoIQ15(svgen_dq1.Tb);
    DlogCh3 = (int16)_IQtoIQ15(svgen_dq1.Tc);
    DlogCh4 = (int16)_IQtoIQ15(svgen_dq1.Ta-svgen_dq1.Tb);
    
// ------------------------------------------------------------------------------
//    DATALOG 模塊顯示
// ------------------------------------------------------------------------------
    dlog.update(&dlog);
    
//  使能 GP timer 1 下溢中斷
	EvaRegs.EVAIMRA.bit.T1UFINT = 1;
	
//  判斷是否發生中斷,讀后置0 
    EvaRegs.EVAIFRA.all = BIT9;
	
//  使能 PIE group 2 全部中斷
	PieCtrlRegs.PIEACK.all |= PIEACK_GROUP2;
}

void init_evb()
{

    EvbRegs.T3PR = 0x1D4C;         // 20K
   
    EvbRegs.T3CNT = 0x0000;
    EvbRegs.T3CON.all = 0x1040;    // 連續增

    EvbRegs.CMPR5 = 0x0064;
 
    EvbRegs.ACTRB.all = 0x0666;
    EvbRegs.DBTCONB.all = 0x0000;  // 禁止死區
    EvbRegs.COMCONB.all = 0xA600;

}

//  SCI寄存器設置
void scia_loopback_init()
{
    SciaRegs.SCICCR.all = 0x0007;       // 1個結束位,禁止回送測試,無奇偶校驗位
                                        // 選擇空閑線協議,8位數據位
    SciaRegs.SCICTL1.all = 0x0003;      // 使能TX,RX,SCICLK,SCI軟件復位

    SciaRegs.SCICTL2.all = 0x0000;      // 禁止接收和發送中斷 

    SciaRegs.SCIHBAUD    = 0x0001;
    SciaRegs.SCILBAUD    = 0x00E7;      // Baud:9600

    SciaRegs.SCICCR.bit.LOOPBKENA =1;   // 使能回送測試  
    SciaRegs.SCICTL1.all = 0x0023;      // 重啟SCI 
}

//  初始化SCI_FIFO
void scia_fifo_init()										
{
    SciaRegs.SCIFFTX.all=0xE040;       // 
    SciaRegs.SCIFFRX.all=0x605f;       //
    SciaRegs.SCIFFCT.all=0x0000;       //
}

//  SCI發送
void scia_xmit(int a)
{
   while (!(SciaRegs.SCICTL2.bit.TXRDY));     
    SciaRegs.SCITXBUF = a>>8; 

    while (!(SciaRegs.SCICTL2.bit.TXRDY));
    SciaRegs.SCITXBUF = a;
}

void spi_init(void)
{
    EALLOW;
    GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0 = 1;   
	GpioMuxRegs.GPFMUX.bit.SPISOMIA_GPIOF1 = 1;
	GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2 = 1;
	GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3=1;   
    EDIS;
     
    SpiaRegs.SPICCR.all=0x004b;        // 數據長度為12位,在時鐘下降沿發送數據,在上升沿接收數據
    SpiaRegs.SPICTL.all=0x0006;        // 主工作方式,允許發送,禁止中斷;spi時鐘相位延時
    SpiaRegs.SPIBRR=0x0049;            // 波特率0.5M

    SpiaRegs.SPICCR.all= 0x00cb;       // 啟動SPI
} 

void spi_fifo_init(void)										
{
    SpiaRegs.SPIFFTX.all=0xE040;       // 
    SpiaRegs.SPIFFRX.all=0x204f;       //
    SpiaRegs.SPIFFCT.all=0x0000;       //
}

unsigned int spi_read(void)
   {
    unsigned int temp;
//    reset_cs ();
	while(SpiaRegs.SPIFFRX.bit.RXFFST == 0);
    temp = SpiaRegs.SPIRXBUF;
//	set_cs();
	return (temp&0x0fff);

   }

void spi_xmit(int a)
   {
//   while(SpiaRegs.SPIFFTX.bit.TXFFST != 1);
   SpiaRegs.SPITXBUF=a;
   }

void set_cs(void)
{
//     EALLOW;   
     GpioDataRegs.GPFDAT.bit.GPIOF3=1;             // 將IOPF3輸出為1,spiste===CS 
//     EDIS;      
}

void reset_cs(void)
{                                                  // 將片選信號置低,選中芯片
//    EALLOW;   
     GpioDataRegs.GPFDAT.bit.GPIOF3=0;             // 將IOPF3輸出為0,spiste===CS 
//    EDIS;    

} 



//===========================================================================
// No more.
//===========================================================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆免费在线观看| 狠狠色2019综合网| 欧美一级高清片在线观看| 欧美草草影院在线视频| 最新不卡av在线| 美女性感视频久久| 色综合欧美在线视频区| 精品国产乱码久久久久久图片| 中文字幕佐山爱一区二区免费| 日本欧美一区二区在线观看| heyzo一本久久综合| 精品成人免费观看| 婷婷丁香久久五月婷婷| 一本大道综合伊人精品热热 | 国产精品一区专区| 欧美性猛交xxxx乱大交退制版| 亚洲一区二区四区蜜桃| 国产精品一区二区久激情瑜伽| 欧美美女黄视频| 亚洲制服丝袜av| 99久久综合国产精品| 久久久精品国产99久久精品芒果| 丝袜a∨在线一区二区三区不卡| 91亚洲精品乱码久久久久久蜜桃 | 欧美性一级生活| 中文字幕一区二区三区视频| 国产成人高清视频| 久久久99精品久久| 久久成人av少妇免费| 欧美mv日韩mv国产| 老司机一区二区| 欧美zozozo| 麻豆精品在线播放| 精品国产免费人成在线观看| 麻豆精品国产传媒mv男同| 制服丝袜国产精品| 免费高清不卡av| 日韩欧美你懂的| 韩国精品在线观看| 国产欧美一区视频| 不卡一卡二卡三乱码免费网站| 国产欧美精品一区二区色综合朱莉 | 678五月天丁香亚洲综合网| 亚洲一卡二卡三卡四卡无卡久久| 欧美性一级生活| 日韩中文字幕麻豆| 精品日韩99亚洲| 国产一区二区三区av电影| 国产视频一区二区在线| 粉嫩一区二区三区在线看| 综合激情成人伊人| 欧美日韩一本到| 99久久免费国产| 一区二区三区在线免费观看 | 欧美一二三在线| 九九**精品视频免费播放| 久久九九久久九九| 色综合一区二区三区| 午夜精品一区二区三区三上悠亚| 日韩精品中午字幕| 成人一级视频在线观看| 夜夜嗨av一区二区三区网页 | 精品在线一区二区| 国产精品视频观看| 欧美日韩综合色| 久草热8精品视频在线观看| 国产女主播在线一区二区| 91黄色小视频| 精东粉嫩av免费一区二区三区| 中文字幕第一区二区| 欧美日韩国产天堂| 国产成人在线色| 日韩主播视频在线| 国产精品国产成人国产三级 | 韩国av一区二区| 欧美一级欧美三级在线观看| 免费人成黄页网站在线一区二区 | 亚洲国产精品二十页| 欧美丝袜自拍制服另类| 国产裸体歌舞团一区二区| 亚洲人精品午夜| 精品理论电影在线| 色婷婷久久综合| 国产精品一区二区三区乱码| 亚洲老妇xxxxxx| 久久久影视传媒| 欧美嫩在线观看| 国产69精品久久久久毛片| 日本伊人色综合网| 亚洲天堂a在线| 久久久久久99久久久精品网站| 日本黄色一区二区| 成人免费视频播放| 久久www免费人成看片高清| 一区二区国产视频| 综合久久给合久久狠狠狠97色| 久久亚洲精华国产精华液| 欧美激情一区在线| 日韩欧美精品在线视频| 欧美亚洲愉拍一区二区| av在线不卡网| 国产99久久精品| 国产一区二区剧情av在线| 秋霞电影一区二区| 亚洲国产综合色| 亚洲一二三专区| 亚洲欧美乱综合| 中文字幕一区二区三区四区不卡| 久久久蜜臀国产一区二区| 日韩欧美亚洲一区二区| 制服丝袜激情欧洲亚洲| 欧美日韩aaaaaa| 欧美猛男男办公室激情| 91黄色免费网站| 欧美系列亚洲系列| 欧美色电影在线| 777午夜精品视频在线播放| 欧美性猛交xxxx乱大交退制版 | 国产一区二区三区免费观看| 免费高清不卡av| 久久99精品久久只有精品| 日韩主播视频在线| 韩国视频一区二区| 久久99国产精品麻豆| 激情伊人五月天久久综合| 免费视频最近日韩| 黑人巨大精品欧美一区| 日韩精品一级二级| 91在线观看视频| 亚洲国产成人一区二区三区| 久久久久九九视频| 丰满少妇久久久久久久| 8x8x8国产精品| 色婷婷亚洲综合| 欧美人xxxx| 欧美成人艳星乳罩| 国产色一区二区| 国产精品福利一区二区三区| 一区二区三区在线视频播放| 亚洲aⅴ怡春院| 国内不卡的二区三区中文字幕 | 精久久久久久久久久久| 韩国av一区二区三区在线观看| 国产很黄免费观看久久| 成人av免费在线播放| 欧美日韩一区在线| 亚洲视频在线一区| 美女在线观看视频一区二区| 粉嫩13p一区二区三区| 91行情网站电视在线观看高清版| 日韩欧美亚洲国产精品字幕久久久| 久久久综合精品| 亚洲一区二区三区国产| 韩国视频一区二区| 欧美主播一区二区三区| 久久综合国产精品| 亚洲无线码一区二区三区| 国产一区欧美二区| 欧美色综合天天久久综合精品| xfplay精品久久| 午夜久久久影院| av午夜精品一区二区三区| 欧美一区二区三区小说| 亚洲欧洲性图库| 国产精品白丝jk白祙喷水网站 | 一级日本不卡的影视| 精品在线一区二区三区| 91福利国产精品| 国产亚洲精品福利| 午夜精品影院在线观看| 成人动漫在线一区| 欧美精品日日鲁夜夜添| 欧美一区二区三区思思人| 国产精品久久久久天堂| 日韩精品91亚洲二区在线观看 | 欧美日韩你懂的| 国产欧美中文在线| 日韩黄色小视频| 国产成人高清在线| 欧美一卡二卡三卡四卡| 综合色中文字幕| 国产精品一区免费视频| 欧美精品在欧美一区二区少妇| 中文幕一区二区三区久久蜜桃| 日本v片在线高清不卡在线观看| 99久久精品免费看国产免费软件| 日韩欧美激情在线| 一级中文字幕一区二区| 成人av网站在线| 国产精品久久久久一区二区三区| 免费欧美日韩国产三级电影| 91麻豆swag| 亚洲精品免费视频| 国产高清不卡一区二区| 日韩欧美三级在线| 一个色综合av| 欧美午夜影院一区| 一区二区欧美精品| 成人午夜视频在线观看| 国产精品初高中害羞小美女文|