TI中文支持网
TI专业的中文技术问题搜集分享网站

InstaSPIN-主循环的问题

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Joey Mao:

请问楼主使用的例程是哪里的?

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Zone New:

回复 Joey Mao:

Joey Mao,你好:

D:\ti\motorware\motorware_1_01_00_12\sw\solutions\instaspin_foc\boards\drv8301kit_revD\f28x\f2806xF\projects\ccs5\proj_lab02a

就是Motorware带的代码!

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Young Hu:

回复 Joey Mao:

这个地方的设置是有道理的。如果gMotorVars.Flag_enableSys设置为0,那么可以将PWM关断,将相关参数重新初始化。

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Zone New:

回复 Young Hu:

 鸵鸟蝈蝈:

for循环的最开始位置

       while(!(gMotorVars.Flag_enableSys));

 如果gMotorVars.Flag_enableSys==0,那么不是应该一直在while();这个循环里面等待吗?

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Eric Ma:

回复 Zone New:

Jesse

for循环开始的时候是有这个while,当这个变量没有置1的时候,会一直等待在这里。只有置1的时候,状态机方面才会开始执行。当这个变量置1后,就会进入下面另外一个while循环。while(gMotorVars.Flag_enableSys)

    // Waiting for enable system flag to be set    

   while(!(gMotorVars.Flag_enableSys));

    Flag_Latch_softwareUpdate = true;

    // Dis-able the Library internal PI.  Iq has no reference now    

     CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);

    // loop while the enable system flag is true    

 while(gMotorVars.Flag_enableSys)

在main主循环中:

HAL_disablePwm(halHandle);
// set the default controller parameters (Reset the control to re-identify the motor)
CTRL_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify = false;

应该说是不可能执行到的,为什么还要写在这里?

Zone New:

回复 Eric Ma:

while(!(gMotorVars.Flag_enableSys));————————(1)

while(gMotorVars.Flag_enableSys)————————(2)

{

   ……

}

HAL_disablePwm(halHandle);——————(3) CTRL_setParams(ctrlHandle,&gUserParams); gMotorVars.Flag_Run_Identify = false;

gMotorVars.Flag_enableSys=0时,一直等待在(1)行;

gMotorVars.Flag_enableSys=1时,那么执行(2)行中的状态机

(3)就没有执行啊?

赞(0)
未经允许不得转载:TI中文支持网 » InstaSPIN-主循环的问题
分享到: 更多 (0)