PIC 脉冲调控PWM模块

PWM的输出引脚通过PWMxCON寄存器的第7位 PWM 模块使能位(PWMxEN)配置为PWM输出

其中输出脚分别为   RC5-----PWM1    RC3-----PWM2    RA2-----PWM3    RC1-----PWM4

 

 

个人总结关于PIC的PWM模块配置的一般步骤,感觉数据手册推荐的配置方法略微麻烦。

①配置系统时钟

②配置PWM引脚为输出

③配置TIM2的预分频数

④配置计数器PR2和TMR2

⑤配置输出极性并且PWM引脚输出使能

⑥设置占空比

⑦使能PWM波输出

 

 

void main()
{
    OSCCON = 0x78;//16M
    __delay_ms(20);
    
    TRISCbits.TRISC5 = 0;//RC5配置为输出
    ANSELCbits.ANSC3 = 0;
    TRISCbits.TRISC3 = 0;//RC3配置为输出
    ANSELCbits.ANSC1 = 0;
    TRISCbits.TRISC1 = 0;//RC1配置为输出 
    ANSELAbits.ANSA2 = 0;
    TRISAbits.TRISA2 = 0;//RA2配置为输出   
    
    T2CONbits.TMR2ON = 1;//Timer2 使能
    T2CONbits.T2CKPS0 = 0;
    T2CONbits.T2CKPS1 = 0;//1:1分频
    
    PR2 = 199;
    TMR2 = 0;


    PWM1CONbits.PWM1POL = 0;//PWM 输出为高电平有效
    PWM2CONbits.PWM2POL = 0;//PWM 输出为高电平有效
    PWM3CONbits.PWM3POL = 0;//PWM 输出为高电平有效
    PWM4CONbits.PWM4POL = 0;//PWM 输出为高电平有效
    
    PWM1CONbits.PWM1EN = 1;//使能 PWM 模块
    PWM2CONbits.PWM2EN = 1;//使能 PWM 模块
    PWM3CONbits.PWM3EN = 1;//使能 PWM 模块
    PWM4CONbits.PWM4EN = 1;//使能 PWM 模块
    
    PWM1DCH = 0x19;
    PWM1DCL = 0x00;//12.5%
    PWM2DCH = 0x3c;
    PWM2DCL = 0x00;//30%
    PWM3DCH = 0x64;
    PWM3DCL = 0x00;//50%
    PWM4DCH = 0xa0;
    PWM4DCL = 0x00;//80%
    
    PWM1CONbits.PWM1OE = 1;//使能到 PWM引脚的输出
    PWM2CONbits.PWM2OE = 1;//使能到 PWM引脚的输出
    PWM3CONbits.PWM3OE = 1;//使能到 PWM引脚的输出
    PWM4CONbits.PWM4OE = 1;//使能到 PWM引脚的输出
    while(1)
    {
    }
}

 

 

理论上周期为 f=FOSC/4/PS/(PR2+1)=16M/4/1/(199+1)=20K

占空比为  D1=100/800=12.5%

                D2=240/800=30%

                D3=500/800=50%

                D4=640/800=80%

实际示波器测量得到波形如下图所示

实际与理论基本相符

 

 

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值