成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

12F675 Osccal校准

了解如何获得12F675 Osccal校准值。它's quite easy 失去OCSCal值,因为它被写入程序的上单词 记忆。所以,如果你擦除程序内存,那么你就会失去它。

MPLAB X工具非常谨慎地停止覆盖此内存位置 所以你不太可能失去它们(但它可能发生)。事实如此 MPLAB X停止覆盖也会出现问题,因为您必须知道如何使用 MPLAB X工具强制它写入该存储器地址! - 见下文 how to do this.

警告: 如果你不使用a 特写 code 访问内存位置末尾的数据然后访问Osccal值 永远不会写入Osccal寄存器,这意味着您的所有时间都将是 关闭。只需更新单词内存位置的结尾就无法使用 正确的值 - 在12f675的每个程序中,您必须访问和使用 通过将代码写入您的程序中的价值(参见 这里)。
笔记: 虽然这个页面没有超过这个过程 recovery, the 欠压级别 比特也可以丢失。恢复 将更轻松地涉及降低电源电压直到复位。棕色 位也是工厂校准的。

执行此校准,您需要一个频率计数器。你可以找到一个 这个网站上的免费一个 这里 - this 项目使用16F877A,但大多数PIC体积与Timer1和足够的针脚 如果根据处理器调整代码,则LCD驱动器将起作用。

内部时钟的基本精度为1%,通过设置进行调整 Osccal寄存器中的12f675 Osccal值。每个节目,在启动时, 必须写入首次获得存储校准的Osccal寄存器 value.

以下程序允许您重新校准12F675内部 振荡器通过输出内部时钟(GP4),然后将其送入a 频率计数器。附加到GP3和GP2的按钮允许您手动调整 12F675振荡器校准值以4(这是 因为较低的2位不用于OCSCal值)。

对于12F675,内部振荡器在4MHz处运行,因此输出 CLKOUT输出引脚上的频率为1MHz(FOSC / 4)。

由于准确性为1%,这意味着1MHz读数必须在内 10kHz 1MHz。因此,您的校准将准确到+/- 10kHz加上 频率计的精度。

如果您在本网站上使用设计并具有100ppm 4mhz水晶作为 然后处理器时钟:

  • 4MHz中的100ppm错误是400Hz。
  • 400 / 4E6 * 100是0.01%误差。
  • 您还可以说100ppm是100 / 1E6和 (100 / 1E6)* 100 = 0.01%的百分比。

因此,总误差为1.01%,因此您可以说仪表添加 几乎没有错误组件作为1%的准确性(实际错误) 规格远远超过仪表错误。

12F675校准原理图

下面的示意图显示了12F675编程器电路(顶部)。它 分为两个,以便您可以看到从中移动12f675的想法 使用无焊接的应用区域(底部)编程区域(顶部) breadboard.

编程12F675时,您有时会逃脱 在编程连接上的电路(ICSP)PGC和PGD,但不是如果您 将LED放置并加载,因此将设备从上移动到 底部。程序在顶部并在底部进行测试。

12F675校准Osccal示意图

使用12F675 Osccal值

逐步存储Osccal值的事实 上存储器很好,但如果您不使用该值,那么振荡器将 仍然是未校准的。你必须在你的代码中做点什么!

Osccal寄存器允许基本振荡器值的广泛方差 您会发现,在设备之间,振荡器输出实际上变化很大, 因此,需要校准(以及使用校准数据)以获得1% accuracy.

在12F675数据表中,这是推荐的方式(使用程序集 语言)将Osccal值获取到Osccal寄存器中:

在汇编程序中使用Osccal

BSF状态,RP0;选择注册银行1(其中 Osccal寄存器位于)

致电3FFH.

MOVWF OSCCAL.

BCF状态,RP0;选择注册银行0

这将在3ff下调用内存位置

3ff的汇编程序代码将是类似的

RETLW 20H.

其中20h是存储的校准值,并且Retlw意味着返回 W - 文字中的文字是存储在内存中的值:此处20h。

使用XC8中的C代码中的Osccal

在XC8中(MPLAB x 8位编译器)提供了相同的宏 作为上面的汇编程序代码:

OSCCAL = __OSCCAL_VAL(); // 采用 当良好的CAL值存储在0x3FF时。

应始终调用上面的上面代码(或其他编译器的变体) 代码的开始。

软件操作

编程芯片并将其移动到较低的测试区域。

上电时,LED慢慢闪烁5次。如果这没有发生程序 使用下面的方法的不同OCSCal值。投入20小时。

观察频率计数器值,然后按左键降低 ocscal值到4和右按钮将其增加4. Osccal已移位 左2位,因此值一次增加4(增加Osccal寄存器 by 1):

pic12F675的OCSCal Regsiter

要确认您已按下按钮,LED闪烁一次,每次按下一次。

一旦看到频率读数在1MHz的10000Hz(10kHz)范围内 那么这是您想要的校准值。要了解它是什么按两者 按钮在一起。 LED现在闪烁到当前OSCCAL的值 (divided by 4).

所以计算闪光,乘以4(为了获得进入的值 Osclcal寄存器)然后转换为Hex准备用于MPLAB X.

因此,如果您获得8次闪烁,则乘以4给出32个小数,结果 0x20作为十六进制ocscal值。

编程Osccal值:MPLAB X方法。

要对其进行编程保护区域,您需要安装两个 MPLAB X中的配置选项。

首先是程序员,然后是XC8链接器。

使用菜单文件>项目属性,然后选择Pickit 3( programmer):

MPLAB配置

使用顶部下拉菜单选择程序员选项。

MPLABX选择程序选项

单击复选框 for "程序校准内存" :

MPLAB X程序选项

现在转到XC8链接器选项:

MPLAB X链接器选项

单击“校准振荡器”并设置您想要的Osccal值之前 0x34(这是Retlw码)例如。对于0x20校准值,请使用0x3420:

MPLAB x Osccal值设置

现在编程芯片和你'被要求允许CAL的编程 value at 0x3ff.

大学教师'忘记完成后脱击程序选项。

12F675 OCSCAL代码下载

注册Microzine时事通讯(免费)以收到下载链接 the code.

软件版本

MPLAB X IDE:v3.30

XC8编译器:v1.45

新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。




隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
为了all the information
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部