3596|4

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

[求助]2812的SPWM波生成 [复制链接]

本人新手上路,学用2812的开发板写一个spwm输出的程序。可是改变CMPR1之后输出波形无反应,PWM1管脚还是等宽的脉冲,请问这是什么原因呢?多谢指点!
程序如下:
#include \"DSP281x_Device.h\"     // DSP281x Headerfile Include File
#include \"DSP281x_Examples.h\"   // DSP281x Examples Include File
#include \"math.h\"
#include \"stdio.h\"
#define Pr_T1   3000    // the period of T1


unsigned char Width[]={0x0D66,0x1AC2,0x280C,0x3539,0x4242,0x4f1b,0x5bbe,0x681f,0x7438,0x8000,0x8b6d,0x9679,0xa11b,0xab4b,0xb504,0xbe3e,0xc6f2,0xcf1b,0xd6b2,0xddb3,0xe418,0xe9dd,0xeefe,0xf377,0xf746,0xfa67,0xfcd8,0xfe98,0xffa5,0xffff};
unsigned char i=0;   // which section the vector located.

void initEva(void)
{
  EvaRegs.T1PR=Pr_T1;      //Timer1 period
  EvaRegs.T1CON.all=0x0842;//内部时钟周期,使能定时器及其比较功?
  EvaRegs.GPTCONA.all=0x0052;//disable Timer2
  EvaRegs.ACTRA.all=0x0666;  //
  EvaRegs.COMCONA.all=0x82E0; //disable SVPWM
  EvaRegs.CMPR1=0x0D66;     //initialize CMPRx

}

void main(void)
{

   InitSysCtrl();

   EALLOW;
  
   GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6  pins
   GpioMuxRegs.GPBMUX.all = 0x00FF; // EVB PWM 7-12 pins
   EDIS;
   
   DINT;

   InitPieCtrl();

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();

   initEva();
   while(i<30)
   {
    EvaRegs.COMCONA.all=0x82E0; //disable SVPWM
    EvaRegs.CMPR1=Width;
    i++;
   }
   
  for(;;
}

[ 本贴由 searchfox 于 2008-5-15 08:36 PM 最后编辑 ]

最新回复

#define Pr_T1   3000    // the period of T1 ...... EvaRegs.T1PR=Pr_T1;      //Timer1 period ...... EvaRegs.CMPR1=0x0D66;     //initialize CMPRx 用哪种计数模式? 0x0d66 =3430;比较值大于周期值。 EvaRegs.CMPR1=Width; Width是什么意思?  详情 回复 发表于 2009-8-13 02:57
 
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
请帮忙看下啊,急。。。
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
再问。。。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
while(i<30)
   {
    EvaRegs.COMCONA.all=0x82E0; //disable SVPWM
    EvaRegs.CMPR1=Width;
    i++;
   }
Width这里出了问题吧?改成Width?
菜鸟一个,随便说说
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
#define Pr_T1   3000    // the period of T1
......
EvaRegs.T1PR=Pr_T1;      //Timer1 period
......
EvaRegs.CMPR1=0x0D66;     //initialize CMPRx

用哪种计数模式?
0x0d66 =3430;比较值大于周期值。
EvaRegs.CMPR1=Width;

Width是什么意思?
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表