在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)就没有执行啊?