• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【问】TI有没有2812 SPWM程序的例程啊?

最近要写个SPWM程序~

不知道TI有没有2812  SPWM程序的例程啊?

 

全部回复(22)
正序查看
倒序查看
javike
LV.12
2
2012-08-08 22:19
应该没有
0
回复
2012-08-08 23:21
关于逆变,SPWM程序。TI没看见有哦。可以用单片机,或DSP自己写啊,自己写的好些,想要什么功能自己通过程序就很容易实现了,就是写程序,调试是需要时间的。
0
回复
aczg01987
LV.10
4
2012-08-09 03:41
楼主这个貌似没有
0
回复
2012-08-09 08:11
@aczg01987
楼主这个貌似没有
楼主这个可以有,单极性还是双极性的?
0
回复
xuzeabc
LV.4
6
2012-08-09 08:55

SPWM 我这里有,传给你吧,三相的SPWM,我做逆变器的程序就是参照这个程序做出来了。不过是最基本的,只能入门级别的,做实验是可以的。真正用在逆变器上,换需要改进很多。

0
回复
2012-08-09 20:31
@zhanghuawei
楼主这个可以有,单极性还是双极性的?[图片]

where?

双极性~程序简单点~

0
回复
2012-08-09 20:31
@xuzeabc
[图片]SPWM 我这里有,传给你吧,三相的SPWM,我做逆变器的程序就是参照这个程序做出来了。不过是最基本的,只能入门级别的,做实验是可以的。真正用在逆变器上,换需要改进很多。
~可否传上来看看~
0
回复
zvszcs
LV.12
9
2012-08-10 08:01
@yangyixian
关于逆变,SPWM程序。TI没看见有哦。可以用单片机,或DSP自己写啊,自己写的好些,想要什么功能自己通过程序就很容易实现了,就是写程序,调试是需要时间的。
自己写哦,TI没见过
0
回复
zhanghuawei
LV.9
10
2012-08-10 08:40
@cumtzhangwang
[图片]~可否传上来看看~
传上来金牌就是你的啦!这年头金牌不好赚啊!
0
回复
aczg01987
LV.10
11
2012-08-10 08:44

如下做参考

include "240x.h"     ; 寄存器地址
.global   _c_int0       ;全局化标号
;--------------------------------------以下定义变量-------------------------------------------------------------
ST0 .set 0                  ;状态寄存器ST0
ST1 .set 1                  ;状态寄存器ST1
.bss TEMP,1           ;临时变量
.bss SET_F,1           ;频率调节比,Q16格式(值为0-1,对应0-50Hz)
.bss F_OMEGA,1         ;频率调节比-角频率转换率,Q5格式
.bss OMEGA,1          ;调制波角频率,Q5格式
.bss SET_V,1           ;参考电压,Q14格式
.bss MAX_V,1          ;最大参考电压幅值1/   ,Q14格式
.bss T_SAMPLE,1         ;采样周期,Q24格式
.bss THETA_H,1         ;参考电压相位角高字,Q12格式
.bss THETA_L,1         ;参考电压相位角低字,Q12格式
.bss THETA_R,1         ;相位角的圆整值,Q12格式
.bss THETA_M,1         ;相位查表值(0-90度),Q12格式
.bss THETA_I,1         ;相角查表索引,Q9格式
.bss SS,1            ;SIN符号,Q0格式
.bss SC,1            ;COS符号,Q0格式
.bss SIN_INDX,1         ;SIN表索引,Q0格式
.bss SIN_ENTRY,1        ;SIN表入口地址
.bss SIN_END,1         ;SIN表结束地址
.bss SIN_THETA,1        ;SINθ值,Q14格式
.bss COS_THETA,1        ;COSθ值,Q14格式
.bss UA,1            ;参考电压D轴分量UA,Q12格式
.bss UB,1            ;参考电压Q轴分量UB,Q12格式
.bss THETA_S,1          ;θ-扇区数转换系数,Q15格式
.bss SECTOR,1          ;参考电压所在的扇区数,Q0格式
.bss THETA_90,1          ;90度,Q12格式
.bss THETA_180,1         ;180度,Q12格式
.bss THETA_270,1         ;270度,Q12格式
.bss THETA_360,1         ;360度,Q12格式
.bss DEC_MS,24          ;6个逆阵,Q14格式
.bss T1_PERIODS,1        ;定时器1周期值,Q5格式
.bss CMP_1,1           ;第1基本矢量,Q0格式
.bss CMP_2,1           ;第2基本矢量,Q0格式
.bss CMP_0,1           ;0基本矢量/2,Q0格式
.bss FIRST_TOG,1         ;存放第一次比较匹配的比较器地址
.bss SEC_TOG,1          ;存放第二次比较匹配的比较器地址
.bss   ACCH,1           ;ACC高字保存单元
.bss   ACCL,1            ;ACC低字保存单元
.bss   AR0_SAVE,1         ;AR0保存单元
.bss   P_HI,1            ;P寄存器高字保存单元
.bss   P_LO,1            ;P寄存器低字保存单元
;-------------------------------------- CONTEXT段,定义保护现场数据区--------------------------
ST0_SAVE   .usect ".context",1    ;状态寄存器ST0保存单元
ST1_SAVE   .usect ".context",1    ;状态寄存器ST1保存单元
;-------------------------------------- 定义主向量段--------------------------------------------------
.sect    ".vectors"          ;定义主向量段
RESET    B    _c_int0        ;地址0000H,复位,优先级1
INT1    B    PHANTOM       ;地址0002H,INT1,优先级4
INT2    B    _C_INT2        ;地址0004H,INT2,优先级5
INT3    B    PHANTOM       ;地址0006H,INT3,优先级6
INT4    B    PHANTOM       ;地址0008H,INT4,优先级7
INT5    B    PHANTOM       ;地址000AH,INT5,优先级8
INT6    B    PHANTOM       ;地址000CH,INT6,优先级9
RESERVED    B    PHANTOM           ;地址000EH,测试,优先级10
SW_INT8    B    PHANTOM           ;地址0010H,自定义软中断
SW_INT9    B    PHANTOM           ;地址0012H,自定义软中断
SW_INT10    B    PHANTOM           ;地址0014H,自定义软中断
SW_INT11    B    PHANTOM           ;地址0016H,自定义软中断
SW_INT12    B    PHANTOM           ;地址0018H,自定义软中断
SW_INT13    B    PHANTOM           ;地址001AH,自定义软中断
SW_INT14    B    PHANTOM           ;地址001CH,自定义软中断
SW_INT15    B    PHANTOM           ;地址001EH,自定义软中断
SW_INT16    B    PHANTOM           ;地址0020H,自定义软中断
TRAP        B    PHANTOM               ;地址0022H,TRAP矢量
NMI             B    PHANTOM               ;地址0024H,NMI,优先级3
EMU_TRAP B    PHANTOM               ;地址0026H,仿真Trap,优先级2
SW_INT20    B    PHANTOM           ;地址0028H,自定义软中断
SW_INT21    B    PHANTOM           ;地址002AH,自定义软中断
SW_INT22    B    PHANTOM           ;地址002CH,自定义软中断
SW_INT23    B    PHANTOM           ;地址002EH,自定义软中断
SW_INT24    B    PHANTOM           ;地址0030H,自定义软中断
SW_INT25    B    PHANTOM           ;地址0032H,自定义软中断
SW_INT26    B    PHANTOM           ;地址0034H,自定义软中断
SW_INT27    B    PHANTOM           ;地址0036H,自定义软中断
SW_INT28    B    PHANTOM           ;地址0038H,自定义软中断
SW_INT29    B    PHANTOM           ;地址003AH,自定义软中断
SW_INT30    B    PHANTOM           ;地址003CH,自定义软中断
SW_INT31    B    PHANTOM           ;地址003EH,自定义软中断

