AN908
DS00908A-page 70
2004 Microchip Technology Inc.
jCalcRef10:
;; Test Vr3
cp0
Vr3W
bra
LT,jCalcRef15
; Vr3W < 0
;; Sector 5: (1,0,1) 120-180 degrees
;; T1 = Vr1
;; T2 = Vr3
mov.w
Vr1W,T2W
mov.w
Vr3W,T1W
rcall
CalcTimes
;; dPWM1 = Tc
;; dPWM2 = Ta
;; dPWM3 = Tb
mov.w
TcW,dPWM1
mov.w
TaW,dPWM2
mov.w
TbW,dPWM3
return
jCalcRef15:
;; Sector 1: (0,0,1) 60-120 degrees
;; T1 = -Vr2
;; T2 = -Vr3
neg.w
Vr2W,T2W
neg.w
Vr3W,T1W
rcall
CalcTimes
;; dPWM1 = Tb
;; dPWM2 = Ta
;; dPWM3 = Tc
mov.w
TbW,dPWM1
mov.w
TaW,dPWM2
mov.w
TcW,dPWM3
return
jCalcRef20:
;; Test Vr2
cp0
Vr2W
bra
LT,jCalcRef30
; Vr2W < 0
;; Test Vr3
cp0
Vr3W
bra
LT,jCalcRef25
; Vr3W < 0
;; Sector 6: (1,1,0) 240-300 degrees
;; T1 = Vr3
;; T2 = Vr2
mov.w
Vr3W,T2W
mov.w
Vr2W,T1W
rcall
CalcTimes
;; dPWM1 = Tb
;; dPWM2 = Tc
;; dPWM3 = Ta
mov.w
TbW,dPWM1
mov.w
TcW,dPWM2
mov.w
TaW,dPWM3
return
jCalcRef25:
;; Sector 2: (0,1,0) 300-360 degrees
;; T1 = -Vr3
;; T2 = -Vr1
neg.w
Vr3W,T2W
neg.w
Vr1W,T1W
rcall
CalcTimes
;; dPWM1 = Ta
;; dPWM2 = Tc
;; dPWM3 = Tb
mov.w
TaW,dPWM1