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

📄 omiga_pid.lst

📁 DSP关于F2407的实例程序
💻 LST
字号:
C:\tic2xx\c2000\cgtools\bin\dspa.exe Omiga_PID.asm Omiga_PID.obj -gls -v2xx 

TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Wed Jun  8 17:23:51 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
Omiga_PID.asm                                                        PAGE    1

       1            ;====================================================================
       2            ; Filename      :       Omiga_PID.asm
       3            ; Module names: Omiga_PID
       4            ; Initialization routines: Omiga_PID_INIT
       5            ; Description:  Omiga的PID调节器
       6            ;------------------------------------------------------------
       7            ; IST_ref = IST_ref1 + Omiga_PID_K0 * OmigaE0 + Omiga_PID_K1 * OmigaE1 + Omiga_PID_K2 * OmigaE2
       8            ;
       9            ;                               |~~~~~~~~~~~|
      10            ;       OmigaR0,1    o------>   |           |
      11            ;       Omiga_ref    o------>   |  PID      |   ----->o  IST_ref
      12            ;       IST_ref1     o------>   |           |
      13            ;       OmigaE0,1,2  o------>  |           |
      14            ; Omiga_PID_K0,K1,K2 o------>   |___________|
      15            ;       
      16            ; Modify: 2004.8.30
      17            ;=====================================================================
      18                            .include "f2407.h"      
      19                            .global Omiga_PID,Omiga_PID_INIT                ; function call
      20                            .global OMIGAE0_FILTER
      21                            
      22                            .global OmigaR0,Omiga_ref                       ; Inputs
      23                            .global Omiga_PID_K0,Omiga_PID_K1,Omiga_PID_K2;Inputs
      24                            .global OmigaE0,OmigaE1,OmigaE2         ; Inputs
      25                            .global IST_ref1                                        ; Input
      26                            .global IST_ref,IST_ref_TEMP                            ; Outputs
      27                            .global IST_refmax,IST_refmin
      28                            .global OMIGAE0_FILTER_RESULT
      29                            .global TEMP    
      30            ;=====================================================================
      31 0000       Omiga_PID_INIT:
      32            ;=====================================================================
      33 0000 bc04                  LDP     #DP_DATA                
      34 0001 ae00!                 SPLK    #14000,IST_refmax               ; 设定最值输出,7.5A
         0002 36b0  
      35 0003 ae00!                 SPLK    #-14000,IST_refmin              ; -7.5A
         0004 c950  
      36                            
      37 0005 ae00!                 SPLK    #0,IST_ref1                     ;给初值
         0006 0000  
      38 0007 ae00!                 SPLK    #0,OmigaE0
         0008 0000  
      39 0009 ae00!                 SPLK    #0,OmigaE1
         000a 0000  
      40 000b ae00!                 SPLK    #0,OmigaE2
         000c 0000  
      41                            
      42 000d ae00!                 SPLK    #31200,Omiga_PID_K0
         000e 79e0  
      43                            ;SPLK   #4065,Omiga_PID_K0                      ;根据实际来设定,现在先胡乱设。
      44 000f ae00!                 SPLK    #-31000,Omiga_PID_K1
         0010 86e8  
      45 0011 ae00!                 SPLK    #0,Omiga_PID_K2                 ;Kp=10000,Ki=25,Kd=0
         0012 0000  
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Wed Jun  8 17:23:51 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
Omiga_PID.asm                                                        PAGE    2

      46            
      47 0013 ef00                  RET
      48            ;=====================================================================
      49 0014       Omiga_PID:
      50            ;=====================================================================
      51 0014 be47                  SETC    SXM
      52 0015 bf01                  SPM     1                       ;符号数相乘
      53            ;------------------------------------------------------------                                                   
      54 0016 bc04                  LDP     #DP_DATA
      55            ;               SPLK    #330,Omiga_ref
      56            ;               SPLK    #270,OmigaR0
      57                            
      58 0017 1000!                 LACC    IST_ref
      59 0018 9000!                 SACL    IST_ref1                        ;IST_ref->IST_ref1
      60 0019 1000!                 LACC    OmigaE1
      61 001a 9000!                 SACL    OmigaE2         ;OmigaE1->OmigaE2
      62 001b 1000!                 LACC    OmigaE0
      63 001c 9000!                 SACL    OmigaE1         ;OmigaE0->OmigaE1
      64            ; calculate IST_ref
      65            ; IST_ref = IST_ref1 + Omiga_PID_K0 * OmigaE0 + Omiga_PID_K1 * OmigaE1 + Omiga_PID_K2 * OmigaE2 
      66 001d 1000!                 LACC    Omiga_ref
      67 001e 3000!                 SUB     OmigaR0
      68                            ;Omiga_PID_K0,1,2系数用16位表示不够,要增加位数。相当于OmigaE0,1,2放大。
      69 001f 9400!                 SACL    OmigaE0,4       ;新的OmigaE0,按最大OmigaE0为1200计算(75Hz),左移4位不会溢出。
      70                            
      71                    ;       SPLK    #600,OmigaE0
      72                            
      73 0020 7a80                  CALL    OMIGAE0_FILTER
         0021 0000! 
      74 0022 1000!                 LACC    OMIGAE0_FILTER_RESULT
      75 0023 9000!                 SACL    OmigaE0
      76                            
      77 0024 6a00!                 LACC    IST_ref,16
      78 0025 2000!                 ADD     IST_ref_TEMP    ;ACC为上一次PID运算结果。
      79 0026 7300!                 LT      OmigaE0
      80 0027 5400!                 MPY     Omiga_PID_K0
      81 0028 7000!                 LTA     OmigaE1
      82 0029 5400!                 MPY     Omiga_PID_K1
      83 002a 7000!                 LTA     OmigaE2
      84 002b 5400!                 MPY     Omiga_PID_K2
      85 002c be04                  APAC
      86                            ;数据处理
      87 002d 9800!                 SACH    IST_ref                 ;存PID计算结果  
      88 002e 9000!                 SACL    IST_ref_TEMP            ;存PID计算结果低16位。
      89            ;------------------------------------------------------------
      90            ; 判断 IST_ref 是否饱和
      91 002f 1000!                 LACC    IST_ref
      92 0030 3000!                 SUB     IST_refmin
      93 0031 e38c                  BCND    Omiga_PID_MIN,GEQ
         0032 0036' 
      94 0033 1000!                 LACC    IST_refmin
      95 0034 7980                  B       Omiga_PID_RESULT
         0035 0040' 
      96 0036       Omiga_PID_MIN:          
TMS320C1x/C2x/C2xx/C5x COFF Assembler Version 7.00  Wed Jun  8 17:23:51 2005
Copyright (c) 1987-1999  Texas Instruments Incorporated 
Omiga_PID.asm                                                        PAGE    3

      97 0036 1000!                 LACC    IST_ref
      98 0037 3000!                 SUB     IST_refmax
      99 0038 e3cc                  BCND    Omiga_PID_MAX,LEQ
         0039 003d' 
     100 003a 1000!                 LACC    IST_refmax
     101 003b 7980                  B       Omiga_PID_RESULT
         003c 0040' 
     102 003d       Omiga_PID_MAX:
     103 003d 1000!                 LACC    IST_ref
     104 003e 7980                  B       Omiga_PID_RESULT
         003f 0040' 
     105 0040       Omiga_PID_RESULT:               
     106 0040 9000!                 SACL    IST_ref                 ; 最终结果
     107            ;               SPLK    #4096,IST_ref
     108            ;------------------------------------------------------------
     109 0041 bf00                  SPM     0
     110 0042 ef00                  RET

 No Errors,  No Warnings

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -