打印
[PIC32/SAM]

PIC12F675 CCP 模块 PWM 配置技巧

[复制链接]
446|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
热爱浪漫|  楼主 | 2025-7-2 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC12F675 的 PWM 占空比不准确?关键是 PR2 寄存器和 TMR2 预分频器的配合。以下是计算公式和配置代码:
// PWM频率 = Fosc / (4 * (PR2 + 1) * TMR2预分频比)
// 对于4MHz晶振,设PWM频率为5kHz:
// 5000 = 4000000 / (4 * (PR2 + 1) * 16) → PR2 = 124

void PWM_Init(void) {
    PR2 = 124;            // 设置周期寄存器
    CCP1CON = 0x0C;       // PWM模式,DC1B<1:0>=00
    CCPR1L = 62;          // 初始占空比50% (62/124)
    T2CON = 0x03;         // TMR2预分频比1:16,启用TMR2
}

使用特权

评论回复
沙发
734774645| | 2025-7-29 16:03 | 只看该作者
#include <pic.h>
__CONFIG(INTIO & WDTDIS & MCLRDIS & BOREN & CPD);  // 内部振荡器,关闭看门狗

void PWM_Init() {
    TRISIO2 = 0;          // GPIO2 (CCP1) 设为输出
    ANSEL  &= ~0x04;      // 关闭 GPIO2 的模拟功能(设为数字模式)
   
    PR2     = 249;        // 周期值(4MHz 时钟 → 4kHz PWM)
    CCPR1L  = 125;        // 占空比 50%(高 8 位:125 = 0x7D)
    CCP1CON = 0b00111100; // PWM 模式 + 占空比低 2 位 = 00
   
    T2CON   = 0b00000100; // Timer2 开启,预分频 1:1
    TMR2    = 0;          // 清零 Timer2
}

使用特权

评论回复
板凳
幸福小强| | 2025-7-29 18:56 | 只看该作者
做成函数,直接传递参数进去后自动配置寄存器,比较好。

使用特权

评论回复
地板
灵犀幻影| | 2025-7-30 16:10 | 只看该作者
这个配置代码看起来是正确的,确保了PWM频率和占空比的设置。你提到的PR2和TMR2预分频器的配合确实关键。

使用特权

评论回复
5
星辰伴梦| | 2025-7-31 17:52 | 只看该作者
这个配置看起来是正确的,PR2和TMR2的设置确实会影响PWM的频率和占空比。确保你的晶振频率和代码中的计算匹配。

使用特权

评论回复
6
复古留声机| | 2025-7-31 20:34 | 只看该作者
这个配置代码很实用,我之前也遇到PWM占空比不准的问题,按照这个公式和代码设置后问题解决了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