PIC16F + PICC9.50 学习笔记(三)

本文详细介绍了如何在PIC16F690微控制器上通过CCP开启PWM模式,以20KHz频率、50%占空比输出PWM波形。重点讲解了PWM周期计算、脉冲宽度、占空比设置以及分辨率的确定,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现CCP开启PWM模式后,输出是固定的引脚,以PIC16F690为例,RC5为固定PWM输出脚。

 

 

 /****************************************************************/
//开启CCP1 使用PWM RC5脚输出 20KHz 占空比为50% 的波形
//
//
/****************************************************************/
#include <pic.h>
#include <pic16f685.h>
__CONFIG(WDTEN & PWRTEN & MCLREN & BOREN & IESODIS & FCMDIS & INTIO);
 
//-------------中断服务程序------------------------------------ 
void interrupt isr() 
{   
 if(TMR2IE==1&&TMR2IF==1)
 {
  TMR2IF=0;
 }

void SpwmInit()
{
 OSCCON=0x7f;
 TRISC5=1;
 PR2=0x63;
 CCP1CON=0b00001111;
 CCPR1L= 0b00110010;
 TMR2IF=0;
 T2CON=0;
 GIE=0;
 TMR2IE=1;
 PEIE=1;
 TMR2ON=1;
}

main() 
{
 SpwmInit();
 
 TRISC5=0;  

 while(1)
 {
 
 }
}

 

 

/*

 

PWM周期 = [(PR2) + 1] * 4 * TOSC *(TMR2预分频值)
注: TOSC = 1/FOSC

脉冲宽度= (CCPR1L:CCP1CON<5:4>) * TOSC * (TMR2预分频值)
 
占空比= (CCPR1L:CCP1CON<5:4>)/4(PR2 + 1)
 
分辨率= log[4(PR2 + 1)]/log(2)位

------------


PWM 频率                            1.22 kHz    4.90 kHz    19.61 kHz    76.92 kHz    153.85 kHz    200.0 kHz
定时器预分频值(1、4和16)  16              4               1                   1                 1                   1
PR2 值                                 0x65          0x65          0x65             0x19           0x0C             0x09
最大分辨率(位)                   8                8               8                   6                 5                   5

 

 OSCCON=0x7f;  //8MHZ

PR2= 0x63 =99

 

PWM周期 = 50us = (99+1)* 4 * TOSC *(TMR2预分频值) = 400* 1/8MHZ = 50

 

(CCPR1L:CCP1CON<5:4>) =(0b00110010 :0b00001111)= 0b0011001000 = 200 //CCP1CON<5:4>  取5,4位 =00  即 0b00“00”1111

 

脉冲宽度 = (CCPR1L:CCP1CON<5:4>) * TOSC * (TMR2预分频值) =(0b00110010 :0b00001111)* 1/8 = 200 * 1/8=25us 

 

占空比= 50% = (CCPR1L:CCP1CON<5:4>)/4(PR2 + 1) = 200 /4* (99+1) =200/400 = 1/2

 

分辨率= 8= log[4(PR2 + 1)]/log(2) =  log(400)/log(2)  

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值