PIC单片机RC振荡器的使用及校准方法

畅学单片机 2019-03-20 11:13

在PIC的单片机中有多种型号有内部RC振荡器的功能,从而省去了晶振,不但节省了成本,并且我们还多了两个IO端口可以使用。

但是,由于RC振荡器中电阻、电容的离散性很大,因此,在有内部RC振荡器的单片机中,它的内部RAM中都会有一个名为OSCCAL的校准寄存器,通过置入不同的数值来微调RC振荡器的振荡频率。并且,单片机的程序存储器中,也会有一个特殊的字来储存工厂生产时测得的校准值。下面我以常用的12C508A和12F629为例加以说明。

12C508A的复位矢量是程序的最高字0x1FF,这个字节生产商已经固定的烧写为MOVLW 0xXX,指令执行后,W寄存器中即为校准值XX,当我们需要校准时,那么,在紧接着的地址0x0应该是一条这样的指令:MOVWF OSCCAL。接下去RC振荡器就会以标准的振荡频率运行了。

12F629的校准值也存放在最高字--0x3FF中,内容是RETLW 0xXX,但它的复位矢量却是0x0。这样,在我们需要校准RC振荡器时,在初始化过程中要加上下面两句:


CALL 0x3ff


MOVWF OSCCAL


当然,你还要注意寄存器的块选择位。

以前,我在做项目时,没太注意这个问题,这是因为在使用12C508A时,HI-TECH在进行编译时已经偷偷地替我们做了这项工作。它会在程序的0x0处自动加一条MOVWF OSCCAL。用12F629做接收解码代替2272时也没发生什么问题,但是在用被它作滚动码解码器时却发现接收距离的离散性很大。经多次试验终于找出是没对振荡器的振荡频率进行校正所至。

因此,需要另外编写用于校正的语句,我用了两种方法来实现这个目的:


1、用内嵌汇编的形式


#asm //此段汇编程序用于将位于程序段3FFH的


call 3ffh //内部RC振荡器的校准值放入校准寄存器,


bsf _STATUS,5 //在进行C语言调试时应屏蔽这段程序


movwf _OSCCAL


#endasm


2、用C语言标准形式


const unsigned char cs @ 0x3ff; //在函数体外


OSCCAL=cs; //仿真时屏蔽此句


用这两种方法都有一个小缺陷--仿真时,程序无法运行,这是由于C编译器并没有为我们在0x3FF放置一条RETLW 0xXX的语句。因此,程序运行到这里之后,并没有把一个常数(校准值)放入W寄存器然后返回,而是继续执行这条语句的下一句--0x0及其之后的程序,也就是说程序到此就乱了。因此如程序后面注释所示,在仿真时,应先屏蔽这几句程序。在程序调试完成后,需要烧写时,把注释符去掉,再编译一次就可以了。


我还有一种想法,不用屏蔽语句,那就是用函数来实现,就是在0x3FF起建立一个函数,函数体内只有一条语句,如下:


char jz()


{


return 0;


}


当然,还要考虑C函数返回时,一定会选择寄存器0,实际上这个函数的起始地址应小于0x3FF。但是我找了我所能找到的参考资料,并上网找了多次,也没找到为函数绝对定位的方法,希望有知道的朋友指点一下。


还有,12C508A是一次性编程的,并且0x1FF处的内容,我们是无法改变的,也就是说你在此处编写任何指令,编程器都不会为你烧写,或者说即使烧写了也不会改变其中的内容。


可12F629是FLASH器件,可多次编程,如果你没有故意选择,正品的编程器(如Microchip的PICSTART PLUS)是不会对存有校准值的程序空间进行编程的。即使你无意中对这个程序空间进行了编程,你也可以用一条RETLW 0xXX放在0x3FF处再编程一次就可以了,但这个XX值可能是不正确的,需经实验确定(请参考后面说明)。


为了检验OSCCAL的值对振荡器频率的影响,特编写了下面一个小程序进行验证:


#include


//*********************************************************


__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & BOREN & PROTECT & CPD);


//内部RC振荡器普通IO口;无效看门狗;上电延时;内部复位;掉电复位;代码保护;数据保护


