现在数字控制芯片的功能越来越模拟化,新控制产品经常集中比较器,可编程运放等模拟且可编程配置器件,灵活使用它们可以节约电路成本。本文用于记录dsPIC33系列单片机比较器应用案例。
1、原理分析
型号为dsPIC33EP64GS502的单片机比较器模块单元,功能并不复杂,主要有12位的DAC,多个比较器输入口,和比较器结果输出可配置。
比较器的反向输入端与DAC的负端连接在一起,比较结果可配置。
下图为所使用单片机引脚分布及重映射引脚,加粗的RPx引脚可以根据数据手册进行重映射。
2、代码分析
通过在比较器CMP1A口给一个直流电压,DAC产生一个三角波,并将比较器的输出重映射给RB15引脚。
void DAC_Init(void) { RPOR7bits.RP47R = 0b011000;//比较器结果重映射,RP47连接到模拟比较器输出 1 TRISBbits.TRISB15 = 0; CMP1CONbits.CMPON = 0;//模块关闭 CMP1CONbits.DACOE = 1;//DAC 模拟电压输出到 DACOUT 引脚 CMP1CONbits.ALTINP = 0; CMP1CONbits.INSEL = 0b00;//比较器的输入信号源选择位,选择 CMP1A 输入引脚 CMP1CONbits.EXTREF = 0;//内部参考电压源为 DAC 提供参考电压 CMP1CONbits.CMPPOL = 0;//输出同相 CMP1CONbits.RANGE = 1;//DAC最大值为AVDD CMP1DAC = 0xfff;//比较器 x DAC 控制寄存器 CMP1CONbits.CMPON = 1;//使能比较器 } int main() { unsigned int i = 4095,Flag = 0; System_Colck();//时钟设置 System_Init();//初始化 DAC_Init(); while(1) { if(Flag == 0){ i++; if(i >= 4095) Flag = 1; } if(Flag == 1){ i--; if(i <= 1) Flag = 0; } CMP1DAC = i;//比较器 x DAC 控制寄存器,最大值0xfff } }
3、实验结果
4、不足与改进
- 单片机 Microchip 案例单片机microchip案例 单片机nanoframework案例wifi microchip mplab microchip ide-microchip-mplab-mcc icee-microchip-mplab icee-microchip-mplab ide-microchip-mplab-harmony ide-microchip-mplab-mcc mcc icee-microchip-mplab core compatibility curiosity microchip实例c-kermit microchip harmony ide-microchip-mplab-harmony