主题中讨论的其他器件: INSTASPIN-BLDC
大家好、
在 DRV8301的 Insta-PM_sensorless 例程中、写入以下代码:
//使用 EPWM1时基启用 CNT_ZERO 中断
EPwm1Regs.ETSEL.bit.inten = 1;//启用 EPWM1INT 生成
EPwm1Regs.ETSEL.bit.INTSEL = 1;//启用中断 CNT_ZERO 事件
EPwm1Regs.ETPS.bit.INTPRD = 1;//在发生第一个事件时生成中断
EPwm1Regs.ETCLR.bit.INT = 1;//启用更多中断
此时、ePWM 模块的实际波形生成模式为向上向下模式。 能否理解为每个控制周期都会触发一个中断、进入中断的时刻对应于时基模块发送一个三角载波进行复位的时刻?
在 InstaeBLDC 中、不存在这样的代码、相反、与中断设置相关的代码为:
/重新分配 ISR。
//为 TINT0重新分配 PIE 矢量以指向不同的
// isr 然后是在 DSP280x_DefaultIsr.c 中找到的 shell 例程。
//如果用户不想使用 shell ISR 例程,则执行此操作
//但希望使用自己的 ISR。
EALLOW;//需要执行此操作才能写入 EALLOW 保护的寄存器
PieVectTable。 ADCINT1 =维护 ISR(&M);
EDIS;//这是禁用对 EALLOW 保护寄存器的写入所必需的
//启用全局中断和更高优先级的实时调试事件:
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM
在此例程中、ePWM 的设置
用于 PWM 生成的 F280x 时基控制寄存器的初始化常量。
在仿真挂起、递增模式时设置计时器自由运行
预分频器1。
#define PWM_CNTL_INIT_STATE (FREE_RUN_FLAG +\
PRDLD_shadow +\
Timer_CNT_UPDN +\
HSPCLKDIV_PRESCALE_X_1 +\
CLKDIV_PRESCALE_X_1 +\
PHSDIR_CNT_UP +\
CNTLD_DISABLE) 客户指出这是 TI 的错误。 代码被写为 Timer-CNT_UPDN、但注释指出这是一种向上计数模式。
客户的问题是:在 insta-BLDC 例程中进入 ISR 的时刻是否对应于重置三角载波的时刻? 或者在其他某个时间? 这对于他控制扭矩和减少扭矩纹波非常重要。
此致、
安妮