;-------------------------------------- 定义子向量段------------------------------------------------------
.sect    ".pvecs"           ;定义子向量段
PVECTORS       B       PHANTOM               ;偏移地址0000H
               B       PHANTOM                ;偏移地址0001H
               B       PHANTOM               ;偏移地址0002H
               B       PHANTOM               ;偏移地址0003H
               B       PHANTOM               ;偏移地址0004H
               B       PHANTOM               ;偏移地址0005H
               B       PHANTOM               ;偏移地址0006H
               B       PHANTOM               ;偏移地址0007H
               B       PHANTOM               ;偏移地址0008H
               B       PHANTOM               ;偏移地址0009H
               B       PHANTOM               ;偏移地址000AH
               B       PHANTOM               ;偏移地址000BH
               B       PHANTOM               ;偏移地址000CH
               B       PHANTOM               ;偏移地址000DH
               B       PHANTOM               ;偏移地址000EH
               B       PHANTOM               ;偏移地址000FH
               B       PHANTOM               ;偏移地址0010H
               B       PHANTOM               ;偏移地址0011H
               B       PHANTOM               ;偏移地址0012H
               B       PHANTOM               ;偏移地址0013H
               B       PHANTOM               ;偏移地址0014H
               B       PHANTOM               ;偏移地址0015H
               B       PHANTOM               ;偏移地址0016H
               B       PHANTOM               ;偏移地址0017H
               B       PHANTOM               ;偏移地址0018H
               B       PHANTOM               ;偏移地址0019H
               B       PHANTOM               ;偏移地址001AH
               B       PHANTOM               ;偏移地址001BH
               B       PHANTOM               ;偏移地址001CH
               B       PHANTOM               ;偏移地址001DH
               B       PHANTOM               ;偏移地址001EH
               B       PHANTOM               ;偏移地址001FH
               B       PHANTOM               ;偏移地址0020H
               B       PHANTOM               ;偏移地址0021H
               B       PHANTOM               ;偏移地址0022H
               B       PHANTOM               ;偏移地址0023H
               B       PHANTOM               ;偏移地址0024H
               B       PHANTOM               ;偏移地址0025H
               B       PHANTOM               ;偏移地址0026H
               B       PHANTOM               ;偏移地址0027H
               B       PHANTOM               ;偏移地址0028H
               B       T1UF_ISR               ;偏移地址0029H
               B       PHANTOM               ;偏移地址002AH
               B       PHANTOM               ;偏移地址002BH
               B       PHANTOM               ;偏移地址002CH
               B       PHANTOM               ;偏移地址002DH
               B       PHANTOM               ;偏移地址002EH
               B       PHANTOM               ;偏移地址002FH
               B       PHANTOM               ;偏移地址0030H
               B       PHANTOM               ;偏移地址0031H
               B       PHANTOM               ;偏移地址0032H

              B      PHANTOM              ;偏移地址0033H
              B      PHANTOM              ;偏移地址0034H
              B      PHANTOM              ;偏移地址0035H
              B      PHANTOM              ;偏移地址0036H
              B      PHANTOM              ;偏移地址0037H
              B      PHANTOM              ;偏移地址0038H
              B      PHANTOM              ;偏移地址0039H
              B      PHANTOM              ;偏移地址003AH
              B      PHANTOM              ;偏移地址003BH
              B      PHANTOM              ;偏移地址003CH
              B      PHANTOM              ;偏移地址003DH
              B      PHANTOM              ;偏移地址003EH
              B      PHANTOM              ;偏移地址003FH
              B      PHANTOM              ;偏移地址0040H
              B      PHANTOM              ;偏移地址0041H

;--------------------------------------以下是主程序--------------------------------------------------------
.text
;--------------------------------------系统初始化程序----------------------------------------------------
_c_int0  
        SETC   INTM         ; 禁止中断
CLRC   CNF          ;B0为数据存储区
LDP    #224
SPLK   #0000001000000100B,SCSR1 ;CLKIN 10M,CLKOUT 20M
SPLK   #68H,WDCR        ;不用看门狗
LDP    #225
LACC   MCRA
OR    #0FC0H        ;设置PWM1-6引脚
SACL   MCRA
;--------------------------------------中断初始化程序----------------------------------------------------
LDP    #0
SPLK   #0FFH,IFR        ; 清所有系统中断标志
SPLK   #00000010B,IMR     ; 开INT2中断
LDP    #232     
SPLK   #0FFFH,EVAIFRA    ; 清事件管理器A所有中断标志
SPLK   #0FH,EVAIFRB
SPLK   #0FH,EVAIFRC
SPLK   #0200H,EVAIMRA    ; 开T1下溢中断
SPLK   #0,EVAIMRB       ; 屏蔽所有中断
SPLK   #0,EVAIMRC       ; 屏蔽所有中断
;--------------------------------------初始化事件管理器A程序-----------------------------------------
SPLK   #500,T1PR       ; T1周期值=50 us/50ns/2=500
SPLK   #500,CMPR1      ; 占空比初值 0%
SPLK   #500,CMPR2
SPLK   #500,CMPR3
SPLK   #0000011001100110B,ACTRA   ; 引脚PWM1,3,5高有效,2,4,6低有效
SPLK   #01F4H,DBTCONA    ; 死区时间1*32*50ns=1.6us
SPLK   #1000001000000000B,COMCONA   ;允许比较,不用硬件空间矢量
SPLK   #1000100000000010B,T1CON ;连续增减计数方式,预分频=1
;--------------------------------------变量初始化程序-----------------------------------------------------
        LDP    #6             ; 指向B1
SPLK   #0347H,T_SAMPLE    ;采样周期=50us *224=839秒=347H, Q24格式
SPLK   #16000,T1_PERIODS     ;T1周期值的Q5格式,500*32
SPLK   #11585,MAX_V       ; 最大参考电压幅值1/ ,Q14格式
SPLK   #0,SET_F      ; SET F=0
SPLK   #10053,F_OMEGA      ;频率调节比-角频率转换率,Q5格式
             ;当SET_F=1时,对应最大角频率2π50Hz*25=10053
SPLK   #0,THETA_L        ;θ低字,Q12格式
SPLK   #0,THETA_H        ; θ高字,Q12格式
LAR   AR0,#THETA_90       ; 传送常用角度和逆阵数据
LAR   AR1,#(28-1)         ; 28个
LACC   #ANGLES_         ; 指向源
LAR   AR0
INIT_TBL  
        TBLR   *+,AR1            ; 下一个
ADD   #1             ; 下一个地址
BANZ   INIT_TBL,AR0         ;AR1=0结束
SPLK   #29335,THETA_I       ; 相角查表索引,180/π,Q9格式
SPLK   #31291,THETA_S       ; θ-扇区数转换系数,6/(2π),Q15格式
SPLK   #SIN_ENTRY_,SIN_ENTRY    ;SIN表起始地址
SPLK   #(SIN_ENTRY_+90),SIN_END   ;SIN表结束地址
LDP   #232
SPLK   #0000100001000010B,T1CON   ;使能T1
CLRC   INTM            ; 开总中断
;--------------------------------------主循环程序(SET_F由外部输入)-----------------------------------
MAIN_LOOP  
        LDP   #6
LT    SET_F           ; 将频率调节比(Q16格式)转换成角频率
MPYU   F_OMEGA         ; Q21
PAC               ; 积送ACC, Q5格式
SACH   OMEGA         ; 保存角频率,Q5格式
        LT    SET_F           ;将频率调节比(Q16格式)转换成参考电压
MPYU   MAX_V          ; Q16*Q14=Q30
PAC
SACH   SET_V          ; 保存参考电压幅值,Q14格式
B    MAIN_LOOP         ; 循环
;--------------------------------------假中断处理----------------------------------------------------------
PHANTOM  
        CLRC    INTM
        RET

;--------------------------------------T1下溢中断处理子程序----------------------------------------------
_C_INT2  
        SST    #ST0,ST0_SAVE       ; 保存现场ST0
SST    #ST1,ST1_SAVE       ; 保存ST1
LDP    #6
SACH   ACCH
SACL   ACCL           ; 保存ACC
SPH    P_HI
SPL    P_LO            ; 保存 P
MPY    #1             ; P<=T
SPL    T_SAVE           ; 保存 T
SAR    AR0,AR0_SAVE       ; 保存AR0
CLRC   SXM
LDP    #224
LACC   PIVR           ;读偏移地址
SUB    #029H           ; T1 下溢中断?
BCND    T1UF_ISR,EQ        ;是下溢中断跳T1UF_ISR
REST   
        LDP    #6             ;否则恢复现场
LAR    AR0, AR0_SAVE       ; 恢复AR0
LT    P_LO             ;恢复P
MPY    #1
LPH    P_HI
LT    T_SAVE           ;恢复T
LACC   ACCH,16
ADDS   ACCL           ;恢复ACC
LDP    #0             ;指向B2
LST    #ST1,ST1_SAVE        ; 恢复ST1
LST    #ST0,ST0_SAVE        ; 恢复ST0
CLRC   INTM            ; 开中断
RET                ; 返回
T1UF_ISR  
        LDP    #232
