📄 park.lst
字号:
C:\TIC2XX\C2000\CGTOOLS\BIN\DSPA.EXE -q -v2xx -gs park.asm -o ..\obj\park.obj -l ..\temp\park.lst
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:05 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
park.asm PAGE 1
1 ;=====================================================================================
2 ; File name: PARK.ASM
3 ;
4 ; Originator: Digital Control Systems Group
5 ; Texas Instruments
6 ;
7 ; Description:
8 ; This file contains source for the PARK transformation.
9 ;=====================================================================================
10 ; History:
11 ;-------------------------------------------------------------------------------------
12 ; 9-15-2000 Release Rev 1.0
13 ;================================================================================
14 ; Applicability: F240,F241,C242,F243,F24xx. (Peripheral Independant).
15 ; Description:
16 ; (d,q,theta) -> (D,Q) Transformation
17 ; park_D = Park_d*cos(theta) + Park_q*sin(theta)
18 ; park_Q = - Park_d*sin(theta) + Park_q*cos(theta)
19 ;
20 ; Precision: Defines precision of the sine calculation.
21
22 0000 High_precision .set 0
23
24 ;
25 ;================================================================================
26 ; Routine Name: Generic function. Routine Type: C Callable
27 ;
28 ; Description:
29 ;
30 ; C prototype : int park(void *in, void *out)
31 ; The elements in *in should be in the order d,q,theta.
32 ; The elements in *out will be placed in the order D,Q.
33 ;================================================================================
34 .def _park
35
36 .ref SINTAB_360
37
38
39 ;================================================================================
40
41 0002 __park_framesize .set 0002h
42 ;================================================================================
43 0000 _park:
44 0000 8aa0 POPD *+
45 0001 80a0 SAR AR0,*+
46 0002 8180 SAR AR1,*
47 0003 b002 LARK AR0,__park_framesize
48 0004 00e8 LAR AR0,*0+,AR0
49
50 ;================================================================================
51 0005 7c03 SBRK #3 ; Point AR0 to the first argument.
52 ;--------------------------------------------------------------------------------
53 0006 0290 LAR AR2,*- ; get the argument #1 in AR2.
54 ; ARP=AR0, AR2->i/p s, AR0->arg #2.
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:05 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
park.asm PAGE 2
55 ;--------------------------------------------------------------------------------
56 0007 03a0 LAR AR3,*+ ; get the argument #2 in AR3.
57 ; ARP=AR0, AR0->arg #2, AR2->i/p's, AR3->o/p's.
58 ;--------------------------------------------------------------------------------
59 0008 7803 ADRK #3 ; Restore AR0 to point to FR0.
60 ; ARP=AR0, AR0->FR0, AR2->i/p's, AR3->o/p's.
61 ;--------------------------------------------------------------------------------
62 0009 bf01 SPM 1 ; Set SPM for Q15 multiplication
63 ;--------------------------------------------------------------------------------
64 000a be47 SETC SXM ; Sign extension mode on
65 ;--------------------------------------------------------------------------------
66 000b 8b8a MAR *,AR2 ; ARP=AR2, AR0->FR0, AR2->Park_d AR3->Park_D
67 ;--------------------------------------------------------------------------------
68 000c 7802 ADRK #2 ; Point to theta.
69 ; ARP=AR2, AR0->FR0, AR2->Park_theta AR3->Park_D
70 ;--------------------------------------------------------------------------------
71 ;--- Normal precision option -------
72 .if (High_precision != 1)
73
74 000d 1088 LACC *,AR0 ; ACC=theta.
75 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
76 ;--------------------------------------------------------------------------------
77 000e bf90 ADD #8192 ;add 90 deg, i.e. COS(A)=SIN(A+90)
000f 2000
78 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
79 ;--------------------------------------------------------------------------------
80 0010 bfb0 AND #07fffh ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
0011 7fff
81 ;--------------------------------------------------------------------------------
82 0012 9080 SACL * ; Store ACC in FR0.
83 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
84 ;--------------------------------------------------------------------------------
85 0013 1980 LACC *,9 ; Load with shift to get table pointer in ACCH.
86 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
87 ;--------------------------------------------------------------------------------
88 0014 9880 SACH * ; Store table ptr in FR0
89 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
90 ;--------------------------------------------------------------------------------
91 0015 6980 LACL * ; Get table pointer in lower acc.
92 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
93 ;--------------------------------------------------------------------------------
94 0016 bfb0 AND #255 ; Ensure table pointer is 8 bit.
0017 00ff
95 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
96 ;--------------------------------------------------------------------------------
97 0018 bf90 ADD #SINTAB_360
0019 0000!
98 ; ARP=AR0, AR0->FR0, AR2->Park_theta AR3->Park_D
99 ;--------------------------------------------------------------------------------
100 001a a6aa TBLR *+,AR2 ; FR0 = COS(theta).
101 ; ARP=AR2, AR0->FR1, AR2->Park_theta AR3->Park_D
102 ;--------------------------------------------------------------------------------
103 001b 1998 LACC *-,9,AR0 ;ACCH= table_ptr (theta >> 9)
104 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:05 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
park.asm PAGE 3
105 ;--------------------------------------------------------------------------------
106 001c 9880 SACH * ; Store table ptr in FR1
107 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
108 ;--------------------------------------------------------------------------------
109 001d 6980 LACL * ; Get table pointer in lower acc.
110 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
111 ;--------------------------------------------------------------------------------
112 001e bfb0 AND #255 ; Ensure table pointer is 8 bit.
001f 00ff
113 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
114 ;--------------------------------------------------------------------------------
115 0020 bf90 ADD #SINTAB_360
0021 0000!
116 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
117 ;--------------------------------------------------------------------------------
118 0022 a680 TBLR * ; FR1 = SIN(theta).
119 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
120 .endif
121 ;-----------------------------------
122 0023 b900 ZAC ; ACC = 0
123
124 0024 739a LT *-,AR2 ; TREG = Sin(theta)
125 ; ARP=AR2, AR0->FR0, AR2->Park_q AR3->Park_D
126 ;--------------------------------------------------------------------------------
127 0025 5490 MPY *- ; PREG = sin(theta).Park_q
128 ; ARP=AR2, AR0->FR0, AR2->Park_d AR3->Park_D
129 ;--------------------------------------------------------------------------------
130 0026 70a8 LTA *+,AR0 ; TREG = Park_d
131 ; ACC = sin(theta).Park_q
132 ; ARP=AR0, AR0->FR0, AR2->Park_q AR3->Park_D
133 ;--------------------------------------------------------------------------------
134 0027 54a0 MPY *+ ; PREG = Park_d * cos(theta)
135 ; ACC = sin(theta).Park_q
136 ; ARP=AR0, AR0->FR1, AR2->Park_q AR3->Park_D
137 ;--------------------------------------------------------------------------------
138 0028 509b MPYA *-,AR3 ; ACC = Park_q.sin(theta) + Park_d * cos(theta)
139 ; PREG= Park_d.sin(theta)
140 ; ARP=AR3, AR0->FR0, AR2->Park_q AR3->Park_D
141 ;--------------------------------------------------------------------------------
142 0029 98aa SACH *+,AR2 ; Store Park_D.
143 ; PREG= Park_d.sin(theta)
144 ; ARP=AR2, AR0->FR0, AR2->Park_q AR3->Park_Q
145 ;--------------------------------------------------------------------------------
146 002a b900 ZAC ; ARP=AR2, AR0->FR0, AR2->Park_q AR3->Park_Q
147 ;--------------------------------------------------------------------------------
148 002b 7388 LT *,AR0 ; TREG = Park_q
149 ; ARP=AR0, AR0->FR0, AR2->Park_q AR3->Park_Q
150 ;--------------------------------------------------------------------------------
151 002c 518b MPYS *,AR3 ; PREG = Park_q.cos(theta).
152 ; ACC = - Park_d.sin(theta)
153 ; ARP=AR0, AR0->FR0, AR2->Park_q AR3->Park_Q
154 ;--------------------------------------------------------------------------------
155 002d be04 APAC ; ACC = - Park_d.sin(theta) + Park_q.cos(theta).
156 ; ARP=AR0, AR0->FR0, AR2->Park_q AR3->Park_Q
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:05 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
park.asm PAGE 4
157 ;--------------------------------------------------------------------------------
158 002e 9889 SACH *,AR1 ; Store Park_Q.
159
160 002f bf00 SPM 0
161 ;--------------------------------------------------------------------------------
162 0030 __park_exit:
163 0030 7c03 SBRK #(__park_framesize+1)
164 0031 0090 LAR AR0,*-
165 0032 7680 PSHD *
166 0033 ef00 RET
167
168
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -