打印
[PIC®/AVR®/dsPIC®产品]

使用MCC学习PIC单片机 – PRG 可编程斜坡发生器

[复制链接]
2123|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
oxygenzz|  楼主 | 2019-10-10 17:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


PRG(Programmable Ramp Generator)可编程斜坡发生器,是PIC单片机中的一个非常有特色的模拟外设。在PIC16F166X和PIC16F177X这两个系列上配备有PRG模块。

PRG的作用是生成线性斜坡模拟信号,包括线性向上、线性下降或交替向上向下的三角波信号。

1.        功能框图 与 MCC配置UI对照






2.        功能介绍

1)        PRG可以产生三种形式的斜坡模拟信号

-        向下斜坡,主要应用是开关电源电流控制方式下的斜坡补偿
-        向上斜坡,正向的锯齿波
-        交替向上向下,三角波信号

斜坡由内部电流源向内部电容充电或放电来实现




2)        PRG输入信号

-        Set_rising: 斜坡启动(向上或向下斜坡模式),控制斜坡方向向上(交替向上向下模式)
-        Set_falling: 信号归位(向上或向下斜坡模式),控制斜坡方向向下(交替向上向下模式)
-        电压源:斜坡信号的基准电压,以这个电压为基础产生斜坡变化


3)        斜坡斜率:

-        斜率通过寄存器设定,支持范围0.2V/us 到 2.5V/us


4)        电平控制或边沿控制

-        Set_rising 和 set_falling可以分别选择为电平起效或边沿起效
-        有效信号同时发生时,set_falling优先级高


3.        MCC代码

初始化
void PRG1_Initialize(void)
{
    // RG1GO not operating; RG1EN enabled; RG1MODE rising ramp generator; RG1OS disabled; RG1REDG edge_sensitive; RG1FEDG edge_sensitive;
    PRG1CON0 = 0xB8;
    // RG1FPOL active_low; RG1RPOL active_high;
    PRG1CON1 = 0x02;
    // INS PRG1IN1/OPA2OUT;
    PRG1INS = 0x01;
    // RG1ISET 2.50  V/us;
    PRG1CON2 = 0x1F;
    // RTSS PWM3_output;
    PRG1RTSS = 0x08;
    // FTSS PWM3_output;
    PRG1FTSS = 0x08;
}

//判断PRG是否准备好
bool PRG1_IsReady(void)
{
    return (PRG1CON1bits.RG1RDY);
}

//开始产生斜坡信号
void PRG1_StartRampGeneration(void)
{
    // Start the PRG module by set GO bit
    PRG1CON0bits.RG1GO = 1;
}

//停止斜坡信号生成
void PRG1_StopRampGeneration(void)
{
    // Stop the PRG module by clearing GO bit
    PRG1CON0bits.RG1GO = 0;
}

//使能单次定时操作
void PRG1_EnableOneShot(void)
{
    // Enable One-Shot mode by setting OS bit
    PRG1CON0bits.RG1OS = 1;
}

//禁止单次定时操作
void PRG1_DisableOneShot(void)
{
    // Disable One-Shot mode by clearing OS bit
    PRG1CON0bits.RG1OS = 0;
}

//更新斜率设定
void PRG1_UpdateSlope(uint8_t slopeValue )
{
    PRG1CON2bits.RG1ISET = (slopeValue&0x1F);
}



使用特权

评论回复
沙发
mintspring| | 2019-10-13 14:52 | 只看该作者
斜坡发生器能干啥?

使用特权

评论回复
板凳
mintspring| | 2019-10-13 14:52 | 只看该作者
没用过这类,不清楚,看看

使用特权

评论回复
地板
CoolSilicon| | 2019-10-15 11:50 | 只看该作者
mintspring 发表于 2019-10-13 14:52
斜坡发生器能干啥?

产生PWM, 再数字电源上应用非常广泛.

使用特权

评论回复
5
wahahaheihei| | 2019-10-15 23:34 | 只看该作者
PWM发生器。

使用特权

评论回复
6
oxygenzz|  楼主 | 2019-10-16 10:16 | 只看该作者
mintspring 发表于 2019-10-13 14:52
斜坡发生器能干啥?

PRG输出的三角波/锯齿波,可以跟另一个反馈电压进行比较,从而生成PWM信号。改变反馈电压的大小,就能改变PWM信号的占空比。这是采用模拟方式产生PWM信号的一种常用方法。

使用特权

评论回复
7
aoyi| | 2019-11-13 10:08 | 只看该作者
非常感谢分享

使用特权

评论回复
8
drer| | 2019-11-13 10:46 | 只看该作者
非常感谢分享

使用特权

评论回复
9
gwsan| | 2019-11-13 10:58 | 只看该作者
非常不错的资料

使用特权

评论回复
10
paotangsan| | 2019-11-19 12:53 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
11
asdsfgwsafd| | 2019-12-3 16:21 | 只看该作者
oxygenzz 发表于 2019-10-16 10:16
PRG输出的三角波/锯齿波,可以跟另一个反馈电压进行比较,从而生成PWM信号。改变反馈电压的大小,就能改 ...

感觉PIC直接输出PWM很容易啊
看起来像是一路AD一路PWM就能解决的问题

使用特权

评论回复
12
heisexingqisi| | 2019-12-11 10:07 | 只看该作者
给力。

使用特权

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

本版积分规则

46

主题

190

帖子

11

粉丝