6252|7

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

f2812用比较单元实现pwm波输出问题,请帮忙?? [复制链接]



我用f2812的比较单元实现pwm输出有问题,我的对寄存器初始化代码如下面所示,这里我采用比较单元输出pwm波的同时,也采用了通用定时器1的比较输出,在运行程序时,通用定时器的比较输出是正常的,但是用比较单元pwm输出引脚没现象!郁闷,请高手指点,是不是哪里设置有问题???

EALLOW;
GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 0x0ff;//使能通用时钟1比较输出引脚
EDIS;

EvaRegs.GPTCONA.bit.TCOMPOE = 1;
EvaRegs.GPTCONA.bit.T1PIN = 1;
EvaRegs.T1PR = 32763;//时钟1的周期值为T1PR + 1
EvaRegs.T1CMPR = 10000; //比较值设置

//比较单元寄存器初始化
EvaRegs.CMPR1 = 32763;
EvaRegs.CMPR2 = 32763;
EvaRegs.CMPR2 = 32763;
EvaRegs.ACTR.all = 0x0666;
EvaRegs.DBTCONA.all = 0;
EvaRegs.COMCONA.all = 0xA6E0;

EvaRegs.T1CNT = 0;                //通用时钟1计数值置为0
EvaRegs.T1CON.all = 0X1742;
//时钟1控制,采用连续递增方式,预定标为128,内部时钟,使能比较,使用自己的周期值
EvaRegs.T1CON.bit.TENABLE = 0; //先关时钟,在后面再开
EvaRegs.T1CON.bit.TCLD10 = 1;

最新回复

不客气,没帮上忙!  详情 回复 发表于 2008-8-9 12:02
 
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
上面有条语句错误GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6 = 0x0ff
改为GpioMuxRegs.GPAMUX.all = 0x0ff
但结果还是一样啊!请高手帮忙啊!
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
已经解决
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

4
 
怎么解决的?我的都没输出
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
我使用的是TI的PWM例程.如下.请cbl20020825帮我看看.别人试了是好的,但在我的板子上却不行.总没有输出.


#include \"DSP281x_Device.h\"     // DSP281x Headerfile Include File
#include \"DSP281x_Examples.h\"   // DSP281x Examples Include File



void init_eva(void);
void init_evb(void);




