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

COMPA COMPB的关系

CPU:TMS320F28027,使用launchpad进行实验。

下面的汇编语言代码来自controlsuite,为什么COMPA COMPB是这样的关系呢?

PWM是互补输出。

MOVW DP,#_EPwm:n:Regs.CMPA
MOV @_EPwm:n:Regs.CMPA.half.CMPA,AL
ROR ACC
MOV @_EPwm:n:Regs.CMPB,AL

;=============================
PWMDRV_ComplPairDB .macro n
;=============================
MOVW DP, #_PWMDRV_ComplPairDB_Duty:n: ; load DP for net pointer
MOVL XAR0, @_PWMDRV_ComplPairDB_Duty:n: ; Load net pointer address to XAR0
MOVL XT,@_PWMDRV_ComplPairDB_Period:n:
QMPYL ACC,XT,*XAR0 ; ACC= (I8Q24) * (I16Q16) = (I24Q40): upper 32-bits -> ACC = (I24Q8) SFR ACC,#8 ; ACC>>8: AL = duty
MOVW DP,#_EPwm:n:Regs.CMPA
MOV @_EPwm:n:Regs.CMPA.half.CMPA,AL
ROR ACC
MOV @_EPwm:n:Regs.CMPB,AL
.endm

Martin Yu:

问下是controlsuite中的哪个例程?

CPU:TMS320F28027,使用launchpad进行实验。

下面的汇编语言代码来自controlsuite,为什么COMPA COMPB是这样的关系呢?

PWM是互补输出。

MOVW DP,#_EPwm:n:Regs.CMPA
MOV @_EPwm:n:Regs.CMPA.half.CMPA,AL
ROR ACC
MOV @_EPwm:n:Regs.CMPB,AL

;=============================
PWMDRV_ComplPairDB .macro n
;=============================
MOVW DP, #_PWMDRV_ComplPairDB_Duty:n: ; load DP for net pointer
MOVL XAR0, @_PWMDRV_ComplPairDB_Duty:n: ; Load net pointer address to XAR0
MOVL XT,@_PWMDRV_ComplPairDB_Period:n:
QMPYL ACC,XT,*XAR0 ; ACC= (I8Q24) * (I16Q16) = (I24Q40): upper 32-bits -> ACC = (I24Q8) SFR ACC,#8 ; ACC>>8: AL = duty
MOVW DP,#_EPwm:n:Regs.CMPA
MOV @_EPwm:n:Regs.CMPA.half.CMPA,AL
ROR ACC
MOV @_EPwm:n:Regs.CMPB,AL
.endm

user4315565:

回复 Martin Yu:

地址是:

D:\ti\controlSUITE\libs\app_libs\digital_power\f2802x_v3.4\asm_macros

PWMDRV_LLC_ComplPairDB

配置成互补输出,为什么CMPA右移就变成COMPB呢?

赞(0)
未经允许不得转载:TI中文支持网 » COMPA COMPB的关系
分享到: 更多 (0)