⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smopos.lst

📁 TI的digital motor control lib的源代码。了解TI的编程规范
💻 LST
📖 第 1 页 / 共 5 页
字号:
     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 + -