void main(void)
{


   InitSysCtrl();


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

// Disable CPU interrupts
   DINT;


   InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
   IER = 0x0000;
   IFR = 0x0000;


// Service Routines (ISR).  

   InitPieVectTable();
   

   init_eva();
   init_evb();

       
  for(;;

}

void init_eva()
{

// EVA Configure T1PWM, T2PWM, PWM1-PWM6
// Initalize the timers
   // Initalize EVA Timer1
   EvaRegs.T1PR = 0xFFFF;       // Timer1 period
   EvaRegs.T1CMPR = 0x3C00;     // Timer1 compare
   EvaRegs.T1CNT = 0x0000;      // Timer1 counter
   // TMODE = continuous up/down
   // Timer enable
   // Timer compare enable
   EvaRegs.T1CON.all = 0x1042;   


  // Initalize EVA Timer2
  EvaRegs.T2PR = 0x0FFF;       // Timer2 period
  EvaRegs.T2CMPR = 0x03C0;     // Timer2 compare
  EvaRegs.T2CNT = 0x0000;      // Timer2 counter
  // TMODE = continuous up/down
  // Timer enable
  // Timer compare enable
  EvaRegs.T2CON.all = 0x1042;   


  // Setup T1PWM and T2PWM
  // Drive T1/T2 PWM by compare logic
  EvaRegs.GPTCONA.bit.TCMPOE = 1;
  // Polarity of GP Timer 1 Compare = Active low
  EvaRegs.GPTCONA.bit.T1PIN = 1;
  // Polarity of GP Timer 2 Compare = Active high
  EvaRegs.GPTCONA.bit.T2PIN = 2;

  // Enable compare for PWM1-PWM6
  EvaRegs.CMPR1 = 0x0C00;
  EvaRegs.CMPR2 = 0x3C00;
  EvaRegs.CMPR3 = 0xFC00;
   
  // Compare action control.  Action that takes place
  // on a cmpare event
  // output pin 1 CMPR1 - active high
  // output pin 2 CMPR1 - active low
  // output pin 3 CMPR2 - active high
  // output pin 4 CMPR2 - active low
  // output pin 5 CMPR3 - active high
  // output pin 6 CMPR3 - active low
  EvaRegs.ACTRA.all = 0x0666;
  EvaRegs.DBTCONA.all = 0x0000; // Disable deadband
  EvaRegs.COMCONA.all = 0xA600;


}

void init_evb()
{

// EVB Configure T3PWM, T4PWM and PWM7-PWM12
// Step 1 - Initialize the Timers

  // Initialize EVB Timer3
  // Timer3 controls T3PWM and PWM7-12
  EvbRegs.T3PR = 0xFFFF;       // Timer3 period
  EvbRegs.T3CMPR = 0x3C00;     // Timer3 compare
  EvbRegs.T3CNT = 0x0000;      // Timer3 counter
  // TMODE = continuous up/down
  // Timer enable
  // Timer compare enable
  EvbRegs.T3CON.all = 0x1042;   

  // Initialize EVB Timer4
  // Timer4 controls T4PWM
  EvbRegs.T4PR = 0x00FF;       // Timer4 period
  EvbRegs.T4CMPR = 0x0030;     // Timer4 compare
  EvbRegs.T4CNT = 0x0000;      // Timer4 counter
  // TMODE = continuous up/down
  // Timer enable
  // Timer compare enable
  EvbRegs.T4CON.all = 0x1042;   

  // Setup T3PWM and T4PWM
  // Drive T3/T4 PWM by compare logic
  EvbRegs.GPTCONB.bit.TCMPOE = 1;
  // Polarity of GP Timer 3 Compare = Active low
  EvbRegs.GPTCONB.bit.T3PIN = 1;
  // Polarity of GP Timer 4 Compare = Active high
  EvbRegs.GPTCONB.bit.T4PIN = 2;

  // Enable compare for PWM7-PWM12
  EvbRegs.CMPR4 = 0x0C00;
  EvbRegs.CMPR5 = 0x3C00;
  EvbRegs.CMPR6 = 0xFC00;
   
  // Compare action control.  Action that takes place
  // on a cmpare event
  // output pin 1 CMPR4 - active high
  // output pin 2 CMPR4 - active low
  // output pin 3 CMPR5 - active high
  // output pin 4 CMPR5 - active low
  // output pin 5 CMPR6 - active high
  // output pin 6 CMPR6 - active low
  EvbRegs.ACTRB.all = 0x0666;
  EvbRegs.DBTCONB.all = 0x0000; // Disable deadband
  EvbRegs.COMCONB.all = 0xA600;
}





[ 本贴由 blue-sky 于 2007-8-9 10:47 PM 最后编辑 ]

附件

Example_281xEvPwm.c (6.34 KB)

2007-8-9 14:44, 下载次数: 111

附件

Example_281xEvPwm.c (6.34 KB)

2007-8-9 14:44, 下载次数: 111

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
设置应该没问题啊,如果是例程的话,你可以找找技术支持一下!还有个方法测试是你的软件问题还是硬件问题,就是使能比较中断,周期中断等等,如果软件设置没问题而是硬件问题以至没输出去的话,那一定能进入中断的,!而且你可以将pwm输出引脚设为通用IO口,进行编程输出,看现象如何???
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢cbl20020825.我的问题已经解决.是/PDPINTA引脚没接好,拉低禁止了PWM的输出.
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

8
 
不客气,没帮上忙!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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