📄 i_get.asm
字号:
;=====================================================================
; File name : i_GET.asm
; Module Name : i_GET
; Initialization Routine: i_GET_INIT
; Description : 从电流传感器采样并转换成两相静止坐标系(alfa,beta)下的值。
; 并且读出速度给定值(转换成7FFFH/mS格式)
;=====================================================================
.include "f2407.h"
.global i_GET,i_GET_INIT ;function call
.global PROTECT
.global IA0,IB0,IA1,IB1,IA2,IB2 ;output(Q12)
.global Omiga_ref ;output
.global TEMP,TEMP1
;=====================================================================
i_GET_INIT:
;=====================================================================
LDP #DP_PF2
SPLK #4000H,ADCTRL1 ;RESET ADC
SPLK #02H,MAX_CONV ;02H表示有3个转换!!!!
SPLK #210H,CHSELSEQ1 ;次序对转换结果很有影响,021或012次序时2通道读数误差较大。
SPLK #0010100100000000B,ADCTRL1 ;仿真悬挂时ADC完成转换后停止,启停模式。
SPLK #0100H,ADCTRL2
RET
;=====================================================================
i_GET:
;=====================================================================
SPM 0
CLRC SXM ;ADRESULT左移时不产生符号扩展
;-----------------------------------------------------------
; IA0 = ( AD_RESULT - 1FFH (实际测量时调整) ) * 44H
CLRC SXM
LDP #DP_PF2
LACC RESULT2,10 ;读通道2的值iA,这里结果左对齐。所以要左移10位移到ACC高16位。
SETC SXM
LDP #DP_DATA ;用户定义的数据页
; SACH IA0
SACH TEMP
LACL TEMP
SUB #1ACH ;按传感器在0输出时调整。
; SACL IA0
SACL TEMP
LT TEMP
MPY #44H
SPL IA0 ;存入IA0,注意当RESULT1=400H时会溢出,结果为8000H。所以应该避免,这里电流不会到满量程。
;-----------------------------------------------------------
CLRC SXM
LDP #DP_PF2
LACC RESULT1,10 ;读通道1的值iB
SETC SXM
LDP #DP_DATA
; SACH IB0
SACH TEMP
LACL TEMP
SUB #1ECH ;按传感器在0输出时调整。
; SACL IB0
SACL TEMP
LT TEMP
MPY #44H ;稍微修正了一下。
SPL IB0 ;存入IB0
;-----------------------------------------------------------
; Omiga_in = AD_RESULT * 4 / 5 =AD_RESULT * 4 * 0.2
GET_Omiga: CLRC SXM
LDP #DP_PF2
LACC RESULT0,12 ;读通道0的值Omiga_in*4
LDP #DP_DATA
SACH TEMP
LT TEMP
SPLK #6346,TEMP1 ;0.2(Q15)
MPY TEMP1
SPM 1
SPH Omiga_ref ;存入Omiga_ref
; SPLK #300,Omiga_ref
LACC Omiga_ref
SUB #30
BCND ENDGET,GT
CALL PROTECT
;-----------------------------------------------------------
ENDGET:
LDP #DP_PF2
LACL ADCTRL2
SACL ADCTRL2 ;清中断标志位
SPM 0
SETC SXM
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -