📄 tsf_main.asm
字号:
.line 94
;>>>> svgen.d = voltage_dq.d;
LDPK _voltage_dq
BLDD _voltage_dq,#_svgen
.line 95
;>>>> svgen.q = voltage_dq.q;
BLKD #_voltage_dq+1,_svgen+1
.line 96
;>>>> svgen.calc((void *)&svgen);
LALK _svgen+0
SACL *+
LAC _svgen+5
CALA
MAR *-
.line 98
;>>>> pwm.mfunc_c1 = svgen.va;
LDPK _svgen+2
BLDD _svgen+2,#_pwm+2
.line 99
;>>>> pwm.mfunc_c2 = svgen.vb;
BLKD #_svgen+3,_pwm+3
.line 100
;>>>> pwm.mfunc_c3 = svgen.vc;
BLKD #_svgen+4,_pwm+4
.line 101
;>>>> pwm.update(&pwm);
LALK _pwm+0
SACL *+
LAC _pwm+6
CALA
MAR *-
.line 103
;>>>> ilg2_vdc.read(&ilg2_vdc);
LALK _ilg2_vdc+0
SACL *+
LDPK _ilg2_vdc+12
LAC _ilg2_vdc+12
CALA
MAR *-
.line 104
;>>>> current_abc.a = ilg2_vdc.Imeas_a;
LDPK _ilg2_vdc+2
BLDD _ilg2_vdc+2,#_current_abc
.line 105
;>>>> current_abc.b = ilg2_vdc.Imeas_b;
BLKD #_ilg2_vdc+5,_current_abc+1
.line 106
;>>>> current_abc.c = ilg2_vdc.Imeas_c;
;>>>> // observe((current_abc.a^0x8000)>>4,(current_abc.b^0x8000)>>4,(rg.rmp_out^0x8000)>>4,(sp.speed_frq^0x8000)>>4);
BLKD #_ilg2_vdc+9,_current_abc+2
.line 124
;>>>> Vbus = ilg2_vdc.Vdc_meas;
;>>>> //observe((current_dq.d^0x8000)>>4,(current_dq.q^0x8000)>>4,(current_DQ.d^0x8000)>>4,(current_DQ.q^0x8000)>>4);
;>>>> // observe( channel_0<<2, channel_1<<2, channel_2<<2,0);
BLKD #_ilg2_vdc+8,_Vbus
.line 134
;>>>> clark(¤t_abc,¤t_dq);
LALK _current_dq+0
SACL *+
LALK _current_abc+0
SACL *+
CALL _clark
SBRK 2
.line 136
;>>>> current_dqt.D = current_dq.d;
LDPK _current_dq
BLDD _current_dq,#_current_dqt
.line 137
;>>>> current_dqt.Q = current_dq.q;
;>>>> //current_dqt.theta = 0;
BLKD #_current_dq+1,_current_dqt+1
.line 142
;>>>> current_dqt.theta = cur.theta_cur_mod;
;>>>> //current_dqt.theta = rg.rmp_out;
BLKD #_cur+9,_current_dqt+2
.line 146
;>>>> park(¤t_dqt,¤t_DQ);
;>>>> //observe((current_dqt.D^0x8000)>>4,(current_dqt.Q^0x8000)>>4,(cur.theta_cur_mod^0x8000)>>4,0);
LALK _current_DQ+0
SACL *+
LALK _current_dqt+0
SACL *+
CALL _park
SBRK 2
.line 148
;>>>> volt.Mfunc_V1=svgen.va;
LDPK _svgen+2
BLDD _svgen+2,#_volt+1
.line 149
;>>>> volt.Mfunc_V2=svgen.vb;
BLKD #_svgen+3,_volt+2
.line 150
;>>>> volt.Mfunc_V3=svgen.vc;
BLKD #_svgen+4,_volt+3
.line 151
;>>>> volt.DC_bus=Vbus;
BLKD #_Vbus,_volt
.line 152
;>>>> volt.calc(&volt);
;>>>> //fe.theta_r_fe=fe.theta_r_fe-rg.rmp_out;
;>>>> //observe((fe.theta_r_fe^0x8000)>>4,(rg.rmp_out^0x8000)>>4,(current_dq.d^0x8000)>>4,(current_dq.q^0x8000)>>4);
LALK _volt+0
SACL *+
LAC _volt+9
CALA
MAR *-
.line 164
;>>>> qep1.calc(&qep1);
LALK _qep1+0
SACL *+
LDPK _qep1+9
LAC _qep1+9
CALA
MAR *-
.line 166
;>>>> sp.theta_elec = qep1.theta_elec; //qep1.theta_mech;
LDPK _qep1+6
BLDD _qep1+6,#_sp
.line 167
;>>>> sp.calc(&sp);
LALK _sp+0
SACL *+
LAC _sp+8
CALA
MAR *-
.line 169
;>>>> observe((sp.speed_frq^0x8000)>>4,(*T2CNT^0x8000),(current_DQ.q^0x8000)>>4,0);
LACK 0
SACL *+,AR0
LALK 1,15
LDPK _current_DQ+1
XOR _current_DQ+1
SACL *
RSXM
LAC * ,11,AR1
SACH *+,1,AR3
LARK AR3,29701
LALK 1,15
XOR * ,AR1
SACL *+,AR0
LALK 1,15
XOR _sp+4
SACL *
LAC * ,11,AR1
SACH *+,1
CALL _observe
SBRK 4
.line 170
;>>>> cur.i_cur_mod_D = current_DQ.d;
LDPK _current_DQ
BLDD _current_DQ,#_cur
.line 171
;>>>> cur.i_cur_mod_Q = current_DQ.q;
BLKD #_current_DQ+1,_cur+1
.line 172
;>>>> cur.spd_cur_mod = sp.speed_frq;
BLKD #_sp+4,_cur+2
.line 173
;>>>> if(cur.spd_cur_mod<0) cur.spd_cur_mod = 0; //sp.speed_frq;
SSXM
LAC _cur+2
BGEZ L26
LACK 0
SACL _cur+2
L26:
.line 174
;>>>> cur.calc(&cur);
;>>>> // observe((cur.theta_cur_mod^0x8000)>>4,0,0,0);
;>>>> //observe(qep1.theta_elec>>4,qep1.theta_mech>>4,sp.speed_frq>>4,sp.speed_rpm>>4);
;>>>> //observe((0x500^0x8000)>>4,(pid_spd.pid_fdb_reg3^0x8000)>>4,(pid_iq.pid_fdb_reg3^0x8000)>>4,(current_DQ.q^0x8000)>>4);
LALK _cur+0
SACL *+
LAC _cur+10
CALA
MAR *-
EPI0_37:
.line 182
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 888,000000000H,4
.sym _timer1_isr,_timer1_isr,32,2,0
.globl _timer1_isr
.func 891
;>>>> void timer1_isr(void)/* interrupt void timer1_isr(void)*/
******************************************************
* FUNCTION DEF : _timer1_isr
******************************************************
_timer1_isr:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
EPI0_38:
.line 3
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 893,000000000H,1
.sym _led,_led,32,2,0
.globl _led
.func 900
;>>>> void led(void)/* interrupt void timer1_isr(void)*/
******************************************************
* FUNCTION DEF : _led
******************************************************
_led:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> led_cnt++;
LDPK _led_cnt
LAC _led_cnt
ADDK 1
SACL _led_cnt
.line 4
;>>>> if(led_cnt==1000)
LAC _led_cnt
SUBK 1000
BNZ L27
.line 9
;>>>> *PFDATDIR = *PFDATDIR ^ 0x0040; //IOPF6取反,使LED变化
LARK AR3,28822
LACK 64
MAR * ,AR3
XOR *
SACL *
.line 14
;>>>> led_cnt=0;
LACK 0
SACL _led_cnt
L27:
EPI0_39:
.line 19
MAR * ,AR1
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 918,000000000H,1
.sym _observe,_observe,32,2,0
.globl _observe
.func 925
;>>>> void observe(unsigned int x0,unsigned int x1,unsigned int x2,unsigned int x3)
******************************************************
* FUNCTION DEF : _observe
******************************************************
_observe:
LF40 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR2
.sym _x0,-3+LF40,14,9,16
.sym _x1,-4+LF40,14,9,16
.sym _x2,-5+LF40,14,9,16
.sym _x3,-6+LF40,14,9,16
.line 3
;>>>> { DAC0=x0;
LARK AR2,-3+LF40
MAR *0+
OUT *-,08018h
.line 4
;>>>> DAC1=x1;
OUT *-,08019h
.line 5
;>>>> DAC2=x2;
OUT *-,0801ah
.line 6
;>>>> DAC3=x3;
OUT * ,0801bh,AR0
.line 7
;>>>> DAOUT=3;/*start DAC*/
LACK 3
SACL *
OUT * ,08020h,AR1
EPI0_40:
.line 8
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 932,000000000H,1
.sym _delay,_delay,32,2,0
.globl _delay
.func 936
;>>>> void delay(void)
;>>>> { int i;
******************************************************
* FUNCTION DEF : _delay
******************************************************
_delay:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,2
LAR AR0,*0+,AR2
.sym _i,1,4,1,16
.line 3
;>>>> for(i=1;i<5000;i++)
LACK 1
LARK AR2,1
MAR *0+
SACL *
SSXM
LAC *
SUBK 5000
BGEZ L29
L28:
.line 4
;>>>> { asm(" NOP");
NOP
.line 3
LAC *
ADDK 1
SACL *
LAC *
SUBK 5000
BLZ L28
L29:
EPI0_41:
.line 6
MAR * ,AR1
SBRK 3
LAR AR0,*-
PSHD *
RET
.endfunc 941,000000000H,2
.sym _sysinit,_sysinit,32,2,0
.globl _sysinit
.func 943
;>>>> void sysinit(void)
******************************************************
* FUNCTION DEF : _sysinit
******************************************************
_sysinit:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 2
;>>>> {*IMR = 0x0000;
LARK AR3,4
LACK 0
SACL *
.line 5
;>>>> *SCSR1 = 0x00FD;
LARK AR4,28696
ADRK 249
MAR * ,AR4
SAR AR3,*+
.line 21
;>>>> *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
LACK 11
OR *
ANDK 15
SACL * ,AR3
.line 32
;>>>> *WDCR = 0x00E8;
SBRK 21
MAR * ,AR4
ADRK 16
SAR AR3,* ,AR3
.line 42
;>>>> WSGR = 0x0000;
SBRK 232
MAR * ,AR0
SAR AR3,*
OUT * ,0ffffh
.line 43
;>>>> asm(" NOP");
NOP
.line 44
;>>>> WSGR = 0x0040;
MAR * ,AR3
ADRK 64
MAR * ,AR0
SAR AR3,*
OUT * ,0ffffh,AR3
.line 45
;>>>> WSGR=0x0100;
;>>>> // *MCRA = 0x0FC0; /* group A pins */
ADRK 192
MAR * ,AR0
SAR AR3,*
OUT * ,0ffffh,AR4
.line 56
;>>>> *MCRA = 0x0540;
;>>>> // *MCRA = 0x0000;
ADRK 103
SPLK #1344,*
.line 78
;>>>> *MCRB = 0xFE00; /* group B pins */
ADRK 2
SPLK #65024,*
.line 97
;>>>> *MCRC = 0x0000; /* group C pins */
LACK 0
ADRK 2
SACL * ,AR5
.line 122
;>>>> *T1CON = 0x0000; /* disable timer 1 */
LARK AR5,29700
SACL *
.line 123
;>>>> *T2CON = 0x0000; /* disable timer 2 */
ADRK 4
SACL * ,AR3
.line 125
;>>>> *GPTCONA = 0x0080; /* configure GPTCONA */ //timer 1 下溢启动AD
SBRK 128
MAR * ,AR5
SBRK 8
SAR AR3,*+
.line 145
;>>>> *T1CNT = 0x0000; /* clear timer counter */
SACL *
.line 146
;>>>> *T1PR = timer1_per; /* set timer period 750*/// 4000
;>>>> //*DBTCONA = 0x0FE4; /* deadband units off */
ADRK 2
SPLK #4000,*
.line 166
;>>>> *CMPR1 = 0;/*pwm_duty;*/ /* set PWM1 duty cycle 563*/
ADRK 20
SACL *+
.line 167
;>>>> *CMPR2 = 0;/*pwm_duty;*/
SACL *+
.line 168
;>>>> *CMPR3 = 0;/*pwm_duty;*/
;>>>> //*ACTRA =0xA888; /* PWM1 pin set active high */
;>>>> //*ACTRA=0x0666;
SACL *
.line 171
;>>>> *ACTRA=0xA555;
;>>>> //*ACTRA=0x0000;
;>>>> //*ACTRA=0x0FFF;
SBRK 6
SPLK #42325,*
.line 185
;>>>> *COMCONA = 0x8200; /* configure COMCON register */
SBRK 2
SPLK #33280,*
.line 206
;>>>> *T1CON = 0x0840; /* configure T1CON register */
SBRK 13
SPLK #2112,*+
.line 239
;>>>> *T2CNT = 0x0000; /* clear timer counter */
;>>>> //*T2PR = timer2_per; /* set timer period */
;>>>> //*T2CON = 0x124C; /* configure T2CON register */
;>>>> // *IMR = 0x0000; /* clear the IMR register */
SACL * ,AR3
.line 259
;>>>> *IFR = 0xFFFF;
SBRK 122
SPLK #65535,*
.line 260
;>>>> *IMR = 0x0002; /* enable desired core interruptsINT2 */
LACK 2
SBRK 2
SACL * ,AR5
.line 273
;>>>> *EVAIFRA = 0xFFFF; /* clear all EVA group A interrupts */
ADRK 42
SPLK #65535,*+
.line 292
;>>>> *EVAIFRB = 0xFFFF; /* clear all EVA group B interrupts */
SPLK #65535,*+
.line 311
;>>>> *EVAIFRC = 0xFFFF; /* clear all EVA group C interrupts */
SPLK #65535,*
.line 312
;>>>> *EVAIMRA = 0x0200; /* enable desired EVA group A interrupts */
SBRK 5
SPLK #512,* ,AR3
.line 328
;>>>> *EVAIMRB = 0x0000; /* enable desired EVA group B interrupts */
SBRK 4
MAR * ,AR5
MAR *+
SAR AR3,*+
.line 341
;>>>> *EVAIMRC = 0x0000; /* enable desired EVA group C interrupts */
SAR AR3,*
.line 354
;>>>> *GPTCONA = *GPTCONA|0x0080;
LACK 128
SBRK 46
OR *
SACL * ,AR4
.line 376
;>>>> *ADCTRL1=0x4000; /*reset ADC */
ADRK 12
SPLK #16384,*
.line 377
;>>>> asm("NOP");
NOP
.line 379
;>>>> *ADCTRL1=0x0010;
MAR * ,AR3
ADRK 16
MAR * ,AR4
SAR AR3,*+
.line 394
;>>>> *ADCTRL2=0x8100;
SPLK #33024,*+,AR3
.line 411
;>>>> *MAX_CONV=0x000f; /* Number of conversions=4*/
MAR *-,AR4
SAR AR3,*+
.line 412
;>>>> *CHSELSEQ1=0x3210;
SPLK #12816,*+
.line 413
;>>>> *CHSELSEQ2=0x7654;
SPLK #30292,*+
.line 414
;>>>> *CHSELSEQ3=0xBA98;
SPLK #47768,*+
.line 415
;>>>> *CHSELSEQ4=0xFEDC;
SPLK #65244,*
.line 420
;>>>> *PFDATDIR = *PFDATDIR | 0x4000; //IOPF6输出有效
LACK 16384
SBRK 16
OR *
SACL *
.line 421
;>>>> *PADATDIR=*PADATDIR|0x8080;
LACK 32896
ADRK 2
OR *
SACL *
.line 422
;>>>> *PBDATDIR=*PBDATDIR|0x5A5A;
LACK 23130
ADRK 2
OR *
SACL *
.line 423
;>>>> *PBDATDIR=*PBDATDIR&0x5FFF;
LACK 24575
AND *
SACL *
.line 424
;>>>> *PEDATDIR=*PEDATDIR|0xFEFE;
LACK 65278
SBRK 5
OR *
SACL *+
.line 425
;>>>> *PFDATDIR=*PFDATDIR|0x1111;
LACK 4369
OR *
SACL *
.line 426
;>>>> *PFDATDIR=*PFDATDIR&0xD1FF;
LACK 53759
AND *
SACL *
.line 427
;>>>> *PADATDIR=*PADATDIR|0xFFFF; //test
LACK 65535
ADRK 2
OR *
SACL *
.line 428
;>>>> *PADATDIR=*PADATDIR|0x2000; //cap3
LACK 8192
OR *
SACL *
.line 429
;>>>> asm(" setc INTM ");
setc INTM
.line 430
;>>>> EnDrive();
;>>>> // DisDrive();
CALL _EnDrive,AR1
.line 432
;>>>> GndCeptRes();
;>>>> //UpJzgEn();
CALL _GndCeptRes
.line 434
;>>>> UpJzgEn();
CALL _UpJzgEn
.line 435
;>>>> UpJcqEn();
CALL _UpJcqEn
EPI0_42:
.line 438
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 1380,000000000H,1
.sym _current_dqt,_current_dqt,8,2,48,.fake19
.globl _current_dqt
.sym _voltage_dq,_voltage_dq,8,2,32,.fake18
.globl _voltage_dq
.sym _current_dq,_current_dq,8,2,32,.fake18
.globl _current_dq
.sym _current_abc,_current_abc,8,2,48,.fake17
.globl _current_abc
.sym _current_DQ,_current_DQ,8,2,32,.fake18
.globl _current_DQ
.sym _Vbus,_Vbus,4,2,16
.globl _Vbus
.sym _voltage_DQt,_voltage_DQt,8,2,48,.fake19
.globl _voltage_DQt
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global I$$SAVE
.global I$$REST
.global _ipark
.global _clark
.global _park
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -