查看: 1623|回复: 0
打印 上一主题 下一主题

fail-safe clock monitor。

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-15 08:09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就是忽略了PIC 16F1827 的一个 fail-safe clock monitor。
Fail-safe clock monitor 是一些PIC芯片的新功能, 就是当晶振发生错误后, 启动内部的Internal Oscillator。

如果, 不打算使用这个fail-safe clock monitor, 最好是把他关闭。

我的一个汽车安防产品, 之前是使用16F628A的, 后来转用16F1827, 就只是把源码略做修改, 就出货了。
最近, 客户的客户有投诉, 产品会死机。。

经过检查后, 发现当用手去触摸16F1827 的16脚, 接着, 发现PIC 的反应变得异常的缓慢。。
本来是16Mhz, 正常时LED 闪灯只是0.5~1秒, 现在变成几十秒。。变得超级慢~~

过后想起, 很可能是Fail-safe clock monitor,就看看资料手册, 可以在Fuse 里面关闭。
再查看CCS C 16F1827.h


//////// Program memory: 4096x14  Data RAM: 368  Stack: 16
//////// I/O: 16   Analog Pins: 12
//////// Data EEPROM: 256
//////// C Scratch area: 77   ID Location: 8000
//////// Fuses: LP,XT,HS,RC,INTRC_IO,ECL,ECM,ECH,NOWDT,WDT_SW,WDT_NOSL,WDT
//////// Fuses: PUT,NOPUT,NOMCLR,MCLR,PROTECT,NOPROTECT,CPD,NOCPD,NOBROWNOUT
//////// Fuses: BROWNOUT_SW,BROWNOUT_NOSL,BROWNOUT,CLKOUT,NOCLKOUT,NOIESO
//////// Fuses: IESO,NOFCMEN,FCMEN,WRT,WRT_800,WRT_200,NOWRT,PLL_SW,PLL
//////// Fuses: NOSTVREN,STVREN,BORV25,BORV19,DEBUG,NODEBUG,NOLVP,LVP
////////
复制代码

在第21行, 找到这个Fuse NOFCMEN, 加入到程序的Fuse里, 问题就解决了。

修改后的Fuse

#include <16F1827.H>
#fuses   HS, nolvp, PROTECT, WDT, put, brownout, nomclr, NOFCMEN
#use delay(crystal=16MHz, clock=16MHz, restart_wdt)
复制代码


希望PIC 同好, 要注意这个Fuse, 不要犯和我同样的错误哦~转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表