主题中讨论的其他部件:TMDSHVRESLLCKIT
您好,
我的客户正在测试主板TMDSHVRESLLCKIT。
PWMDRV_LLC_1CH_UpCntDB_Comp.ASM代码如下所示:
===========================================
PWMDRV_LLC_1CH_UpCntDB_Compl宏
===========================================
MOVW DP,#_PWMDRR_LLC_1CH_UpCntDB_Compl_Duty2;为Net Pointer加载DP
MOVL XAR0,@_PWMDRV_LLC_1CH_UptDB_Compl_Duty2;将Net指针地址加载到XAR0
MOVL XAR1,@_PWMDRV_LLC_1CH_UpCntDB_Compl_Period2;将Net指针地址加载到XAR1
MOVL ACC,* XAR1
SFR ACC,#14; ACC>>14: AL =周期(Q10)
MOVW DP,#_EPwm2Regs.TBPRD
MOV @_EPwm2Regs.TBPRD,AL;更新周期寄存器
MOVL XT,@_EPwm2Regs.TBPRD;注意这里是MOVL指令,即XT = TBPRD<16.
QMPYL ACC,XT,*XAR0;ACC =(I16Q16)*(I8Q24)=(I24Q40):高32位-> ACC =(I24Q8)
SFR ACC,#8; ACC>> 8: AL =值班*期间(Q16)
Sub @T,AL;T = Period - Duty*Period
MOVW DP,#_EPwm2Regs.CMPA
MOV @_EPwm2Regs.CMPA.Half.CMPA,T;更新CMPA
ROR ACC;AL =值班*期间/2
Sub ACC,#13;补偿第一个样本错误
添加@T,AL
MOVW DP,#_EPwm2Regs.CMBB
MOV @_EPwm2Regs.CMBB,T;更新CMBB =占空比中点
MOVL ACC,* XAR1
SFR ACC,#14; ACC>>14: AL =周期(Q10)
MOVW DP,#_EPwm2Regs.DBFED
Sub AL,@_EPwm2Regs.DBFED;使用FED值创建下降边距(前下降边)
MOVW DP,#_EPwm2Regs.TBPRD
MOV @_EPwm2Regs.TBPRD,AL;更新周期寄存器(使用FEM)
{\f2 .endm}
问题是:
1.为什么在写入EPwm2Regs.TBPRD等寄存器时没有"EALLOW" ? 使用3.3 一步完成后 ,EPwm2Regs.TBPRD不会更新
2.“CMPB= 0.5 *周期*责任-13+Period-Duty*周期=Period-CMP* 0.5 周期*责任-13”,评论中说,第1个样本错误的13个是补偿的,什么是样本错误,为什么是13个?