dsp30´úÂë

;

; ¿ªÊ¼Ê±£º±ØÐëµ÷Óà InitMeasCompCurr¡£

; ½øÈëʱ£º MeasCurrParm½á¹¹±ØÐë°üº¬ qKaºÍ qKb¡£ ; ADCͨµÀ 1ºÍ 2±ØÐë°üÀ¨ÓзûºÅСÊýÖµ¡£ ; Í˳öʱ£º ParkParm½«°üº¬ qIaºÍ qIb¡£ ;

;²ÎÊý£º

;ÊäÈë²ÎÊý£º ;ÎÞ

;·µ»ØÖµ£º ; Void

;ËùÐèµÄ SFRÉ趨£º ; CORCON.SATA = 0

;Èç¹ûÀÛ¼ÓÆ÷¿ÉÄÜÒç³ö£¬±ØÐëÉ趨£º ; CORCON.SATDW = 1 ;

;ËùÐèµÄÖ§³Ö×Ó³ÌÐò£º ;ÎÞ

;¾Ö²¿¶ÑջʹÓ㺠;ÎÞ

;Ð޸ĵļĴæÆ÷£º ; w0,w1,w4,w5 ;Ö´ÐÐʱ¼ä£º ; 29¸öÖÜÆÚ

;*******************************************************************

global _MeasCompCurr global MeasCompCurr

_MeasCompCurr: MeasCompCurr:

;; CorrADC1 = ADCBUF1 - iOffsetHa/2^16

;; qIa = 2 * qKa * CorrADC1

mov.w _MeasCurrParm+ADC_iOffsetHa,w0 sub.w _ADCBUF1,WREG ; w0 = ADC - Offset clr.w w1

btsc w0,#15 setm w1

mov.w w0,w5

mov.w _MeasCurrParm+ADC_qKa,w4 mpy w4*w5,A sac A,#-1,w4

mov.w w4,_ParkParm+Park_qIa

;; iOffset += (ADC-Offset)

add _MeasCurrParm+ADC_iOffsetLa mov.w w1,w0

addc _MeasCurrParm+ADC_iOffsetHa

;; CorrADC2 = ADCBUF2 - iOffsetHb/2^16 ;; qIb = 2 * qKb * CorrADC2

mov.w _MeasCurrParm+ADC_iOffsetHb,w0

sub.w _ADCBUF2,WREG ; w0 = ADC -Offset clr.w w1 btsc w0,#15 setm w1

mov.w w0,w5

mov.w _MeasCurrParm+ADC_qKb,w4 mpy w4*w5,A sac A,#-1,w4

mov.w w4,_ParkParm+Park_qIb

;; iOffset += (ADC-Offset)

add _MeasCurrParm+ADC_iOffsetLb mov.w w1,w0

addc _MeasCurrParm+ADC_iOffsetHb

return

ClarkePark.s

;******************************************************************* ; ClarkePark ;

; ˵Ã÷£º

;¼ÆËã ClarkeºÍ Park±ä»»¡£

;¼Ù¶¨ CosºÍ SinÖµÔÚ qSinºÍ qCosÖС£ ;

; Ialpha = Ia

; Ibeta = Ia*dOneBySq3 + 2*Ib*dOneBySq3; ;ÆäÖÐ Ia+Ib+Ic = 0 ;

; Id = Ialpha*cos(Angle) + Ibeta*sin(Angle) ; Iq = -Ialpha*sin(Angle) + Ibeta*cos(Angle) ;

;¸Ã×Ó³ÌÐòͬÑùÊÊÓÃÓÚÕûÊý¶¨±êºÍ 1.15¶¨±ê¸ñʽ¡£;

; º¯ÊýÔ­ÐÍ£º ;

; void ClarkePark( void ) ;

;½øÈëʱ£º ParkParm½á¹¹±ØÐë°üº¬ qSin¡¢ qCos¡¢;Í˳öʱ£º ParkParm½«°üº¬ qIdºÍ qIq¡£ ;

; ²ÎÊý£º ;ÊäÈë²ÎÊý£º ;·µ»ØÖµ£º ; Void

;ËùÐèµÄ SFRÉ趨£º ; CORCON.SATA = 0

;Èç¹û (Ia+2*Ib)/sqrt(3)¿ÉÄܳöÏÖÒç³ö£¬±ØÐëÉ趨

; CORCON.SATDW = 1 ;

; ËùÐèµÄÖ§³Ö×Ó³ÌÐò£º ;ÎÞ

; ¾Ö²¿¶ÑջʹÓ㺠;ÎÞ

; Ð޸ĵļĴæÆ÷£º ; w3 -> w7 ; Ö´ÐÐʱ¼ä£º

qIaºÍ qIb¡£

; 20¸öÖÜÆÚ

;******************************************************************* ;

include \ ; ÍⲿÒýÓÃ

include \

; ¼Ä´æÆ÷ʹÓÃ

.equ ParmW, w3 ; Ö¸Ïò ParkParm½á¹¹µÄÖ¸Õë .equ Sq3W, w4 ; OneBySq3 .equ SinW, w4 ;Ìæ´ú Work0W .equ CosW, w5

.equ IaW, w6 ; qIaµÄ¿½±´ .equ IalphaW, w6 ; Ìæ´ú Ia .equ IbW, w7 ; qIbµÄ¿½±´

.equ IbetaW, w7 ; Óà IbetaÌæ´ú Ib ; ³£Á¿

equ OneBySq3, 0x49E7 ; 1/sqrt(3)£¬²ÉÓà 1.15¸ñʽ

;=================== ´úÂë ===================== section .text

global _ClarkePark global ClarkePark

_ClarkePark:

ClarkePark:

;; Ibeta = Ia*OneBySq3 + 2*Ib*OneBySq3;

mov.w #OneBySq3,Sq3W ; 1/sqrt(3)£¬²ÉÓà 1.15¸ñʽ mov.w _ParkParm+Park_qIa,IaW mpy Sq3W*IaW,A

mov.w _ParkParm+Park_qIb,IbW mac Sq3W*IbW,A mac Sq3W*IbW,A

mov.w _ParkParm+Park_qIa,IalphaW mov.w IalphaW,_ParkParm+Park_qIalpha sac A,IbetaW

mov.w IbetaW,_ParkParm+Park_qIbeta

;; ÒѾ­¼ÆËã Ialpha ºÍ Ibeta¡£ÏÖÔÚ½øÐÐÐýת¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)