嵌入式设计应用
PIC16F616是一款14引脚、8位的CMOS单片机。采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令。这样有利于提高单片机的运行速度和执行效率。
PIC16F616这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外部晶振提供时钟。内部集成有AD转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能。三个定时器、PWM发生器等可以由用户编程。下面介绍一下PIC16F616的封装。
PIC16F616有一个十位、八路的AD转换器。其参考电压可认为电源电压VDD,也可以是外部参考电压(VREF引脚),当AD转换完成后可以产生一个间断,此间断可以把单片机从睡眠状态中唤醒。
ADC框图
1、端口配置
需要采样模拟信号的端口必需设置为模拟输入状态,假如设置为数字端口,将使转换结果不准确,端口的模拟输入可以由寄存器ANSEL来配置。
2、通道选择
有八路外部通道和三路内部通道,可以通过ADCON0寄存器的CHS《3:0》位来设置通道的选择。
3、ADC参考电压
参考电压可以是VDD,也可以是外部参考电压,可以通过ADCON0寄存器的VCFG位来设置,当VCFG=0时,参考电压为VDD,当VCFG=1时,参考电压为外部参考电压(来自VREF引脚)。
模数转换TAD周期
4、转换时钟
寄存器ADCON1专门来设置AD的时钟源,ADCS《2:0》不同组合,可以将AD的时钟源设置为不同的频率,可认为FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64和FRC(内部RC)。
5、中断
要使用AD的间断功能,可以先把AD间断使能,ADIE位设置为1(在寄存器PIE1中),PEIE位置1(在INTCON寄存器中),总间断GIE位置1(INTCON寄存器中)。
6、结果格式
AD转换后的结果保留在一个寄存器对里面:ADRESH和ADRESL,但是AD转换结果只有十位,设置AD转换格局可以通过设置ADCON0的ADFM位来选择,当ADFM=1时10位的AD结果的低八位保留在ADRESL内,高两位保留在ADRESH内;当ADFM=0时10位的AD结果的高八位保留在ADRESH内,低两位保留在ADRESL内。
10位A/D转换结果格式
1、启动转换
要将ADC模块的ADCON0寄存器的ADON位和ADCON0寄存器的GO/DONE位设置为1将启动模数转换。
2、转换完成
转换完成时,ADC模块:
1)清零GO/DONE位
2)将ADIF标志位置1
3)用新的转换结果更新ADRESH:ADRESL寄存器
3、终止转换
如果必须在转换完成之前终止转换,可用软件将GO/DONE位清零。不会用部分完成的模数转换结果更新ADRESH和ADRESL寄存器,ADRESH:ADRESL寄存器仍然保留的前一次转换的值。此外,必须经过2TAD的延时后才能开始下一次的采集。延时结束后将自动开始对选定通道的输入进行采集。
4、休眠期间的ADC操作
ADC模块可以再休眠模式下工作。这需要把ADC转换时钟设置为FRC选项。选择FRC时钟源后,ADC需等待一个指令周期后才能启动转换操作。这使得可以执行SLEEP指令,以降低转换期间的系统噪声。如果允许了ADC中断,转换完成时器件将从休眠状态唤醒。如果允许了ADC中断,尽管ADON位仍保持位置1,转换完成后ADC模块将关闭。
ADC时钟源不是FRC时,尽管ADON位仍保持位置1,SLEEP指令会导致当前转换中止,ADC模块关闭。
5、特殊事件触发器
ECCP特殊事件触发器允许定期测试ADC而无需软件干预。当出现触发信号后,GO/DONE位由硬件置1,Tmer1计数器复位为零。
使用特殊事件触发器不能确保正确的ADC时序。用户需负责确保ADC时序要求得到满足。
A/D转换
6、A/D转换步骤
以下是用ADC执行模数转换的示例步骤:
1)配置端口:
禁止引脚输出驱动器(见TRIS寄存器)
将引脚配置为模拟
2)配置ADC模块:
选择ADC转换时钟
配置参考电压
选择ADC输入通道
选择结果格式
开启ADC模块
3)配置ADC中断(可选):
清零ADC中断标志
允许ADC中断
允许外设中断
允许全局中断
4)等待所需采集时间
5)通过将GODONE位置1启动转换
6)通过以下方式之一等待ADC转换完成:
查询GO/DONE位
等待ADC中断(已允许中断)
7)读取ADC结果
8)清零ADC中断标志(如果已允许中断需要)
7、相关寄存器
为了使ADC达到规定的精度,必须使充电保持电容(CHOLD)充满至输入通道的电平。模拟输入模型见图。模拟信号源阻抗(RS)和内部采样开关阻抗(RSS)直接影响电容CHOLD的充电时间。采样开关阻抗(RSS)随器件电压(VDD)的变化而变化。建议模拟信号源的最大阻抗为10kΩ。采集时间随着源阻抗的降低而缩短。在选择(或改变)模拟输入通道后,必须在开始转换前完成A/D采集。可以使用公式来计算最小采集时间。该公式假设误差为1/2Lsb(ADc转换需要1024步)。1/2LSb误差是ADC达到规定分辨率所允许的最大误差。
采集时间计算
全部0条评论
快来发表一下你的评论吧 !