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);
}
|