打印
[PIC®/AVR®/dsPIC®产品]

PIC16F1783 EEPROM数据丢失问题

[复制链接]
2305|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李炳1991|  楼主 | 2019-1-9 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小卡 于 2019-5-16 11:55 编辑

今天在写PIC程序的时候遇到一个很奇怪的问题,我也是第一次使用PIC单片机,在这里分享出来,希望同样遇到问题的避免再次踩坑。项目中就是需要对传感器标定后的相关参数存储到PIC单片机内部的EEPROM中,因为程序处理调试阶段,每一次进入程序我都是使用的在线调试模式进入,在整体调试的过程中发现每一次进入程序直接读取EEPROM中的数据读取出来都是FF,也就是感觉EEPROM当中根本就没有数据,只有将数据写入进去一次然后再次读取才能够读取到正常的数据,而且无论读取多少次都是存在着数据的,但是当再次重新进入调试模式时读取出来的数据又是空的。开始我是考虑是否写入或者读取存在着问题,但是经过无数次的资料查询和相关案例的参考,发现代码的逻辑上根本就没有问题。网上也查询了无数的资料,都没有看到类似的解决方法。最后我试了一次直接将程序烧录进入PIC单片机,不进入调试模式,通过打印日志的方式,发现数据读取是正常的,为什么会这样我也一直没有查到相关资料。我感觉有可能是调试工具在进入调试模式的时候或者在烧录程序的时候将EEPROM中的额数据一并给擦除了。
沙发
943614033| | 2019-1-10 09:07 | 只看该作者
PIC单片机应该是在烧写时会一起烧写EEPROM的。可以用__EEPROM_DATA()命令将数据在烧写时直接烧写进EEPROM。

使用特权

评论回复
板凳
yewuyi| | 2019-1-10 09:56 | 只看该作者
没毛病。

在MAPLB下面用KIT3之类的在线调试工具,在MPLAB下还没有执行代码运行时,芯片的复位脚被KIT3强制限制在复位状态下,此时MPLAB下查看所有的芯片寄存器等数据均被MPLAB软件强行恢复为芯片复位默认值。

当MPLAB点运行按钮后,芯片复位脚释放,此时MPLAB才会和芯片交互数据,此时才能真正读到芯片的各类真实数值。

所以这没有毛笔,而是MPLAB就是这么做的,也和芯片没有半毛钱的关心。另外,我接触到的所有其他家的芯片都类似如此。这是常识。

使用特权

评论回复
地板
yewuyi| | 2019-1-10 09:56 | 只看该作者
没毛病。

在MAPLB下面用KIT3之类的在线调试工具,在MPLAB下还没有执行代码运行时,芯片的复位脚被KIT3强制限制在复位状态下,此时MPLAB下查看所有的芯片寄存器等数据均被MPLAB软件强行恢复为芯片复位默认值。

当MPLAB点运行按钮后,芯片复位脚释放,此时MPLAB才会和芯片交互数据,此时才能真正读到芯片的各类真实数值。

所以这没有毛笔,而是MPLAB就是这么做的,也和芯片没有半毛钱的关心。另外,我接触到的所有其他家的芯片都类似如此。这是常识。

使用特权

评论回复
5
antusheng| | 2019-1-10 10:52 | 只看该作者
全部丢失那说明没有写进去。

使用特权

评论回复
6
淘猫汤姆| | 2019-1-10 17:26 | 只看该作者
没有丢,只是你重新启动调试的时候IDE又把芯片擦除了一遍,所以之前的内容就没有了

使用特权

评论回复
7
北极风| | 2019-1-11 10:09 | 只看该作者
调试模式和烧写模式默认是烧写EEPROM的。每次从新下载程序时,不管是在调试模式还是烧写模式,都要初始化EEPROM。除非你用__EEPROM_DATA()设置EEPROM初始化的值。

使用特权

评论回复
8
麦小播| | 2019-1-11 15:49 | 只看该作者
欢迎新人加入哦!别忘了扫一扫二维码关注我们的微信哦!

使用特权

评论回复
9
2zwm| | 2019-4-30 15:57 | 只看该作者
大家需要国产的EEPROM可以看我头像联系

使用特权

评论回复
10
pzsh| | 2019-4-30 16:04 | 只看该作者
谢谢楼主分享,以后碰到这种情况的时候就有印象了

使用特权

评论回复
11
antusheng| | 2019-5-15 23:28 | 只看该作者
经验啊。

使用特权

评论回复
12
小卡| | 2019-5-16 11:56 | 只看该作者
加分类 

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