📄 smopos.lst
字号:
394 ;----------------------------------------------------------------------------------
395 0176 54a8 MPY *+,AR0 ; PREG = kslf*eserrhi
396 ; ARP=AR2, AR0->FR2, AR2->esbetalo, ARP=AR0
397 ;----------------------------------------------------------------------------------
398 0177 be03 PAC ; ACC = kslf*eserrhi
399 ; ARP=AR0, AR0->FR2, AR2->esbetalo
400 ;----------------------------------------------------------------------------------
401 0178 208a ADD *,AR2 ; ACC = smoptemp + kslf*eserrhi
402 ; ARP=AR0, AR0->FR2, AR2->esbetalo, ARP=AR2
403 ;----------------------------------------------------------------------------------
404 0179 6280 ADDS * ; ACC = esbeta+smoptemp+kslf*eserrhi (Q31)
405 ; ARP=AR2, AR0->FR2, AR2->esbetalo
406 ;----------------------------------------------------------------------------------
407 017a 7c0a SBRK #10 ; ARP=AR2, AR0->FR2, AR2->esbeta
408 ;----------------------------------------------------------------------------------
409 017b 6180 ADD *,16 ; ACC = esbeta+smoptemp+kslf*eserrhi (Q31)
410 ; ARP=AR2, AR0->FR2, AR2->esbeta
411 ;----------------------------------------------------------------------------------
412 017c 9880 SACH * ; esbeta = esbeta+smoptemp+kslf*eserrhi (Q31)
413 ; ARP=AR2, AR0->FR2, AR2->esbeta
414 ;----------------------------------------------------------------------------------
415 017d 780a ADRK #10 ; ARP=AR2, AR0->FR2, AR2->esbetalo
416 ;----------------------------------------------------------------------------------
417 017e 9080 SACL * ; esbeta = esbeta+smoptemp+kslf*eserrhi (Q31)
418 ; ARP=AR2, AR0->FR2, AR2->esbetalo
419 ;----------------------------------------------------------------------------------
420 ; End: Sliding control filter
421 ;----------------------------------------------------------------------------------
422 ; (4) Rotor angle calculator
423 ; thetau = atan(-esalfa,esbeta)
424 ; Note: (esalfa,esbeta)' = (3/2) Ke Omega (-sin(theta),cos(theta))'
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:27 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
smopos.asm PAGE 9
425 ;----------------------------------------------------------------------------------
426 017f RANGLE_CAL ; ARP=AR2, AR0->FR2, AR2->esbetalo
427 ;----------------------------------------------------------------------------------
428 017f 7c0a SBRK #10 ; ARP=AR2, AR0->FR2, AR2->esbeta
429 ;----------------------------------------------------------------------------------
430 ; Checking |esalfa|/|esbeta| > 1 ?
431 0180 1088 LACC *,AR0 ; ACC = esbeta (Q15)
432 ; ARP=AR2, AR0->FR2, AR2->esbeta, ARP=AR0
433 ;----------------------------------------------------------------------------------
434 0181 be00 ABS ; ACC = |esbeta| (Q15)
435 ; ARP=AR0, AR0->FR2, AR2->esbeta
436 ;----------------------------------------------------------------------------------
437 0182 90aa SACL *+,AR2 ; FR2 = esbeta_p = |esbeta| (Q15)
438 ; ARP=AR0, AR0->FR3, AR2->esbeta, ARP=AR2
439 ;----------------------------------------------------------------------------------
440 0183 7c06 SBRK #6 ; ARP=AR2, AR0->FR2, AR2->esalfa
441 ;----------------------------------------------------------------------------------
442 0184 1088 LACC *,AR0 ; ACC = esalfa (Q15)
443 ; ARP=AR2, AR0->FR3, AR2->esalfa, ARP=AR0
444 ;----------------------------------------------------------------------------------
445 0185 be00 ABS ; ACC = |esalfa| (Q15)
446 ; ARP=AR0, AR0->FR3, AR2->esalfa
447 ;----------------------------------------------------------------------------------
448 0186 9090 SACL *- ; FR3 = esalfa_p = |esalfa| (Q15)
449 ; ARP=AR0, AR0->FR2, AR2->esalfa
450 ;----------------------------------------------------------------------------------
451 0187 3080 SUB * ; ACC = |esalfa|-|esbeta| (Q15)
452 ; ARP=AR0, AR0->FR2, AR2->esalfa
453 ;----------------------------------------------------------------------------------
454 0188 e304 BCND SMO_LARGE_QD,GT ; Branch to LARGE_QD if |esalfa|>|esbeta|
0189 019b'
455 ; ARP=AR0, AR0->FR2, AR2->esalfa
456 ;----------------------------------------------------------------------------------
457 018a e388 BCND SMO_EQ_QD,EQ ; Branch to EQ_QD if |esalfa|=|esbeta|
018b 01ad'
458 ; ARP=AR0, AR0->FR2, AR2->esalfa
459 ;----------------------------------------------------------------------------------
460 018c SMO_SMALL_QD ; Here, |esalfa|/|esbeta| is less than 1.
461 ; ARP=AR0, AR0->FR2, AR2->esalfa
462 ;----------------------------------------------------------------------------------
463 018c 7801 ADRK #1 ; ARP=AR0, AR0->FR3, AR2->esalfa
464 ;----------------------------------------------------------------------------------
465 018d 1f90 LACC *-,15 ; ACC = FR3 = |esalfa| left shifted by 15 (es_qd=Q15)
466 ; ARP=AR0, AR0->FR2, AR2->esalfa
467 ;----------------------------------------------------------------------------------
468 018e bb0f RPT #15 ; Repeat SUBC 16 times
469 ; ARP=AR0, AR0->FR2, AR2->esalfa
470 ;----------------------------------------------------------------------------------
471 018f 0a80 SUBC * ; Dividing |esalfa|/|esbeta|
472 ; ARP=AR0, AR0->FR2, AR2->esalfa
473 ;----------------------------------------------------------------------------------
474 0190 7c01 SBRK #1 ; ARP=AR0, AR0->FR1, AR2->esalfa
475 ;----------------------------------------------------------------------------------
476 0191 9080 SACL * ; FR1 = es_qd = |esalfa|/|esbeta| (Q15)
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00 Tue May 6 12:41:27 2003
Copyright (c) 1987-1999 Texas Instruments Incorporated
smopos.asm PAGE 10
477 ; ARP=AR0, AR0->FR1, AR2->esalfa
478 ;----------------------------------------------------------------------------------
479 ; Looking at the table for arctan(|esalfa|/|esbeta|) directly
480 0192 1990 LACC *-,9 ; ACC = es_qd/128
481 ; ARP=AR0, AR0->FR0, AR2->esalfa
482 ;----------------------------------------------------------------------------------
483 0193 9880 SACH * ; FR0 = ptr_smo = es_qdr/128
484 ; ARP=AR0, AR0->FR0, AR2->esalfa
485 ;----------------------------------------------------------------------------------
486 0194 bf80 LACC #ATANTAB_45 ; ACC = &ATANTAB_45
0195 0000!
487 ; ARP=AR0, AR0->FR0, AR2->esalfa
488 ;----------------------------------------------------------------------------------
489 0196 208a ADD *,AR2 ; ACC = &ATANTAB_45 + ptr_smo
490 ; ARP=AR0, AR0->FR0, AR2->esalfa, ARP=AR2
491 ;----------------------------------------------------------------------------------
492 0197 7811 ADRK #17 ; ARP=AR2, AR0->FR0, AR2->thetau
493 ;----------------------------------------------------------------------------------
494 0198 a680 TBLR * ; thetau = arctan(|esalfa|/|esbeta|) (Q15)
495 ; ARP=AR2, AR0->FR0, AR2->thetau
496 ;----------------------------------------------------------------------------------
497 0199 7980 B SMO_DIV_QD_END ; ARP=AR2, AR0->FR0, AR2->thetau
019a 01b2'
498 ;----------------------------------------------------------------------------------
499 019b SMO_LARGE_QD ; Here, |esalfa|/|esbeta| is greater than 1.
500 ; So, |esbeta|/|esalfa| < 1 is computed instead.
501 ; ARP=AR0, AR0->FR2, AR2->esalfa
502 ;----------------------------------------------------------------------------------
503 019b 1fa0 LACC *+,15 ; ACC = FR2 = |esbeta| left shifted by 15 (es_qd=Q15)
504 ; ARP=AR0, AR0->FR3, AR2->esalfa
505 ;----------------------------------------------------------------------------------
506 019c bb0f RPT #15 ; Repeat SUBC 16 times
507 ; ARP=AR0, AR0->FR3, AR2->esalfa
508 ;----------------------------------------------------------------------------------
509 019d 0a80 SUBC * ; Dividing |esbeta|/|esalfa|
510 ; ARP=AR0, AR0->FR3, AR2->esalfa
511 ;----------------------------------------------------------------------------------
512 019e 7c02 SBRK #2 ; ARP=AR0, AR0->FR1, AR2->esalfa
513 ;----------------------------------------------------------------------------------
514 019f 9080 SACL * ; FR1 = es_qd = |esbeta|/|esalfa|
515 ; ARP=AR0, AR0->FR1, AR2->esalfa
516 ;----------------------------------------------------------------------------------
517 ; Looking at the table for arctan(|esbeta|/|esalfa|)
518 01a0 1990 LACC *-,9 ; ACC = es_qd/128
519 ; ARP=AR0, AR0->FR0, AR2->esalfa
520 ;----------------------------------------------------------------------------------
521 01a1 9880 SACH * ; FR0 = ptr_smo = es_qd/128
522 ; ARP=AR0, AR0->FR0, AR2->esalfa
523 ;----------------------------------------------------------------------------------
524 01a2 bf80 LACC #ATANTAB_45 ; ACC = &ATANTAB_45
01a3 0000!
525 ; ARP=AR0, AR0->FR0, AR2->esalfa
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -