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呢?