SPLK    #0FFFH,EVAIFRA       ; 清中断标志
LDP    #6             ; 计算转角增量
LT     OMEGA           ; Q5
MPY    T_SAMPLE          ; Q5*Q24
PAC                ;积存ACC, Q13
SFR                ; 右移一位成Q12格式
ADD     THETA_H,16        ; Q12
ADDS    THETA_L          ;计算绝对位置
SACH    THETA_H          ;保存
SACL    THETA_L
BCND    CHK_UPLIM,GEQ       ;如果大于0检查上限
ADD     THETA_360,16        ;否则与2π比较,Q12
SACH     THETA_H          ; 保存
B      RND_THETA   
CHK_UPLIM
        SUB     THETA_360,16        ;与2π比较,Q12
BCND    REST_THETA,LEQ      ; 如果在范围内恢复THETA_H
SACH    THETA_H   
B      RND_THETA
REST_THETA
        ADD    THETA_360,16       ; 恢复THETA_H
RND_THETA
        ADD     #1,15           ; 圆整并保留高字
SACH     THETA_R          ;保存
LACC     #1             ;假设THETA_H在第一象限
SACL     SS             ; SIN符号=1
SACL     SC             ; COS符号=1
LACC     THETA_R
SACL     THETA_M          ; 存入THETA_M
SUB     THETA_90 ;
BCND    E_Q,LEQ         ;在第一象限则跳转
SPLK     #-1,SC          ; COS符号=—1
LACC     THETA_180
SUB     THETA_R         ; 180-θ
SACL    THETA_M         ;存入THETA_M
BCND    E_Q,GEQ         ;在第二象限则跳转
SPLK     #-1,SS          ;SIN符号=-1
LACC    THETA_R
SUB     THETA_180        ;THETA-180
SACL    THETA_M         ;存入THETA_M
LACC    THETA_270
SUB     THETA_R
BCND    E_Q,GEQ         ;在第三象限则跳转
SPLK    #1,SC           ; COS符号=1
LACC    THETA_360
SUB     THETA_R
SACL    THETA_M         ; 在第四象限
E_Q   
        LT      THETA_M         ; Q12.计算查表索引
MPYU     THETA_I         ; Q12*Q9
PAC
SACH    SIN_INDX        ; Q5
LACC    SIN_INDX,11       ;左移11位
SACH    SIN_INDX        ;相当于右移5位变成Q0格式,即整数
LACC    SIN_ENTRY        ;查SIN表
ADD     SIN_INDX
TBLR    SIN_THETA
LACC    SIN_END
SUB     SIN_INDX ;
TBLR    COS_THETA ;
LT      SS            ;查COS表
MPY     SIN_THETA        ;修改符号,Q14
PAC
SACL    SIN_THETA        ; 左移16位保存,Q14
LT      SC
MPY     COS_THETA        ; 修改符号, Q14
PAC
SACL    COS_THETA        ;左移16位保存,Q14
LT      SET_V          ;开始计算UA , UB
MPY     COS_THETA        ; Q14*Q14
PAC
SACH    UA           ; UA ,Q12格式
MPY     SIN_THETA        ; Q14*Q14
PAC
SACH    UB           ; UB, Q12格式
LT     THETA_R          ; Q12格式.确定扇区
MPY     THETA_S         ; Q12*Q15
PAC
SACH    SECTOR
LACC    SECTOR,5
SACH    SECTOR         ; 相当于右移11位变成Q0格式(整数)
LACC    #DEC_MS        ;逆阵数据首地址
ADD     SECTOR,2
SACL    TEMP          ;产生地址指针
LAR     AR0,TEMP        ; 指向逆阵表
LT      UA           ; Q12格式.计算UA*M(1,1)+UB*M(1,2)
MPY     *+            ; M(1,1) UA, Q12*Q14
PAC               ; Q10格式
LT      UB           ; Q12
MPY     *+           ; M(1,2) UB, Q12*Q14
APAC               ; 0.5*C1, Q10
BCND    CMP1BIG0,GEQ     ; 如果大于0继续
LACC     #0           ; 否则0
CMP1BIG0
        SACH    TEMP          ; 0.5*C1,Q10格式
LT      TEMP          ; Q10格式
MPY     T1_PERIODS       ; Q10*Q5
PAC               ; Q15格式
SACH     CMP_1,1         ; 0.5*C1*TP,Q0格式
LT      UA           ;计算UA*M(2,1)+UB*M(2,2)
MPY     *+           ; M(2,1) UA,Q12*Q14
PAC                ; Q10格式
LT      UB            ; Q12格式
MPY     *+            ; M(2,2) UB: Q12*Q14
APAC               ; 0.5*C2,Q10
BCND    CMP2BIG0,GEQ      ; 如果大于0继续
LACC    #0             ;否则0
CMP2BIG0
        SACH    TEMP           ; 0.5*C2,Q10格式
LT      TEMP           ; Q10格式
MPY     T1_PERIODS       ; Q10*Q5
PAC                ; Q15格式
SACH    CMP_2,1          ; 0.5*C2*TP,Q0格式
LACC    #500           ; T1周期值
SUB     CMP_1
SUB     CMP_2          ; Q0格式
BCND    CMP0BIG0,GEQ      ;如果大于0继续
LACC    #0            ;否则0
CMP0BIG0
        SACL    CMP_0
LACC    CMP_0,15         ; 相当于右移1位,除2
SACH    CMP_0          ; 0.25*C0*TP
LACC     #FIRST_     ;指向第一次比较匹配的比较寄存器地址表入口地址
ADD     SECTOR
TBLR     FIRST_TOG       ;查到第一次比较匹配的比较器地址
LAR     AR0,FIRST_TOG     ;指向该地址
LACC     CMP_0
SACL     *            ; CMP_0送入该比较器
LACC     #SECOND_    ;指向第二次比较匹配的比较寄存器地址表入口地址
ADD     SECTOR
TBLR     SEC_TOG        ;查到第二次比较匹配的比较器地址
LAR     AR0,SEC_TOG      ;指向该地址
LACC     CMP_0
ADD     CMP_1         ; CMP_0+CMP_1
SACL     *           ;送入该比较器
LACC     #CMPR3
SUB      FIRST_TOG
ADD     #CMPR2
SUB     SEC_TOG
ADD     #CMPR1
SACL     TEMP         ;计算第三次比较匹配的比较器地址
LAR     AR0,TEMP       ;指向该地址
LACC     CMP_0
ADD     CMP_1
ADD     CMP_2         ; CMP_0+CMP_1+CMP_2
SACL     *           ; 送入该比较器
B       REST         ; 返回
.data           
;--------------------------------------数据段---------------------------------------------------------------------
ANGLES_    .word 01922H          ; π/2, Q12格式
.word 03244H          ; π, Q12格式
.word 04B66H          ; 3π/2, Q12格式
.word 06488H          ; 2π, Q12格式
.word 20066       ; 矩阵A的逆阵数据,每一个逆阵有4个数据,Q14格式
.word –11585          ; 按参考电压所在的扇区索引
.word 0
.word 23170
.word -20066
.word 11585
.word 20066
.word 11585
.word 0
.word 23170
.word -20066
.word -11585
.word 0
.word -23170
.word -20066
.word 11585
.word -20066
.word -11585
.word 20066
.word -11585
.word 20066
.word 11585
.word 0
.word -23170
FIRST_     .word CMPR1           ; 用于第1次比较匹配的比较寄存器地址,
        .word CMPR2            ; 按参考电压所在的扇区索引
.word CMPR2
.word CMPR3
.word CMPR3
.word CMPR1
SECOND_    .word CMPR2           ;用于第2次比较匹配的比较寄存器地址,
        .word CMPR1            ; 按参考电压所在的扇区索引
        .word CMPR3
        .word CMPR2
        .word CMPR1
        .word CMPR3
SIN_ENTRY_
         .word 0              ; 0-90度SIN值表,Q14格式
         .word 286,572,857,1143,1428
         .word 1713,1997,2280,2563,2845
        .word 3126,3406,3686,3964,4240
        .word 4516,4790,5063,5334,5604
        .word 5872,6138,6402,6664,6924
        .word 7182,7438,7692,7943,8192
        .word 8438,8682,8923,9162,9397
        .word 9630,9860,10087,10311,10531
        .word 10749,10963,11174,11381,11585
        .word 11786,11982,12176,12365,12551
        .word 12733,12911,13085,13255,13421
        .word 13583,13741,13894,14044,14189
        .word 14330,14466,14598,14726,14849
        .word 14968,15082,15191,15296,15396
        .word 15491,15582,15668,15749,15826
        .word 15897,15964,16026,16083,16135
        .word 16182,16225,16262,16294,16322
        .word 16344,16362,16374,16382,16384
