打印

请帮看一下程序。

[复制链接]
2094|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xcq|  楼主 | 2007-6-15 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是dsPIC30f4011,我用它的PWM发生器做个100K的PWM波,但是程序执行后这个波为18.3K,请问是什么原因。还有我用的是自由模式工作,为什么时基周期寄存器和占空比寄存器是相同值时输出占空比为50%的方波,我看它的资料上不应该是占空比寄存器的值是时基周期寄存器的一半时才对应50%的吗?

#include "p30f4011.h"

#define Fcy    40000000.0
#define Fpwm 100000.0
main()
{
 PWM_INI();
 while (1)
  {
   Nop();}
}

void PWM_INI(void)
{
 
 SRbits.IPL=7;        //关中断
 PTCON=0x8000;        // PWM时基控制寄存器
 PTMR=0x0000;        //PWM时基寄存器
 PTPER=Fcy/(Fpwm*4)-1;            //PWM时基周期寄存器
 PWMCON1=0x0011;            //PWM控制寄存器1,PWM1H:PWM1L为互补输出
 PDC1=Fcy/(Fpwm*4);            //PWM占空比寄存器
 IFS2bits.PWMIF=0;        //PWM中断标志清0
 IEC2bits.PWMIE=1;        //允许PWM中断
 IPC9bits.PWMIP=7;        //PWM中断优先级为7
 SRbits.IPL=0;        //开中断
 
}

void __attribute__((__interrupt__)) _PWMInterrupt(void)
{
  IFS2bits.PWMIF=0;        //PWM中断标志清0
 
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

xcq

7

主题

17

帖子

0

粉丝