//*********************************************************


#define out GPIO0 //定义输出端


#define jc GPIO3 //定义检测端


//*********************************************************


void interrupt zd(); //声明中断函数


//主函数***************************************************


void main()


{


CMCON=7;


OPTION=0B00000011; //分频比为1:16,


TRISIO=0B11111110;


GPIO=0B00000000;


WPU=0;


T0IF=0;


GIE=1;


T0IE=1;


while(1){


if(jc)OSCCAL=0xFF;


else OSCCAL=0;


}


}


//中断函数*************************************************


void interrupt zd()


{


T0IF=0;


out=!out;


}


程序其实很简单,就是在中断中让out脚的电平翻转,翻转的时间为4096个指令周期,电平周期为8192个指令周期。而指令的周期又决定于RC时钟频率。在主程序中,不断的检测JC端口的电平,然后根据此端口电平的值修改OSCCAL寄存器的值。当然,最后从OUT脚的波形周期上反映出了OSCCAL寄存器的值改变。

经用示波器测量(抱歉,手边没有频率计),JC端接地时,OUT端的电平周期为9.5毫秒左右;而JC端接正电源时,OUT端的电平周期为6毫秒左右。也就是说OSCCAL的值越大,单片机的时钟频率越高。并且,这个变化范围是很大的,因此,如果使用PIC单片机的内部RC振荡器时,对其振荡频率进行校正是十分必要的。这也是我在做滚动码接收解码器时,产品离散性很大的原因。望大家以后使用内部RC振荡器时能够注意到此点。

但还有一点要注意,即使你对RC振荡器进行了校正,你也别指望这个4MHz的RC振荡器肯定会很标准,实际上它还是一个RC振荡器,它的振荡频率是电压、温度的函数,也就是说这个振荡频率会随着电压和温度的变化而变化,只是经校正后的值更接近4MHz罢了,这在产品开发的一开始就要注意的。

为了方便大家更好的学习,您还可以关注畅学电子和EDA的公众号,每天推送相关知识,希望能对你的学习有所帮助!


