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

InstaSPIN FOC算法在中断函数里面关闭电机和在主循环里面关闭电机的区别

平台:利用drv8301 revd驱动板,Lab 10a驱动无刷电机

第一种关闭方法:我在lab 10a.c 文件中的中断函数interrupt void mainISR(void){}里面关闭电机,关闭语句为:gMotorVars.Flag_enableSys=0和gMotorVars.Flag_enableSys = 0。我是把电机关闭函数放在中断函数的最底端,就是把电机关闭函数放在CTRL_setup(ctrlhandle);和return;之间,运行FOC的代码在电机关闭函数的上面,执行完这两条语句后,电机其实还没真正关掉,那么电机是怎么关掉的?也就是电机具体是执行到程序哪一条语句才真正关闭?(是不是执行HAL_disablePwm(halHandle);后才真正关闭电机如果是,程序是怎么运行到这里的?)

第二种关闭方法:我在lab 10a.c 文件中的主循环while(gMotorVars.Flag_enableSys){}里面关闭电机,关闭语句为:gMotorVars.Flag_enableSys=0和gMotorVars.Flag_enableSys = 0。执行完这两条语句后,电机其实还没真正关掉,那么电机是怎么关掉的?也就是电机具体是执行到程序哪一条语句才真正关闭?(是不是执行HAL_disablePwm(halHandle);后才真正关闭电机,如果是,程序是怎么运行到这里的?)

现象:

1. 如果在中断函数interrupt void mainISR(void){}里面关闭电机,电机在关闭的过程中会有一个制动力产生,我明显感觉电机在关闭的过程中产生的扭矩在缓慢减小,直至为零,这也是我目前需要的效果。可是我不知道在中断函数里面为什么会产生这种现象?从中断函数里面执行gMotorVars.Flag_enableSys=0和gMotorVars.Flag_enableSys = 0语句到最终执行关闭电机HAL_disablePwm(halHandle);语句之间到底发生了什么?

2. 如果在lab 10a.c 文件中的主循环while(gMotorVars.Flag_enableSys){}里面关闭电机,电机没有制动力产生,电机的扭矩立刻变为零,这是为什么?

Igor An:

请参考帖子:

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/120590.aspx

赞(0)
未经允许不得转载:TI中文支持网 » InstaSPIN FOC算法在中断函数里面关闭电机和在主循环里面关闭电机的区别
分享到: 更多 (0)