.end

0
回复
xuzeabc
LV.4
12
2012-08-10 09:21
@xuzeabc
[图片]SPWM 我这里有,传给你吧,三相的SPWM,我做逆变器的程序就是参照这个程序做出来了。不过是最基本的,只能入门级别的,做实验是可以的。真正用在逆变器上,换需要改进很多。

上传了,整个工程的,直接在3.3下就能编译,2812芯片的,有问题联系我

0
回复
xuzeabc
LV.4
13
2012-08-10 09:27
上传了整个工程,在3.3环境下直接编译,仿真就可以了。有问题可以联系我
0
回复
2012-08-10 10:49
@xuzeabc
[图片]SPWM 我这里有,传给你吧,三相的SPWM,我做逆变器的程序就是参照这个程序做出来了。不过是最基本的,只能入门级别的,做实验是可以的。真正用在逆变器上,换需要改进很多。

手把手教你学dsp的例程程序~三相SPWM【开环】~

我有过了~不过还是非常感谢~~

0
回复
2012-08-10 10:51
@aczg01987
如下做参考include"240x.h"    ;寄存器地址.global  _c_int0    ;全局化标号;--------------------------------------以下定义变量-------------------------------------------------------------ST0.set0            ;状态寄存器ST0ST1.set1            ;状态寄存器ST1.bssTEMP,1        ;临时变量.bssSET_F,1        ;频率调节比,Q16格式(值为0-1,对应0-50Hz).bssF_OMEGA,1      ;频率调节比-角频率转换率,Q5格式.bssOMEGA,1      ;调制波角频率,Q5格式.bssSET_V,1        ;参考电压,Q14格式.bssMAX_V,1      ;最大参考电压幅值1/  ,Q14格式.bssT_SAMPLE,1      ;采样周期,Q24格式.bssTHETA_H,1      ;参考电压相位角高字,Q12格式.bssTHETA_L,1      ;参考电压相位角低字,Q12格式.bssTHETA_R,1      ;相位角的圆整值,Q12格式.bssTHETA_M,1      ;相位查表值(0-90度),Q12格式.bssTHETA_I,1      ;相角查表索引,Q9格式.bssSS,1        ;SIN符号,Q0格式.bssSC,1        ;COS符号,Q0格式.bssSIN_INDX,1      ;SIN表索引,Q0格式.bssSIN_ENTRY,1      ;SIN表入口地址.bssSIN_END,1      ;SIN表结束地址.bssSIN_THETA,1      ;SINθ值,Q14格式.bssCOS_THETA,1      ;COSθ值,Q14格式.bssUA,1        ;参考电压D轴分量UA,Q12格式.bssUB,1        ;参考电压Q轴分量UB,Q12格式.bssTHETA_S,1      ;θ-扇区数转换系数,Q15格式.bssSECTOR,1      ;参考电压所在的扇区数,Q0格式.bssTHETA_90,1      ;90度,Q12格式.bssTHETA_180,1      ;180度,Q12格式.bssTHETA_270,1      ;270度,Q12格式.bssTHETA_360,1      ;360度,Q12格式.bssDEC_MS,24      ;6个逆阵,Q14格式.bssT1_PERIODS,1      ;定时器1周期值,Q5格式.bssCMP_1,1        ;第1基本矢量,Q0格式.bssCMP_2,1        ;第2基本矢量,Q0格式.bssCMP_0,1        ;0基本矢量/2,Q0格式.bssFIRST_TOG,1      ;存放第一次比较匹配的比较器地址.bssSEC_TOG,1      ;存放第二次比较匹配的比较器地址.bss  ACCH,1        ;ACC高字保存单元.bss  ACCL,1        ;ACC低字保存单元.bss  AR0_SAVE,1      ;AR0保存单元.bss  P_HI,1        ;P寄存器高字保存单元.bss  P_LO,1        ;P寄存器低字保存单元;--------------------------------------CONTEXT段,定义保护现场数据区--------------------------ST0_SAVE  .usect".context",1  ;状态寄存器ST0保存单元ST1_SAVE  .usect".context",1  ;状态寄存器ST1保存单元;--------------------------------------定义主向量段--------------------------------------------------.sect  ".vectors"      ;定义主向量段RESET  B  _c_int0      ;地址0000H,复位,优先级1INT1  B  PHANTOM    ;地址0002H,INT1,优先级4INT2  B  _C_INT2      ;地址0004H,INT2,优先级5INT3  B  PHANTOM    ;地址0006H,INT3,优先级6INT4  B  PHANTOM    ;地址0008H,INT4,优先级7INT5  B  PHANTOM    ;地址000AH,INT5,优先级8INT6  B  PHANTOM    ;地址000CH,INT6,优先级9RESERVED  B  PHANTOM        ;地址000EH,测试,优先级10SW_INT8  B  PHANTOM        ;地址0010H,自定义软中断SW_INT9  B  PHANTOM        ;地址0012H,自定义软中断SW_INT10  B  PHANTOM        ;地址0014H,自定义软中断SW_INT11  B  PHANTOM        ;地址0016H,自定义软中断SW_INT12  B  PHANTOM        ;地址0018H,自定义软中断SW_INT13  B  PHANTOM        ;地址001AH,自定义软中断SW_INT14  B  PHANTOM        ;地址001CH,自定义软中断SW_INT15  B  PHANTOM        ;地址001EH,自定义软中断SW_INT16  B  PHANTOM        ;地址0020H,自定义软中断TRAP      B  PHANTOM          ;地址0022H,TRAP矢量NMI        B  PHANTOM          ;地址0024H,NMI,优先级3EMU_TRAPB  PHANTOM          ;地址0026H,仿真Trap,优先级2SW_INT20  B  PHANTOM        ;地址0028H,自定义软中断SW_INT21  B  PHANTOM        ;地址002AH,自定义软中断SW_INT22  B  PHANTOM        ;地址002CH,自定义软中断SW_INT23  B  PHANTOM        ;地址002EH,自定义软中断SW_INT24  B  PHANTOM        ;地址0030H,自定义软中断SW_INT25  B  PHANTOM        ;地址0032H,自定义软中断SW_INT26  B  PHANTOM        ;地址0034H,自定义软中断SW_INT27  B  PHANTOM        ;地址0036H,自定义软中断SW_INT28  B  PHANTOM        ;地址0038H,自定义软中断SW_INT29  B  PHANTOM        ;地址003AH,自定义软中断SW_INT30  B  PHANTOM        ;地址003CH,自定义软中断SW_INT31  B  PHANTOM        ;地址003EH,自定义软中断;--------------------------------------定义子向量段------------------------------------------------------.sect  ".pvecs"        ;定义子向量段PVECTORS    B    PHANTOM          ;偏移地址0000H          B    PHANTOM          ;偏移地址0001H          B    PHANTOM          ;偏移地址0002H          B    PHANTOM          ;偏移地址0003H          B    PHANTOM          ;偏移地址0004H          B    PHANTOM          ;偏移地址0005H          B    PHANTOM          ;偏移地址0006H          B    PHANTOM          ;偏移地址0007H          B    PHANTOM          ;偏移地址0008H          B    PHANTOM          ;偏移地址0009H          B    PHANTOM          ;偏移地址000AH          B    PHANTOM          ;偏移地址000BH          B    PHANTOM          ;偏移地址000CH          B    PHANTOM          ;偏移地址000DH          B    PHANTOM          ;偏移地址000EH          B    PHANTOM          ;偏移地址000FH          B    PHANTOM          ;偏移地址0010H          B    PHANTOM          ;偏移地址0011H          B    PHANTOM          ;偏移地址0012H          B    PHANTOM          ;偏移地址0013H          B    PHANTOM          ;偏移地址0014H          B    PHANTOM          ;偏移地址0015H          B    PHANTOM          ;偏移地址0016H          B    PHANTOM          ;偏移地址0017H          B    PHANTOM          ;偏移地址0018H          B    PHANTOM          ;偏移地址0019H          B    PHANTOM          ;偏移地址001AH          B    PHANTOM          ;偏移地址001BH          B    PHANTOM          ;偏移地址001CH          B    PHANTOM          ;偏移地址001DH          B    PHANTOM          ;偏移地址001EH          B    PHANTOM          ;偏移地址001FH          B    PHANTOM          ;偏移地址0020H          B    PHANTOM          ;偏移地址0021H          B    PHANTOM          ;偏移地址0022H          B    PHANTOM          ;偏移地址0023H          B    PHANTOM          ;偏移地址0024H          B    PHANTOM          ;偏移地址0025H          B    PHANTOM          ;偏移地址0026H          B    PHANTOM          ;偏移地址0027H          B    PHANTOM          ;偏移地址0028H          B    T1UF_ISR          ;偏移地址0029H          B    PHANTOM          ;偏移地址002AH          B    PHANTOM          ;偏移地址002BH          B    PHANTOM          ;偏移地址002CH          B    PHANTOM          ;偏移地址002DH          B    PHANTOM          ;偏移地址002EH          B    PHANTOM          ;偏移地址002FH          B    PHANTOM          ;偏移地址0030H          B    PHANTOM          ;偏移地址0031H          B    PHANTOM          ;偏移地址0032H          B    PHANTOM          ;偏移地址0033H          B    PHANTOM          ;偏移地址0034H          B    PHANTOM          ;偏移地址0035H          B    PHANTOM          ;偏移地址0036H          B    PHANTOM          ;偏移地址0037H          B    PHANTOM          ;偏移地址0038H          B    PHANTOM          ;偏移地址0039H          B    PHANTOM          ;偏移地址003AH          B    PHANTOM          ;偏移地址003BH          B    PHANTOM          ;偏移地址003CH          B    PHANTOM          ;偏移地址003DH          B    PHANTOM          ;偏移地址003EH          B    PHANTOM          ;偏移地址003FH          B    PHANTOM          ;偏移地址0040H          B    PHANTOM          ;偏移地址0041H;--------------------------------------以下是主程序--------------------------------------------------------.text;--------------------------------------系统初始化程序----------------------------------------------------_c_int0        SETC  INTM      ;禁止中断CLRC  CNF      ;B0为数据存储区LDP  #224SPLK  #0000001000000100B,SCSR1;CLKIN10M,CLKOUT20MSPLK  #68H,WDCR      ;不用看门狗LDP  #225LACC  MCRAOR  #0FC0H      ;设置PWM1-6引脚SACL  MCRA;--------------------------------------中断初始化程序----------------------------------------------------LDP  #0SPLK  #0FFH,IFR      ;清所有系统中断标志SPLK  #00000010B,IMR    ;开INT2中断LDP  #232    SPLK  #0FFFH,EVAIFRA  ;清事件管理器A所有中断标志SPLK  #0FH,EVAIFRBSPLK  #0FH,EVAIFRCSPLK  #0200H,EVAIMRA  ;开T1下溢中断SPLK  #0,EVAIMRB    ;屏蔽所有中断SPLK  #0,EVAIMRC    ;屏蔽所有中断;--------------------------------------初始化事件管理器A程序-----------------------------------------SPLK  #500,T1PR    ;T1周期值=50us/50ns/2=500SPLK  #500,CMPR1    ;占空比初值0%SPLK  #500,CMPR2SPLK  #500,CMPR3SPLK  #0000011001100110B,ACTRA  ;引脚PWM1,3,5高有效,2,4,6低有效SPLK  #01F4H,DBTCONA  ;死区时间1*32*50ns=1.6usSPLK  #1000001000000000B,COMCONA  ;允许比较,不用硬件空间矢量SPLK  #1000100000000010B,T1CON;连续增减计数方式,预分频=1;--------------------------------------变量初始化程序-----------------------------------------------------      LDP  #6        ;指向B1SPLK  #0347H,T_SAMPLE  ;采样周期=50us*224=839秒=347H,Q24格式SPLK  #16000,T1_PERIODS    ;T1周期值的Q5格式,500*32SPLK  #11585,MAX_V    ;最大参考电压幅值1/,Q14格式SPLK  #0,SET_F    ;SETF=0SPLK  #10053,F_OMEGA    ;频率调节比-角频率转换率,Q5格式        ;当SET_F=1时,对应最大角频率2π50Hz*25=10053SPLK  #0,THETA_L      ;θ低字,Q12格式SPLK  #0,THETA_H      ;θ高字,Q12格式LAR  AR0,#THETA_90    ;传送常用角度和逆阵数据LAR  AR1,#(28-1)      ;28个LACC  #ANGLES_      ;指向源LAR  AR0INIT_TBL        TBLR  *+,AR1        ;下一个ADD  #1        ;下一个地址BANZ  INIT_TBL,AR0      ;AR1=0结束SPLK  #29335,THETA_I    ;相角查表索引,180/π,Q9格式SPLK  #31291,THETA_S    ;θ-扇区数转换系数,6/(2π),Q15格式SPLK  #SIN_ENTRY_,SIN_ENTRY  ;SIN表起始地址SPLK  #(SIN_ENTRY_+90),SIN_END  ;SIN表结束地址LDP  #232SPLK  #0000100001000010B,T1CON  ;使能T1CLRC  INTM        ;开总中断;--------------------------------------主循环程序(SET_F由外部输入)-----------------------------------MAIN_LOOP        LDP  #6LT  SET_F        ;将频率调节比(Q16格式)转换成角频率MPYU  F_OMEGA      ;Q21PAC          ;积送ACC,Q5格式SACH  OMEGA      ;保存角频率,Q5格式      LT  SET_F        ;将频率调节比(Q16格式)转换成参考电压MPYU  MAX_V      ;Q16*Q14=Q30PACSACH  SET_V      ;保存参考电压幅值,Q14格式B  MAIN_LOOP      ;循环;--------------------------------------假中断处理----------------------------------------------------------PHANTOM        CLRC  INTM      RET;--------------------------------------T1下溢中断处理子程序----------------------------------------------_C_INT2        SST  #ST0,ST0_SAVE    ;保存现场ST0SST  #ST1,ST1_SAVE    ;保存ST1LDP  #6SACH  ACCHSACL  ACCL        ;保存ACCSPH  P_HISPL  P_LO        ;保存PMPY  #1        ;P

