![Microchip Technology AN908 Using Manual Download Page 42](http://html1.mh-extra.com/html/microchip-technology/an908/an908_using-manual_1785807042.webp)
AN908
DS00908A-page 42
2004 Microchip Technology Inc.
CalcRef.s
;*******************************************************************
; CalcRefVec
;
; Description:
;
Calculate the scaled reference vector, (Vr1,Vr2,Vr3), from qValpha,qVbeta.
;
The method is an modified inverse Clarke transform where Valpha & Vbeta
;
are swaped compared to the normal Inverse Clarke.
;
;
Vr1 = Vbeta
;
Vr2 = (-Vbeta/2 + sqrt(3)/2 * Valpha)
;
Vr3 = (-Vbeta/2 - sqrt(3/2) * Valpha)
;
; Functional prototype:
;
; void CalcRefVec( void )
;
; On Entry:The ParkParm structure must contain qCos, qSin, qValpha and qVbeta.
; On Exit: SVGenParm will contain qVr1, qVr2, qVr3
;
; Parameters:
;
Input arguments:
;
None
; Return:
;
Void
; SFR Settings required:
;
CORCON.SATA = 0
; Support routines required:
;
None
; Local Stack usage:
;
None
; Registers modified:
;
w0, w4, w5, w6
; Timing:
;
About 20 instruction cycles
;*******************************************************************
;
.include "general.inc"
; External references
.include "park.inc"
.include "SVGen.inc"
; Register usage
.equ WorkW,
w0
; working
.equ ValphaW,
w4
; qValpha (scaled)
.equ VbetaW,
w5
; qVbeta (scaled)
.equ ScaleW,
w6
; scaling
; Constants
.equ Sq3OV2,0x6ED9
; sqrt(3)/2 in 1.15 format
;=================== CODE =====================
.section
.text
.global
_CalcRefVec
.global
CalcRefVec
_CalcRefVec:
CalcRefVec:
;; Get qValpha, qVbeta from ParkParm structure
mov.w
PPark_qValpha,ValphaW
mov.w
_PPark_qVbeta,VbetaW
;; Put Vr1 = Vbeta
mov.w
VbetaW,_SVSVGen_qVr1
;; Load Sq(3)/2
mov.w
#Sq3OV2,ScaleW