資源簡介
該程序用于控制高精度直流無刷陀螺電機運行,精度可達萬分之一
代碼片段和文件信息
#include?“DSP28x_Project.h“
#include?“DSP2833x_EPwm_defines.h“
#include?“IQmathlib.h“
#include?“C28x_FPU_FastRTS.h“
void?HRPWM1_Config(int);
void?HRPWM2_Config(int);
void?HRPWM3_Config(int);
void?HRPWM4_Config(void);//參考信號
void?HRPWM5_Config(int);//驅動信號
//void?HRPWM6_Config(int);
void?EPwmGpio(void);
void?PIDintial(void);
void?start(void);
void?CapGpio(void);
void?SetCAPMode(void);
void?Gpio(void);
void?AB(void);
void?AC(void);
void?BC(void);
void?BA(void);
void?CA(void);
void?CB(void);
void?zero(void);
interrupt?void?cpu_timer0_isr(void);//速度計算
interrupt?void?cap_Velocity0(void);?//轉速的估算
interrupt?void?cap_Velocity1(void);//鑒相器正向加
interrupt?void?cap_Velocity2(void);//鑒相器反向減
#define?Start1?GpioDataRegs.GPASET.bit.GPIO10
#define?Start0?GpioDataRegs.GPACLEAR.bit.GPIO10
#define?Start2_1?GpioDataRegs.GPASET.bit.GPIO12
#define?Start2_0?GpioDataRegs.GPACLEAR.bit.GPIO12
#define?reset1?GpioDataRegs.GPASET.bit.GPIO7
#define?reset0?GpioDataRegs.GPACLEAR.bit.GPIO7
#define?Reset1?GpioDataRegs.GPASET.bit.GPIO11
#define?Reset0?GpioDataRegs.GPACLEAR.bit.GPIO11
Uint32?ij?DutyFine?nupdate;
Uint32?duty_2duty_1duty_3;
Uint32?period=20000;
Uint32?cankao_T=50000;//參考頻率為2.5khz對應轉速等于T*8
Uint32??qudong_T=3000;//驅動頻率為50Khz
Uint32?temp;
Uint32?v1=0v2=0v3=0;
Uint32?counter=0;
int?????flag=0;
_iq??KPKIKDKP1KI1KD1KP2KI2KD2;
_iq?kpkikd;
_iq?Error=0vError=0Error1=0Error2=0hvError=0hError1=0hError2=0;
_iq?vError1=0Error1_1=0Error2_1=0hvError_1=0hError1_1=0hError2_1=0;
_iq?vError2=0Error1_2=0Error2_2=0hvError_2=0hError1_2=0hError2_2=0;
_iq?aError=0rError=0;
_iq?aError1=0rError1=0;
_iq?aError2=0rError2=0;
_iq?velocity=0velocity1=0velocity2=0velocity3=0velocity4=0cankao;
_iq?result=0result_hv=0;
_iq?result1=0result2=0;
_iq?duty_v_iq=2900duty_hv_iq=100;
Uint32?duty_v=2900duty_hv=100;
Uint16?jia1jia2jia3;
void??main(void)
{
???????InitSysCtrl();
???????DINT;
???????InitPieCtrl();
???????IER?=?0x0000;
???????IFR?=?0x0000;
???????InitPieVectTable();
???????//初始化Gpio
???????EPwmGpio();
???????CapGpio();
???????Gpio();
???????HRPWM1_Config(period);???????//?ePWM1?target?15?MHz?PWM?(SYSCLK=150MHz)?or?10?MHz?PWM?(SYSCLK=100MHz)
???????HRPWM2_Config(period);???????//?ePWM2?target?7.5?MHz?PWM?(SYSCLK=150MHz)?or?5?MHz?PWM?(SYSCLK=100MHz)
???????HRPWM3_Config(period);
???????HRPWM5_Config(qudong_T);???????//?驅動信號
???????HRPWM4_Config();
?????????//?HRPWM4_Config(cankao_T);???????//?參考信號
???????start();
???????PIDintial();
???????EALLOW;
???????SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC?=?0;//PWM模塊時基時鐘同步使能禁止
???????SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK=1;//使能系統時鐘為CAP3提供基準
???????SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK=1;//使能系統時鐘為CAP5提供基準
???????SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK=1;//使能系統時鐘為CAP6提供基準
???????EDIS;
???????EALLOW;??//?This?is?needed?to?write?to?EALLOW?protected?registers
???????PieVectTable.TINT0?=?&cpu_timer0_isr;
???????PieVectTable.ECAP5_INT?=?&cap_Velocity0;
???????PieVectTable.ECAP6_INT?=?&cap_Velocity1;
?
- 上一篇:Solomon標準數據全部的
- 下一篇:可編程機器人,一個FLASH小游戲
評論
共有 條評論