dsp30代码 下载本文

int iRPM;

WORD iMaxLoopCnt; WORD iLoopCnt; WORD iDispLoopCnt;

/**********************************************************************/ void __attribute__((__interrupt__)) _ADCInterrupt(void); void SetupBoard( void ); bool SetupParm(void); void DoControl( void );

void Dis_RPM( BYTE bChrPosC, BYTE bChrPosR ); void DiagnosticsOutput(void);

/******************** 主函数开头 *************************/

int main ( void ) {

SetupPorts(); InitLCD();

while(1) {

uGF.Word = 0; // 清除标志

// 初始化模式

uGF.bit.OpenLoop = 1; // 以开环模式起动

// 初始化 LED pinLED1 = 0;

pinLED2 = !uGF.bit.OpenLoop; pinLED3 = 0; pinLED4 = 0;

// 初始化控制板 SetupBoard();

// 对用户指定参数进行初始化并在出错时停止

if( SetupParm() ) {

//错误

uGF.bit.RunMotor=0; return; }

// 清零 i和

PIParmD.qdSum = 0; PIParmQ.qdSum = 0; PIParmQref.qdSum = 0; iMaxLoopCnt = 0;

Wrt_S_LCD(\ Wrt_S_LCD(\ // 使能 ADC中断并开始主循环定时 IFS0bits.ADIF = 0; IEC0bits.ADIE = 1; if(!uGF.bit.RunMotor) {

// 初始化电流偏移量补偿

while(!pinButton1) //在此处等待直至按钮 1按下 {

ClrWdt();

// 开始偏移量累加 //并在等待时对电流偏移量进行累加 MeasCompCurr(); }

while(pinButton1); //当按钮 1释放时 uGF.bit.RunMotor = 1; //随后起动电机 }

//电机运行

uGF.bit.ChangeMode = 1;

// 使能电机控制 PCB上的驱动器 IC pinPWMOutputEnable_ = 0; Wrt_S_LCD(\

Wrt_S_LCD(\ //电机运行循环 while(1) {

ClrWdt();

// 如果使用 OC7和 OC8显示矢量控制变量, // 调用更新代码。 #ifdefDIAGNOSTICS DiagnosticsOutput(); #endif

// 每隔 50毫秒执行更新 LCD显示和查询按钮状态的代码。 //

if(iDispLoopCnt >= dDispLoopCnt) {

//Display RPM Dis_RPM(5,0);

// 按钮 1控制电机的起停

if(pinButton1) {

if( !uGF.bit.Btn1Pressed )

uGF.bit.Btn1Pressed = 1; } else {

if( uGF.bit.Btn1Pressed ) {

// 按钮刚被释放

uGF.bit.Btn1Pressed = 0; // 开始停止过程

uGF.bit.RunMotor = 0;

pinPWMOutputEnable_ = 1; break; } }

// 在运行时按钮 2将控制开 /闭环模式之间的切换

if(pinButton2) {

if( !uGF.bit.Btn2Pressed )

uGF.bit.Btn2Pressed = 1; }

else {

if( uGF.bit.Btn2Pressed ) {

// 按钮刚释放

uGF.bit.Btn2Pressed = 0; uGF.bit.ChangeMode = 1;

uGF.bit.OpenLoop = ! uGF.bit.OpenLoop; pinLED2 = !uGF.bit.OpenLoop; } }

//在运行时按钮 3将加倍 /减半速度或转矩给定

if(pinButton3) {

if( !uGF.bit.Btn3Pressed )

uGF.bit.Btn3Pressed = 1; LATGbits.LATG0 = 0; }

else {