汇编~看见汇编头都大啊~

0
回复
zhanghuawei
LV.9
16
2012-08-10 11:02
@cumtzhangwang
手把手教你学dsp的例程程序~三相SPWM【开环】~我有过了~不过还是非常感谢~[图片]~
怎么整了个你直接能下载的?悲剧
0
回复
zhc7302
LV.9
17
2012-08-11 08:10
@javike
应该没有
单片机或DSP
0
回复
geek
LV.7
18
2012-08-11 09:47
这个真没有,我是找不到的。
0
回复
geek
LV.7
19
2012-08-11 09:48
@aczg01987
如下做参考include"240x.h"    ;寄存器地址.global  _c_int0    ;全局化标号;--------------------------------------以下定义变量-------------------------------------------------------------ST0.set0            ;状态寄存器ST0ST1.set1            ;状态寄存器ST1.bssTEMP,1        ;临时变量.bssSET_F,1        ;频率调节比,Q16格式(值为0-1,对应0-50Hz).bssF_OMEGA,1      ;频率调节比-角频率转换率,Q5格式.bssOMEGA,1      ;调制波角频率,Q5格式.bssSET_V,1        ;参考电压,Q14格式.bssMAX_V,1      ;最大参考电压幅值1/  ,Q14格式.bssT_SAMPLE,1      ;采样周期,Q24格式.bssTHETA_H,1      ;参考电压相位角高字,Q12格式.bssTHETA_L,1      ;参考电压相位角低字,Q12格式.bssTHETA_R,1      ;相位角的圆整值,Q12格式.bssTHETA_M,1      ;相位查表值(0-90度),Q12格式.bssTHETA_I,1      ;相角查表索引,Q9格式.bssSS,1        ;SIN符号,Q0格式.bssSC,1        ;COS符号,Q0格式.bssSIN_INDX,1      ;SIN表索引,Q0格式.bssSIN_ENTRY,1      ;SIN表入口地址.bssSIN_END,1      ;SIN表结束地址.bssSIN_THETA,1      ;SINθ值,Q14格式.bssCOS_THETA,1      ;COSθ值,Q14格式.bssUA,1        ;参考电压D轴分量UA,Q12格式.bssUB,1        ;参考电压Q轴分量UB,Q12格式.bssTHETA_S,1      ;θ-扇区数转换系数,Q15格式.bssSECTOR,1      ;参考电压所在的扇区数,Q0格式.bssTHETA_90,1      ;90度,Q12格式.bssTHETA_180,1      ;180度,Q12格式.bssTHETA_270,1      ;270度,Q12格式.bssTHETA_360,1      ;360度,Q12格式.bssDEC_MS,24      ;6个逆阵,Q14格式.bssT1_PERIODS,1      ;定时器1周期值,Q5格式.bssCMP_1,1        ;第1基本矢量,Q0格式.bssCMP_2,1        ;第2基本矢量,Q0格式.bssCMP_0,1        ;0基本矢量/2,Q0格式.bssFIRST_TOG,1      ;存放第一次比较匹配的比较器地址.bssSEC_TOG,1      ;存放第二次比较匹配的比较器地址.bss  ACCH,1        ;ACC高字保存单元.bss  ACCL,1        ;ACC低字保存单元.bss  AR0_SAVE,1      ;AR0保存单元.bss  P_HI,1        ;P寄存器高字保存单元.bss  P_LO,1        ;P寄存器低字保存单元;--------------------------------------CONTEXT段,定义保护现场数据区--------------------------ST0_SAVE  .usect".context",1  ;状态寄存器ST0保存单元ST1_SAVE  .usect".context",1  ;状态寄存器ST1保存单元;--------------------------------------定义主向量段--------------------------------------------------.sect  ".vectors"      ;定义主向量段RESET  B  _c_int0      ;地址0000H,复位,优先级1INT1  B  PHANTOM    ;地址0002H,INT1,优先级4INT2  B  _C_INT2      ;地址0004H,INT2,优先级5INT3  B  PHANTOM    ;地址0006H,INT3,优先级6INT4  B  PHANTOM    ;地址0008H,INT4,优先级7INT5  B  PHANTOM    ;地址000AH,INT5,优先级8INT6  B  PHANTOM    ;地址000CH,INT6,优先级9RESERVED  B  PHANTOM        ;地址000EH,测试,优先级10SW_INT8  B  PHANTOM        ;地址0010H,自定义软中断SW_INT9  B  PHANTOM        ;地址0012H,自定义软中断SW_INT10  B  PHANTOM        ;地址0014H,自定义软中断SW_INT11  B  PHANTOM        ;地址0016H,自定义软中断SW_INT12  B  PHANTOM        ;地址0018H,自定义软中断SW_INT13  B  PHANTOM        ;地址001AH,自定义软中断SW_INT14  B  PHANTOM        ;地址001CH,自定义软中断SW_INT15  B  PHANTOM        ;地址001EH,自定义软中断SW_INT16  B  PHANTOM        ;地址0020H,自定义软中断TRAP      B  PHANTOM          ;地址0022H,TRAP矢量NMI        B  PHANTOM          ;地址0024H,NMI,优先级3EMU_TRAPB  PHANTOM          ;地址0026H,仿真Trap,优先级2SW_INT20  B  PHANTOM        ;地址0028H,自定义软中断SW_INT21  B  PHANTOM        ;地址002AH,自定义软中断SW_INT22  B  PHANTOM        ;地址002CH,自定义软中断SW_INT23  B  PHANTOM        ;地址002EH,自定义软中断SW_INT24  B  PHANTOM        ;地址0030H,自定义软中断SW_INT25  B  PHANTOM        ;地址0032H,自定义软中断SW_INT26  B  PHANTOM        ;地址0034H,自定义软中断SW_INT27  B  PHANTOM        ;地址0036H,自定义软中断SW_INT28  B  PHANTOM        ;地址0038H,自定义软中断SW_INT29  B  PHANTOM        ;地址003AH,自定义软中断SW_INT30  B  PHANTOM        ;地址003CH,自定义软中断SW_INT31  B  PHANTOM        ;地址003EH,自定义软中断;--------------------------------------定义子向量段------------------------------------------------------.sect  ".pvecs"        ;定义子向量段PVECTORS    B    PHANTOM          ;偏移地址0000H          B    PHANTOM          ;偏移地址0001H          B    PHANTOM          ;偏移地址0002H          B    PHANTOM          ;偏移地址0003H          B    PHANTOM          ;偏移地址0004H          B    PHANTOM          ;偏移地址0005H          B    PHANTOM          ;偏移地址0006H          B    PHANTOM          ;偏移地址0007H          B    PHANTOM          ;偏移地址0008H          B    PHANTOM          ;偏移地址0009H          B    PHANTOM          ;偏移地址000AH          B    PHANTOM          ;偏移地址000BH          B    PHANTOM          ;偏移地址000CH          B    PHANTOM          ;偏移地址000DH          B    PHANTOM          ;偏移地址000EH          B    PHANTOM          ;偏移地址000FH          B    PHANTOM          ;偏移地址0010H          B    PHANTOM          ;偏移地址0011H          B    PHANTOM          ;偏移地址0012H          B    PHANTOM          ;偏移地址0013H          B    PHANTOM          ;偏移地址0014H          B    PHANTOM          ;偏移地址0015H          B    PHANTOM          ;偏移地址0016H          B    PHANTOM          ;偏移地址0017H          B    PHANTOM          ;偏移地址0018H          B    PHANTOM          ;偏移地址0019H          B    PHANTOM          ;偏移地址001AH          B    PHANTOM          ;偏移地址001BH          B    PHANTOM          ;偏移地址001CH          B    PHANTOM          ;偏移地址001DH          B    PHANTOM          ;偏移地址001EH          B    PHANTOM          ;偏移地址001FH          B    PHANTOM          ;偏移地址0020H          B    PHANTOM          ;偏移地址0021H          B    PHANTOM          ;偏移地址0022H          B    PHANTOM          ;偏移地址0023H          B    PHANTOM          ;偏移地址0024H          B    PHANTOM          ;偏移地址0025H          B    PHANTOM          ;偏移地址0026H          B    PHANTOM          ;偏移地址0027H          B    PHANTOM          ;偏移地址0028H          B    T1UF_ISR          ;偏移地址0029H          B    PHANTOM          ;偏移地址002AH          B    PHANTOM          ;偏移地址002BH          B    PHANTOM          ;偏移地址002CH          B    PHANTOM          ;偏移地址002DH          B    PHANTOM          ;偏移地址002EH          B    PHANTOM          ;偏移地址002FH          B    PHANTOM          ;偏移地址0030H          B    PHANTOM          ;偏移地址0031H          B    PHANTOM          ;偏移地址0032H          B    PHANTOM          ;偏移地址0033H          B    PHANTOM          ;偏移地址0034H          B    PHANTOM          ;偏移地址0035H          B    PHANTOM          ;偏移地址0036H          B    PHANTOM          ;偏移地址0037H          B    PHANTOM          ;偏移地址0038H          B    PHANTOM          ;偏移地址0039H          B    PHANTOM          ;偏移地址003AH          B    PHANTOM          ;偏移地址003BH          B    PHANTOM          ;偏移地址003CH          B    PHANTOM          ;偏移地址003DH          B    PHANTOM          ;偏移地址003EH          B    PHANTOM          ;偏移地址003FH          B    PHANTOM          ;偏移地址0040H          B    PHANTOM          ;偏移地址0041H;--------------------------------------以下是主程序--------------------------------------------------------.text;--------------------------------------系统初始化程序----------------------------------------------------_c_int0        SETC  INTM      ;禁止中断CLRC  CNF      ;B0为数据存储区LDP  #224SPLK  #0000001000000100B,SCSR1;CLKIN10M,CLKOUT20MSPLK  #68H,WDCR      ;不用看门狗LDP  #225LACC  MCRAOR  #0FC0H      ;设置PWM1-6引脚SACL  MCRA;--------------------------------------中断初始化程序----------------------------------------------------LDP  #0SPLK  #0FFH,IFR      ;清所有系统中断标志SPLK  #00000010B,IMR    ;开INT2中断LDP  #232    SPLK  #0FFFH,EVAIFRA  ;清事件管理器A所有中断标志SPLK  #0FH,EVAIFRBSPLK  #0FH,EVAIFRCSPLK  #0200H,EVAIMRA  ;开T1下溢中断SPLK  #0,EVAIMRB    ;屏蔽所有中断SPLK  #0,EVAIMRC    ;屏蔽所有中断;--------------------------------------初始化事件管理器A程序-----------------------------------------SPLK  #500,T1PR    ;T1周期值=50us/50ns/2=500SPLK  #500,CMPR1    ;占空比初值0%SPLK  #500,CMPR2SPLK  #500,CMPR3SPLK  #0000011001100110B,ACTRA  ;引脚PWM1,3,5高有效,2,4,6低有效SPLK  #01F4H,DBTCONA  ;死区时间1*32*50ns=1.6usSPLK  #1000001000000000B,COMCONA  ;允许比较,不用硬件空间矢量SPLK  #1000100000000010B,T1CON;连续增减计数方式,预分频=1;--------------------------------------变量初始化程序-----------------------------------------------------      LDP  #6        ;指向B1SPLK  #0347H,T_SAMPLE  ;采样周期=50us*224=839秒=347H,Q24格式SPLK  #16000,T1_PERIODS    ;T1周期值的Q5格式,500*32SPLK  #11585,MAX_V    ;最大参考电压幅值1/,Q14格式SPLK  #0,SET_F    ;SETF=0SPLK  #10053,F_OMEGA    ;频率调节比-角频率转换率,Q5格式        ;当SET_F=1时,对应最大角频率2π50Hz*25=10053SPLK  #0,THETA_L      ;θ低字,Q12格式SPLK  #0,THETA_H      ;θ高字,Q12格式LAR  AR0,#THETA_90    ;传送常用角度和逆阵数据LAR  AR1,#(28-1)      ;28个LACC  #ANGLES_      ;指向源LAR  AR0INIT_TBL        TBLR  *+,AR1        ;下一个ADD  #1        ;下一个地址BANZ  INIT_TBL,AR0      ;AR1=0结束SPLK  #29335,THETA_I    ;相角查表索引,180/π,Q9格式SPLK  #31291,THETA_S    ;θ-扇区数转换系数,6/(2π),Q15格式SPLK  #SIN_ENTRY_,SIN_ENTRY  ;SIN表起始地址SPLK  #(SIN_ENTRY_+90),SIN_END  ;SIN表结束地址LDP  #232SPLK  #0000100001000010B,T1CON  ;使能T1CLRC  INTM        ;开总中断;--------------------------------------主循环程序(SET_F由外部输入)-----------------------------------MAIN_LOOP        LDP  #6LT  SET_F        ;将频率调节比(Q16格式)转换成角频率MPYU  F_OMEGA      ;Q21PAC          ;积送ACC,Q5格式SACH  OMEGA      ;保存角频率,Q5格式      LT  SET_F        ;将频率调节比(Q16格式)转换成参考电压MPYU  MAX_V      ;Q16*Q14=Q30PACSACH  SET_V      ;保存参考电压幅值,Q14格式B  MAIN_LOOP      ;循环;--------------------------------------假中断处理----------------------------------------------------------PHANTOM        CLRC  INTM      RET;--------------------------------------T1下溢中断处理子程序----------------------------------------------_C_INT2        SST  #ST0,ST0_SAVE    ;保存现场ST0SST  #ST1,ST1_SAVE    ;保存ST1LDP  #6SACH  ACCHSACL  ACCL        ;保存ACCSPH  P_HISPL  P_LO        ;保存PMPY  #1        ;P
高手
0
回复
小矿石
LV.10
20
2012-08-12 09:27
@aczg01987
如下做参考include"240x.h"    ;寄存器地址.global  _c_int0    ;全局化标号;--------------------------------------以下定义变量-------------------------------------------------------------ST0.set0            ;状态寄存器ST0ST1.set1            ;状态寄存器ST1.bssTEMP,1        ;临时变量.bssSET_F,1        ;频率调节比,Q16格式(值为0-1,对应0-50Hz).bssF_OMEGA,1      ;频率调节比-角频率转换率,Q5格式.bssOMEGA,1      ;调制波角频率,Q5格式.bssSET_V,1        ;参考电压,Q14格式.bssMAX_V,1      ;最大参考电压幅值1/  ,Q14格式.bssT_SAMPLE,1      ;采样周期,Q24格式.bssTHETA_H,1      ;参考电压相位角高字,Q12格式.bssTHETA_L,1      ;参考电压相位角低字,Q12格式.bssTHETA_R,1      ;相位角的圆整值,Q12格式.bssTHETA_M,1      ;相位查表值(0-90度),Q12格式.bssTHETA_I,1      ;相角查表索引,Q9格式.bssSS,1        ;SIN符号,Q0格式.bssSC,1        ;COS符号,Q0格式.bssSIN_INDX,1      ;SIN表索引,Q0格式.bssSIN_ENTRY,1      ;SIN表入口地址.bssSIN_END,1      ;SIN表结束地址.bssSIN_THETA,1      ;SINθ值,Q14格式.bssCOS_THETA,1      ;COSθ值,Q14格式.bssUA,1        ;参考电压D轴分量UA,Q12格式.bssUB,1        ;参考电压Q轴分量UB,Q12格式.bssTHETA_S,1      ;θ-扇区数转换系数,Q15格式.bssSECTOR,1      ;参考电压所在的扇区数,Q0格式.bssTHETA_90,1      ;90度,Q12格式.bssTHETA_180,1      ;180度,Q12格式.bssTHETA_270,1      ;270度,Q12格式.bssTHETA_360,1      ;360度,Q12格式.bssDEC_MS,24      ;6个逆阵,Q14格式.bssT1_PERIODS,1      ;定时器1周期值,Q5格式.bssCMP_1,1        ;第1基本矢量,Q0格式.bssCMP_2,1        ;第2基本矢量,Q0格式.bssCMP_0,1        ;0基本矢量/2,Q0格式.bssFIRST_TOG,1      ;存放第一次比较匹配的比较器地址.bssSEC_TOG,1      ;存放第二次比较匹配的比较器地址.bss  ACCH,1        ;ACC高字保存单元.bss  ACCL,1        ;ACC低字保存单元.bss  AR0_SAVE,1      ;AR0保存单元.bss  P_HI,1        ;P寄存器高字保存单元.bss  P_LO,1        ;P寄存器低字保存单元;--------------------------------------CONTEXT段,定义保护现场数据区--------------------------ST0_SAVE  .usect".context",1  ;状态寄存器ST0保存单元ST1_SAVE  .usect".context",1  ;状态寄存器ST1保存单元;--------------------------------------定义主向量段--------------------------------------------------.sect  ".vectors"      ;定义主向量段RESET  B  _c_int0      ;地址0000H,复位,优先级1INT1  B  PHANTOM    ;地址0002H,INT1,优先级4INT2  B  _C_INT2      ;地址0004H,INT2,优先级5INT3  B  PHANTOM    ;地址0006H,INT3,优先级6INT4  B  PHANTOM    ;地址0008H,INT4,优先级7INT5  B  PHANTOM    ;地址000AH,INT5,优先级8INT6  B  PHANTOM    ;地址000CH,INT6,优先级9RESERVED  B  PHANTOM        ;地址000EH,测试,优先级10SW_INT8  B  PHANTOM        ;地址0010H,自定义软中断SW_INT9  B  PHANTOM        ;地址0012H,自定义软中断SW_INT10  B  PHANTOM        ;地址0014H,自定义软中断SW_INT11  B  PHANTOM        ;地址0016H,自定义软中断SW_INT12  B  PHANTOM        ;地址0018H,自定义软中断SW_INT13  B  PHANTOM        ;地址001AH,自定义软中断SW_INT14  B  PHANTOM        ;地址001CH,自定义软中断SW_INT15  B  PHANTOM        ;地址001EH,自定义软中断SW_INT16  B  PHANTOM        ;地址0020H,自定义软中断TRAP      B  PHANTOM          ;地址0022H,TRAP矢量NMI        B  PHANTOM          ;地址0024H,NMI,优先级3EMU_TRAPB  PHANTOM          ;地址0026H,仿真Trap,优先级2SW_INT20  B  PHANTOM        ;地址0028H,自定义软中断SW_INT21  B  PHANTOM        ;地址002AH,自定义软中断SW_INT22  B  PHANTOM        ;地址002CH,自定义软中断SW_INT23  B  PHANTOM        ;地址002EH,自定义软中断SW_INT24  B  PHANTOM        ;地址0030H,自定义软中断SW_INT25  B  PHANTOM        ;地址0032H,自定义软中断SW_INT26  B  PHANTOM        ;地址0034H,自定义软中断SW_INT27  B  PHANTOM        ;地址0036H,自定义软中断SW_INT28  B  PHANTOM        ;地址0038H,自定义软中断SW_INT29  B  PHANTOM        ;地址003AH,自定义软中断SW_INT30  B  PHANTOM        ;地址003CH,自定义软中断SW_INT31  B  PHANTOM        ;地址003EH,自定义软中断;--------------------------------------定义子向量段------------------------------------------------------.sect  ".pvecs"        ;定义子向量段PVECTORS    B    PHANTOM          ;偏移地址0000H          B    PHANTOM          ;偏移地址0001H          B    PHANTOM          ;偏移地址0002H          B    PHANTOM          ;偏移地址0003H          B    PHANTOM          ;偏移地址0004H          B    PHANTOM          ;偏移地址0005H          B    PHANTOM          ;偏移地址0006H          B    PHANTOM          ;偏移地址0007H          B    PHANTOM          ;偏移地址0008H          B    PHANTOM          ;偏移地址0009H          B    PHANTOM          ;偏移地址000AH          B    PHANTOM          ;偏移地址000BH          B    PHANTOM          ;偏移地址000CH          B    PHANTOM          ;偏移地址000DH          B    PHANTOM          ;偏移地址000EH          B    PHANTOM          ;偏移地址000FH          B    PHANTOM          ;偏移地址0010H          B    PHANTOM          ;偏移地址0011H          B    PHANTOM          ;偏移地址0012H          B    PHANTOM          ;偏移地址0013H          B    PHANTOM          ;偏移地址0014H          B    PHANTOM          ;偏移地址0015H          B    PHANTOM          ;偏移地址0016H          B    PHANTOM          ;偏移地址0017H          B    PHANTOM          ;偏移地址0018H          B    PHANTOM          ;偏移地址0019H          B    PHANTOM          ;偏移地址001AH          B    PHANTOM          ;偏移地址001BH          B    PHANTOM          ;偏移地址001CH          B    PHANTOM          ;偏移地址001DH          B    PHANTOM          ;偏移地址001EH          B    PHANTOM          ;偏移地址001FH          B    PHANTOM          ;偏移地址0020H          B    PHANTOM          ;偏移地址0021H          B    PHANTOM          ;偏移地址0022H          B    PHANTOM          ;偏移地址0023H          B    PHANTOM          ;偏移地址0024H          B    PHANTOM          ;偏移地址0025H          B    PHANTOM          ;偏移地址0026H          B    PHANTOM          ;偏移地址0027H          B    PHANTOM          ;偏移地址0028H          B    T1UF_ISR          ;偏移地址0029H          B    PHANTOM          ;偏移地址002AH          B    PHANTOM          ;偏移地址002BH          B    PHANTOM          ;偏移地址002CH          B    PHANTOM          ;偏移地址002DH          B    PHANTOM          ;偏移地址002EH          B    PHANTOM          ;偏移地址002FH          B    PHANTOM          ;偏移地址0030H          B    PHANTOM          ;偏移地址0031H          B    PHANTOM          ;偏移地址0032H          B    PHANTOM          ;偏移地址0033H          B    PHANTOM          ;偏移地址0034H          B    PHANTOM          ;偏移地址0035H          B    PHANTOM          ;偏移地址0036H          B    PHANTOM          ;偏移地址0037H          B    PHANTOM          ;偏移地址0038H          B    PHANTOM          ;偏移地址0039H          B    PHANTOM          ;偏移地址003AH          B    PHANTOM          ;偏移地址003BH          B    PHANTOM          ;偏移地址003CH          B    PHANTOM          ;偏移地址003DH          B    PHANTOM          ;偏移地址003EH          B    PHANTOM          ;偏移地址003FH          B    PHANTOM          ;偏移地址0040H          B    PHANTOM          ;偏移地址0041H;--------------------------------------以下是主程序--------------------------------------------------------.text;--------------------------------------系统初始化程序----------------------------------------------------_c_int0        SETC  INTM      ;禁止中断CLRC  CNF      ;B0为数据存储区LDP  #224SPLK  #0000001000000100B,SCSR1;CLKIN10M,CLKOUT20MSPLK  #68H,WDCR      ;不用看门狗LDP  #225LACC  MCRAOR  #0FC0H      ;设置PWM1-6引脚SACL  MCRA;--------------------------------------中断初始化程序----------------------------------------------------LDP  #0SPLK  #0FFH,IFR      ;清所有系统中断标志SPLK  #00000010B,IMR    ;开INT2中断LDP  #232    SPLK  #0FFFH,EVAIFRA  ;清事件管理器A所有中断标志SPLK  #0FH,EVAIFRBSPLK  #0FH,EVAIFRCSPLK  #0200H,EVAIMRA  ;开T1下溢中断SPLK  #0,EVAIMRB    ;屏蔽所有中断SPLK  #0,EVAIMRC    ;屏蔽所有中断;--------------------------------------初始化事件管理器A程序-----------------------------------------SPLK  #500,T1PR    ;T1周期值=50us/50ns/2=500SPLK  #500,CMPR1    ;占空比初值0%SPLK  #500,CMPR2SPLK  #500,CMPR3SPLK  #0000011001100110B,ACTRA  ;引脚PWM1,3,5高有效,2,4,6低有效SPLK  #01F4H,DBTCONA  ;死区时间1*32*50ns=1.6usSPLK  #1000001000000000B,COMCONA  ;允许比较,不用硬件空间矢量SPLK  #1000100000000010B,T1CON;连续增减计数方式,预分频=1;--------------------------------------变量初始化程序-----------------------------------------------------      LDP  #6        ;指向B1SPLK  #0347H,T_SAMPLE  ;采样周期=50us*224=839秒=347H,Q24格式SPLK  #16000,T1_PERIODS    ;T1周期值的Q5格式,500*32SPLK  #11585,MAX_V    ;最大参考电压幅值1/,Q14格式SPLK  #0,SET_F    ;SETF=0SPLK  #10053,F_OMEGA    ;频率调节比-角频率转换率,Q5格式        ;当SET_F=1时,对应最大角频率2π50Hz*25=10053SPLK  #0,THETA_L      ;θ低字,Q12格式SPLK  #0,THETA_H      ;θ高字,Q12格式LAR  AR0,#THETA_90    ;传送常用角度和逆阵数据LAR  AR1,#(28-1)      ;28个LACC  #ANGLES_      ;指向源LAR  AR0INIT_TBL        TBLR  *+,AR1        ;下一个ADD  #1        ;下一个地址BANZ  INIT_TBL,AR0      ;AR1=0结束SPLK  #29335,THETA_I    ;相角查表索引,180/π,Q9格式SPLK  #31291,THETA_S    ;θ-扇区数转换系数,6/(2π),Q15格式SPLK  #SIN_ENTRY_,SIN_ENTRY  ;SIN表起始地址SPLK  #(SIN_ENTRY_+90),SIN_END  ;SIN表结束地址LDP  #232SPLK  #0000100001000010B,T1CON  ;使能T1CLRC  INTM        ;开总中断;--------------------------------------主循环程序(SET_F由外部输入)-----------------------------------MAIN_LOOP        LDP  #6LT  SET_F        ;将频率调节比(Q16格式)转换成角频率MPYU  F_OMEGA      ;Q21PAC          ;积送ACC,Q5格式SACH  OMEGA      ;保存角频率,Q5格式      LT  SET_F        ;将频率调节比(Q16格式)转换成参考电压MPYU  MAX_V      ;Q16*Q14=Q30PACSACH  SET_V      ;保存参考电压幅值,Q14格式B  MAIN_LOOP      ;循环;--------------------------------------假中断处理----------------------------------------------------------PHANTOM        CLRC  INTM      RET;--------------------------------------T1下溢中断处理子程序----------------------------------------------_C_INT2        SST  #ST0,ST0_SAVE    ;保存现场ST0SST  #ST1,ST1_SAVE    ;保存ST1LDP  #6SACH  ACCHSACL  ACCL        ;保存ACCSPH  P_HISPL  P_LO        ;保存PMPY  #1        ;P
查表法,楼上真牛
0
回复
2012-08-13 17:31

一直忘了颁奖~~

0
回复
2012-08-14 15:23
@cumtzhangwang
一直忘了颁奖~[图片]~

顶下帖子~

0
回复
2019-11-06 22:22
@xuzeabc
上传了整个工程,在3.3环境下直接编译,仿真就可以了。有问题可以联系我
请问能否解释一下这个“1.0+M*sin[i]/2.0”是什么意思,依据的什么公式,还有后半周期CMPR3中的sina[i]和sinb[i]中不应该只有30个数吗,按照这个写法已经超过30了,万分感谢
0
回复