畅学单片机 以单片机为核心,带你全面了解和单片机相关的知识技巧,经验心得。关注我们,一起来学习吧!
评论 (0)
  • 使美国在21世纪保持安全,美国防部发布最新投资战略,12项领先发展科技,两项是传感器技术!近日(3月8日),美国国防部官网公布了《2024财年投资战略》(INVESTMENT STRATEGY FOR THE OFFICE OF STRATEGIC CAPITAL),确定了战略资本办公室(OSC)重点关注的优先关键组件技术行业投资战略,这是美国最新重量级投资计划。2022 年 12 月,美国国防部长劳埃德·奥斯汀三世 (Lloyd J. Austin III) 启动了战略资本办公室 (OSC),
    传感器专家网 2024-03-18 19:31 46浏览
  • 安装Ubuntu后,可能会影响到Windows 10的启动方式,特别是在使用双系统引导时。这可能是导致您无法通过按F8进入安全模式的原因。以下是一些可能的原因和解决方法:启动管理器更改:安装Ubuntu后,GRUB或其他启动管理器可能成为默认的启动引导程序。这些启动管理器可能不会像Windows那样响应F8键进入安全模式的指令。快速启动功能:Windows 10的“快速启动”功能可能会影响您进入安全模式的能力。当启用快速启动时,系统会跳过某些启动步骤,这可能会阻止您通过F8进入安全模式。系统文件
    丙丁先生 2024-03-19 08:54 32浏览
  • 近日(3月12日),欧洲自然科学院正式公布新增院士名单,九三中央科技委副主任、中国传感器与物联网产业联盟常务副理事长、北京理工大学前沿技术研究院首席专家、武汉大学及北京邮电等大学兼职教授郭源生增选为欧洲自然科学院(European Academy of Natural Sciences)院士。这也是该院当选院士中,首位传感器专业方向的院士。传感器专家网https://www.sensorexpert.com.cn专注于传感器技术领域,致力于对全球前沿市场动态、技术趋势与产品选型进行专业垂直的服务
    传感器专家网 2024-03-15 20:11 253浏览
  • 导读:网关设备是确保数据流畅通信的关键。虹科PCAN系列网关凭借卓越性能和创新技术,为众多应用提供了高效稳定的解决方案。本文将深入探讨虹科PCAN系列网关内部存储空间,特别是EEPROM和SPI Flash的配置与利用,并解析如何通过C编程实现快速实时的信号存读。通过虹科PCAN-Router FD的实例,我们将展示这些存储空间如何助力网关设备在复杂环境中保持卓越性能。一、网关内部存储空间概览网关的内部存储空间经过精心设计,旨在满足快速、稳定的数据处理需求。除了常规的RAM外,虹科PCAN系列网
    虹科汽车智能互联 2024-03-18 13:56 89浏览
  • 1. 整流桥功能介绍整流桥在电子领域中扮演着至关重要的角色,为各种电子设备和电路提供了稳定的电源。整流桥的主要作用是将交流电信号转换为直流电信号。当交流电信号通过整流桥时,它会使得只有一个方向的电流能够通过,从而实现了将交流电信号转换为单向的直流电信号。在一些手持设备需要小巧轻便的整流桥来将交流电转换为直流电。医疗器械:一些便携式医疗器械或医疗监测设备,由于需要经常携带和移动,通常采用小体积的整流桥设计。智能家居产品:如智能插座、智能灯具等,由于需要集成在家居环境中,因此需要小体积的整流桥来满足
    上海雷卯电子 2024-03-16 14:07 103浏览
  • 汽车氛围灯,顾名思义,是烘托车内氛围的照明灯,是汽车内饰情感化设计的一种体现。 一般有暖色(红色等)和冷色系(蓝色、紫色等)两种,在夜晚开启后绚丽浪漫,可营造车内情调,使得旅途并不是那么的枯燥无味,让人们拥有独特的驾驶体验。关于汽车氛围灯浪涌保护上海雷卯EMC小哥分析难点有以下几个方面:1. 复杂的电气环境:汽车的电气系统较为复杂,存在各种干扰源,如点火系统、电机、电子设备等,这可能会对氛围灯的浪涌保护造成挑战。2. 电压波动:汽车运行过程中,电源电压可能会出现较大的波动,例如启动引擎或电器设备
    上海雷卯电子 2024-03-16 13:51 82浏览
  • 导读:相信使用过PCAN工具的朋友都知道虹科PCAN-View这款免费软件,它具有直观的用户界面,可以实时监测和分析CAN总线上的数据帧,并提供过滤、发送和报文记录。但你知道吗?它其实不只是简单收发报文,虹科PCAN-View还能自动检测和报告CAN总线上的错误帧,帮助用户快速发现和解决通信问题。无论是在汽车、工业自动化还是嵌入式系统领域, 虹科PCAN-View都是一个功能丰富且广泛应用的工具,为用户优化CAN总线系统的性能和提升通信的可靠性提供了极大的帮助。本文带你一起走进这些功能细节,深入
    虹科汽车智能互联 2024-03-18 13:54 111浏览
  • 直流电机是现代社会中无处不在的动力装置,但它们也不是永远运转的机器。让我们一起来了解一下,为什么直流电机会失效,以及我们可以采取哪些措施来延长它们的寿命。  1. 人为因素的影响: 操作失误是直流电机失效的一个重要因素。粗暴地操控电机,比如不小心让它掉落或者使用不当,都可能导致内部零件的损坏,从而使电机无法正常工作。此外,静电放电也是一个需要重视的问题,特别是对于无刷电机而言。静电放电可能会损坏电机内部的传感器,进而影响其控制与反馈系统。 2. 环境因素的考量: 环境条件对直流电
    艾迈斯电子 2024-03-16 11:29 75浏览
  • 电脑上的很多东西都是赚钱的手段,知道了就轻松自在。如果你在Win10、11等安装应用程序,出现:应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。你各种删除再安装,清理注册表,各种残留清理,各种模块开关设置、甚至重装系统,都不行,你可以考虑安装一下:通过微软网站:Microsoft visual C++ 2005Microsoft visual C++ 2008因为微软自带系统没有这两个基础程序,旧的应用程序多数要用的
    老黄姓黄 2024-03-17 15:59 184浏览
  • 本书涵盖了边缘计算的各个方面,通过这本书可以对边缘计算有比较全面的认识。书中从边缘计算的发展历史到边缘计算的硬件,存储,通信,安全性,架构,数据处理,开源框架等方面概括性的介绍了边缘计算各个方面涉及的内容。由于本人是通信运营商的一线网络员工,所以对书中的通信内容比较感兴趣,大致介绍一下书中相关内容。翻译搜索复制5G的发展无疑促进了边缘计算的应用,5G设计之初其实就是为万物互联而生的,只不过现阶段的大部分的用户只能感受到其中的一个业务场景——eMBB,eMBB为增强移动宽带,对应的是要求高速,大带
    lospring3 2024-03-16 11:10 108浏览
  • RD-03E_V1.0的使用手册包含设备的基本功能、硬件规格、软件配置和安装条件等详细信息。以下是一些可能包含在手册中的关键信息:基本功能:介绍RD-03E的主要功能和技术特点,例如精准测距或手势识别能力。硬件规格:提供RD-03E模块的详细硬件参数,包括尺寸、接口类型、电气特性等。软件配置:说明如何进行软件设置,包括固件升级、参数调整等操作指南。安装条件:描述模块的工作环境要求,如温度范围、湿度限制等。烧录说明:指导如何使用支持的工具(如keil 5 IDE)和烧录器(如CMSIS-DAP、J
    丙丁先生 2024-03-16 12:54 76浏览
  • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期推荐艾迈斯欧司朗首款支持UV-A辐射、环境光闪烁检测功能的微型环境光传感器TSL2585。TSL2585尺寸小巧,采用L2.0mm xW1.0mm xH0.35mm 6引脚OLGA超薄封装,非常适用于可穿戴设备以及手机等这类产品尺寸和厚度受到限制的应用。基于先进的干涉滤光技术,TSL2585的每一个感光像素上都精确沉积了特定光学设计的滤光膜,整体约5µm厚,由60多
    艾迈斯欧司朗 2024-03-18 18:35 94浏览
  • 驱动功率和负性阻抗是石英晶体谐振器设计中的关键参数,直接影响振荡线路的性能和稳定性。驱动功率DL驱动功率指的是石英晶体谐振器在振荡过程中所消耗的功率,通常以微瓦为单位表示。将一根引线焊接到晶体上来测量电流值在振荡线路的设计中,必须提供适当的功率使石英晶体谐振器开始振荡并维持振荡。为了保证石英晶体谐振器的稳定性和长期可靠性,在振荡线路设计中应该避免提供过高的驱动功率。不同封装及频率的激励等级参考值:直插KX49U,贴片KX49M100uW(500Max)KOAN贴片晶体MHz (1612~7050
    koan-xtal 2024-03-16 03:25 47浏览
  • 总结:科普量子计算机的水书。至少第一章是在科普量子计算机。唯一有点用的就是我上面这一张照片里面的笔记。上面说了为什么量子计算机会比传统计算机运算速度快的原因:因为传统计算机一位只能有一个数字,但是量子计算机可以0和1叠加起来显示。这样就造成了传统计算机需要运行很多遍的东西,而量子计算机不管多少多难都只用计算一次。(前提是量子比特位够长)---------------------------------------------------------------------------------
    youyeye 2024-03-17 17:04 131浏览
  • 来源:虹科汽车电子 虹科技术 | PCAN View功能细讲:从实时监测到错误帧分析原文链接:https://mp.weixin.qq.com/s/yOonZ5NqSCnKjURr9hNC6A欢迎关注虹科,为您提供最新资讯!#PCAN #CAN总线 #工业通讯导读相信使用过PCAN工具的朋友都知道虹科PCAN-View这款免费软件,它具有直观的用户界面,可以实时监测和分析CAN总线上的数据帧,并提供过滤、发送和报文记录。但你知道吗?它其实不只是简单收发报文,虹科PCAN-View还能自动检测和报
    虹科电子科技 2024-03-18 15:48 95浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