📄 sp_rv_pr.lst
字号:
dspa -q -l -s -i../../../rtmon -i../../../sys/bldc3_2/asm -i..\..\..\rtmon -i..\..\..\sys\bldc3_2\asm -v2xx -iC:/ti/c2400/cgtools/include -g sp_rv_pr.asm sp_rv_pr.obj
TMS320C24xx COFF Assembler Version 7.02 Sun Apr 27 20:34:15 2003
Copyright (c) 1987-2002 Texas Instruments Incorporated
sp_rv_pr.asm PAGE 1
1 ;===========================================================================
2 ; File Name: Sp_rv_pr.asm
3 ;
4 ; Module Name: SPEED_REV_PRD
5 ;
6 ; Initialization Routine: SPEED_REV_PRD_INIT
7 ;
8 ; Originator: Digital Control Systems Group
9 ; Texas Instruments
10 ;
11 ; Description: This module calculates the motor speed based on a signal's
12 ; period measurement. Such a signal, for which the period is
13 ; measured, can be the periodic output pulses from a motor
14 ; speed sensor.
15 ;
16 ; |~~~~~~~~~~~~~~~~~|
17 ; | |----->o speed_prd
18 ; event_period o------>| SPEED_REV_PRD |
19 ; | |----->o speed_rpm
20 ; |_________________|
21 ;
22 ;
23 ;
24 ;=====================================================================================
25 ; History:
26 ;-------------------------------------------------------------------------------------
27 ; 9-15-2000 Release Rev 1.0
28 ;===========================================================================
29 ;(To use this Module, copy this section to main system file)
30 ; .ref SPEED_REV_PRD, SPEED_REV_PRD_INIT ;function call
31 ; .ref event_period ;Input
32 ; .ref rpm_max, speed_scaler,shift ;parameter
33 ; .ref speed_prd, speed_rpm ;Outputs
34 ;===========================================================================
35 ;Module definitions for external reference.
36 .def SPEED_REV_PRD, SPEED_REV_PRD_INIT ;function call
37 .def event_period ;Input
38 .def rpm_max, speed_scaler,shift ;parameter
39 .def speed_prd, speed_rpm ;Outputs
40 ;===========================================================================
41 .include x24x_app.h
42
43 ;For 4 pole motor,40kHz sampling loop and Normalization speed = 15000 RPM
44 ;--------------------------------------------------------------------------------
45 0050 SPEED_SCALER_ .set 80 ;Scaling constant(see related document for details)
46 3a98 RPM_MAX_ .set 15000 ;Max RPM value. Base RPM for normalization.
47 0005 SHIFT_ .set 5 ;Shift parameter for max accuracy of 32bit/16bit division
48
49 ;For 4 pole motor,40kHz sampling loop and Normalization speed = 10000 RPM
50 ;--------------------------------------------------------------------------------
51 ;SPEED_SCALER_ .set 120 ;Scaling constant(see related document for details)
52 ;RPM_MAX_ .set 10000 ;Max RPM value. Base RPM for normalization.
53 ;SHIFT_ .set 5 ;Shift parameter for max accuracy of 32bit/16bit division
54
TMS320C24xx COFF Assembler Version 7.02 Sun Apr 27 20:34:15 2003
Copyright (c) 1987-2002 Texas Instruments Incorporated
sp_rv_pr.asm PAGE 2
55 ;For 4 pole motor,40kHz sampling loop and Normalization speed = 6000 RPM
56 ;--------------------------------------------------------------------------------
57 ;SPEED_SCALER_ .set 200 ;Scaling constant(see related document for details)
58 ;RPM_MAX_ .set 6000 ;Max RPM value. Base RPM for normalization.
59 ;SHIFT_ .set 6 ;Shift parameter for max accuracy of 32bit/16bit division
60
61
62 ;For 4 pole motor,20kHz sampling loop and Normalization speed = 6000 RPM
63 ;--------------------------------------------------------------------------------
64 ;SPEED_SCALER_ .set 100 ;Scaling constant(see related document for details)
65 ;RPM_MAX_ .set 6000 ;Max RPM value. Base RPM for normalization.
66 ;SHIFT_ .set 5 ;Shift parameter for max accuracy of 32bit/16bit division
67
68
69 000e SHIFT_TOTAL .set 14 ;Total shift
70
71
72 0000 event_period .usect "spdrvprd" ,1
73 0001 speed_hi .usect "spdrvprd" ,1
74 0002 speed_lo .usect "spdrvprd" ,1
75 0003 speed_prd_max .usect "spdrvprd" ,1
76 0004 speed_prd .usect "spdrvprd" ,1
77 0005 speed_rpm .usect "spdrvprd" ,1
78 0006 speed_scaler .usect "spdrvprd" ,1
79 0007 rpm_max .usect "spdrvprd" ,1
80 0008 shift .usect "spdrvprd" ,1
81 0009 shift2 .usect "spdrvprd" ,1
82
83
84
85 0000 SPEED_REV_PRD_INIT:
86 0000 bc00- LDP #rpm_max
87 0001 ae07- SPLK #RPM_MAX_, rpm_max ;Q0
0002 3a98
88 0003 ae06- SPLK #SPEED_SCALER_, speed_scaler ;Q0
0004 0050
89 0005 ae08- SPLK #SHIFT_, shift ;Q0
0006 0005
90 0007 ef00 RET
91
92
93 0008 SPEED_REV_PRD:
94 0008 bc00- LDP #rpm_max
95 0009 be46 CLRC SXM
96
97
98 ;Calculate Speed, i.e. speed = 1/period
99 ;Numerator (i.e. 1) is treated as a Q31 value, speed in Q31(=Q31/Q0)
100 ;Phase 1
101
102 000a bf80 CALC_SPEED: LACC #07FFFh ;Load Numerator Hi
000b 7fff
103 000c bb0f RPT #15
104 000d 0a00- SUBC event_period
TMS320C24xx COFF Assembler Version 7.02 Sun Apr 27 20:34:15 2003
Copyright (c) 1987-2002 Texas Instruments Incorporated
sp_rv_pr.asm PAGE 3
105 000e 9001- SACL speed_hi
106 000f 6c01- XOR speed_hi
107 0010 bfc0 OR #0FFFFh ;Load Numerator Lo
0011 ffff
108 ;Phase 2
109 0012 bb0f RPT #15
110 0013 0a00- SUBC event_period
111 0014 9002- SACL speed_lo
112
113
114 0015 1002- LACC speed_lo
115 0016 6101- ADDH speed_hi ;Result in ACC is in Q31(32 bit) format
116
117 0017 0b08- rpt shift ;The following Q numbers are for shift=6.
118 ;For other values of shift these will
119 ;change accordingly.
120 0018 be09 SFL ;Q38
121 0019 9803- SACH speed_prd_max ;Q22
122
123 001a bf80 LACC #SHIFT_TOTAL
001b 000e
124 001c 3008- SUB shift
125 001d 9009- SACL shift2 ;shift2=14-shift
126
127 001e bf00 SPM 0
128 001f 7303- LT speed_prd_max ;Q22
129 0020 5406- MPY speed_scaler ;Q0*Q22
130 0021 be03 PAC ;Q22, 32 bit format
131 0022 0b09- RPT shift2 ;shift2=14-shift
132 0023 be09 SFL ;Q31,32 bit format
133 0024 9804- SACH speed_prd ;Q15, speed_prd = speed_scaler*speed_prd_max
134
135
136 ;Scale to Q0 for direct RPM display
137
138 0025 7304- LT speed_prd ;Q15
139 0026 5407- MPY rpm_max ;Q0*Q15
140 0027 be03 PAC ;Q15, 32 bit format
141 0028 9905- SACH speed_rpm,1 ;Q0
142
143 0029 ef00 MSP_EXIT RET
No Errors, No Warnings
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -