10168|17

1282

帖子

10

TA的资源

五彩晶圆(初级)

楼主
 

【为C2000做贡献】2812的SPWM源程序 [复制链接]

有用的就拷过去,如果感觉好的话,我还会把SVPWM的程序奉上!!

 

 

  1. //SPWM

  2. #include "DSP281x_Device.h"
    #include "stdio.h"
    #include "math.h"
    #include "float.h"
    #define NX 404
    #define PI 3.1415925
    float M=0.8;
    int k0=0,h1=0;
    double a[NX];
    void zkb();
    interrupt void eva_T1UFINT_ISR(void);
    unsigned int n=0;
    float q,l,j;
    void main(void)
    {
    InitSysCtrl(); //系统初始化
    DINT; //禁止全局中断
    IER=0x0000;
    IFR=0x0000;

    EALLOW;
    GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins
    EDIS;

    InitPieCtrl();
    InitPieVectTable();

    EALLOW; //使能定时器1下益中断
    PieVectTable.T1UFINT=&eva_T1UFINT_ISR;
    EDIS;

    IER|=M_INT2; //开中断2
    PieCtrlRegs.PIEIER2.bit.INTx6=1; //开下益中断

    ////////////////////

    while (n<=NX)
    {
    q=(n+0.75); //为消除偶次偕波,减少谐波角度出发,选择从A相3/4周期进行采样
    q=q*2*PI;
    q/=405;
    j=sin(q);
    l=1875*(1+M*j);//M为调制比 //计算占空比表达式
    //if(l>=187&l<=1687)(此处网友设置为错误的)
    if(l>=375&l<=3375)
    a[n]=l;
    else
    {
    if(l>3375)
    a[n]=3375;
    else
    a[n]=375;
    }

    n=n+1;
    }
    //////////////////////////////


    ///init_eva
    ///////////////////////////////
    EvaRegs.ACTRA.all=0x0666;
    EvaRegs.DBTCONA.all = 0x0000; // Disable deadband
    EvaRegs.COMCONA.all = 0xa600; //使能比较操作

    EvaRegs.EVAIMRA.all=0x0200; //EVAIMRA(EVA的中断屏蔽寄存器A).T1UIINT(通用定时器1的下溢中断使能)
    EvaRegs.EVAIMRB.all=0x0000;
    EvaRegs.EVAIMRC.all=0x0000;
    EvaRegs.EVAIFRA.all=0xffff;//EVAIFRA(EVA的中断标志寄存器.T1UIINT(通用定时器1的下溢中断标志)
    EvaRegs.EVAIFRB.all=0xffff;//写1清除定时器1的下溢中断标志
    EvaRegs.EVAIFRC.all=0xffff;
    EvaRegs.CMPR1=0; //初始化寄存器的值
    EvaRegs.CMPR2=0;
    EvaRegs.CMPR3=0;

    EvaRegs.GPTCONA.all=0x0041;
    //周期必须大于最大的正弦表格值
    EvaRegs.T1PR = 3750; // Timer1 period PWM载波周期为 65536个定标的定时器时钟周期
    //EvaRegs.T1PR = 0xffff;
    //EvaRegs.T1CNT = 937; // Timer1 counter
    EvaRegs.T1CNT = 937;
    //EvaRegs.T1CON.all = 0x0b4e; // 选择模式产生PWM波10

    EvaRegs.T1CON.all = 0x0b4e;
    EINT;



    return;
    ///////////////////////////
    EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //启动定时器1


    for(;;);
    }

    interrupt void eva_T1UFINT_ISR(void) // EV-A
    {
    int h2;
    int flag;
    flag=(EvaRegs.EVAIFRA.all)&0x0200; //T1UFINT中下益中断标志位置1
    if(flag!=0x0200)
    {
    EINT;
    return;
    }
    else
    {
    if(k0<=NX)
    {
    h1=k0+135; //B相表达式
    if(h1>=404)h1=h1-404;
    h2=k0+270; //C相表达式
    if(h2>=404)h2=h2-404;
    EvaRegs.CMPR1=a[k0];
    EvaRegs.CMPR2=a[h1]; //更新比较寄存器2的值
    EvaRegs.CMPR3=a[h2]; //更新比较寄存器3的值
    k0=k0+1;
    }
    else
    {
    k0=0;
    }
    }

    EvaRegs.EVAIMRA.bit.T1UFINT=1; //清除中断屏蔽标志
    EvaRegs.EVAIFRA.bit.T1UFINT=1; //清楚中断使能标志
    PieCtrlRegs.PIEACK.all=0x0002; //响应同组中断
    EINT; //开全局中断
    }

复制代码

最新回复

正在学习28377D的PWM,过来MARK一下。哈哈  详情 回复 发表于 2017-8-8 21:01
 
点赞 关注(2)

回复
举报

299

帖子

3814

TA的资源

纯净的硅(初级)

沙发
 
给一个支持!
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

板凳
 
白天就不刷贴了,影响大家的提问,等到夜深人静的时候在发!
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

4
 
学习学习~
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(中级)

5
 
有vhdl程序些的吗?有的话楼主分享一下下,不胜感激!
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼主你好
  可否把SVPWM的代码贴出来!谢谢
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

7
 
太感谢了
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 
顶啊!~人才,LZ我爱你
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

9
 
为什么用ccs3.3运行,出现"SPWM.c", line 3: fatal error: expected a file name   这个错误呢,新手请教,感谢
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

10
 
程序很好,可以用,就是不知道怎么改频率?请教各位大侠,非常感谢!
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢楼主!!!!!!!!!!!
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢楼主!!!!!!!!!!!
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

13
 
顶一个
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

14
 
感谢版主的无私,本人正在学习中!!!
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

15
 
大神,求助一下,请问您的程序中,三角波的频率是否为8k,三角波的频率是否为20hz左右
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

16
 
必须顶啊
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

17
 
好不错!!!!!!!!!!!!!!!!!!!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 
正在学习28377D的PWM,过来MARK一下。哈哈
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表