找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5094|回复: 28
打印 上一主题 下一主题
收起左侧

电子设备怎么在掉电瞬间把数据保存在eeprom

  [复制链接]
跳转到指定楼层
楼主
有没有大佬知道怎么在掉电瞬间把数据保存在eeprom里啊,求代码思路
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2021-8-6 17:15 | 只看该作者
可以用一个超级电容或者小电池来在断电的时候保存数据,当然需要一个断电检测的电路
回复

使用道具 举报

板凳
ID:934353 发表于 2021-8-6 17:31 | 只看该作者
51hei团团 发表于 2021-8-6 17:15
可以用一个超级电容或者小电池来在断电的时候保存数据,当然需要一个断电检测的电路

是的,我查过,但是不知道怎么样去检测比较合理,大佬有什么比较好的方法吗?感谢回答
回复

使用道具 举报

地板
ID:88256 发表于 2021-8-6 17:45 | 只看该作者
开心就好hhhh 发表于 2021-8-6 17:31
是的,我查过,但是不知道怎么样去检测比较合理,大佬有什么比较好的方法吗?感谢回答

取前面的电源用合适的电阻分压,用单片机的一个I/O检测,当电压低于一定程度时就不属于高电平范围了,可以判断断电了,执行保存数据的操作
回复

使用道具 举报

5#
ID:161164 发表于 2021-8-6 17:55 | 只看该作者
一定要掉电瞬间才写入吗?
换个思路,当检测到数据数值有变化就写入
就不用理它掉不掉电了
回复

使用道具 举报

6#
ID:401564 发表于 2021-8-6 18:15 | 只看该作者
瞬间写入是不可能的
肯定是要有一个掉电检测和电容来保持单片机完成写入的时间
如果单片机对电源要求不高,又没有ADC或者是ADC有稳定的参考电压的话,串联一个二极管给单片机供电,然后在输入端用两个电阻来取样就可以
实际的参数是要的实际电路中调节的
回复

使用道具 举报

7#
ID:584195 发表于 2021-8-6 19:13 | 只看该作者
好象有个掉电中断什么的,在这个中断函数里写就可以了吧.
回复

使用道具 举报

8#
ID:959221 发表于 2021-8-6 19:27 | 只看该作者
不要用电容,不可靠.
知道UPS吧,就是在你的电路板上做个UPS,存完数据后,断掉UPS.有电的时候就给UPS充电
还是镍氢电池抗造,不鼓包,备电首选.
回复

使用道具 举报

9#
ID:883242 发表于 2021-8-6 22:16 | 只看该作者
做个电压检测电路,放在稳压器之前,电压掉到一定程度提醒单片机保存数据。
回复

使用道具 举报

10#
ID:213173 发表于 2021-8-7 06:07 | 只看该作者
楼主的问题不是纯软件可以解决的,需要配置少量硬件。单片机完成任何工作都需要有电源支持和足够的时间。一般把数据保存在eeprom需要几十ms时间。也就是说外部电源掉电后,直接为单片机供电的电源还得要保持供电几十ms时间,以维持单片机把数据保存在eeprom中。电路基本原理示意图:

回复

使用道具 举报

11#
ID:584195 发表于 2021-8-7 07:55 | 只看该作者
单片机有bat接口的,用大电容给这个接口供电,加上10#的电路,应该可以完美解决你的问题.
回复

使用道具 举报

12#
ID:420836 发表于 2021-8-7 10:01 | 只看该作者
第一种选择是写入新数据,以一定的间隔覆盖掉eeprom中的旧数据,或者在电源输出端使用一个大的电解电容,为掉电提供延迟,以便将数据写入EEPROM。
回复

使用道具 举报

13#
ID:934353 发表于 2021-8-9 09:36 | 只看该作者
wulin 发表于 2021-8-7 06:07
楼主的问题不是纯软件可以解决的,需要配置少量硬件。单片机完成任何工作都需要有电源支持和足够的时间。一 ...

好的,谢谢
回复

使用道具 举报

14#
ID:934353 发表于 2021-8-9 09:38 | 只看该作者
lkc8210 发表于 2021-8-6 17:55
一定要掉电瞬间才写入吗?
换个思路,当检测到数据数值有变化就写入
就不用理它掉不掉电了

这样有可能还未掉电就已经频繁的写入了,eeprom使用寿命就很短了,感谢回答
回复

使用道具 举报

15#
ID:934353 发表于 2021-8-9 09:38 | 只看该作者
Y_G_G 发表于 2021-8-6 18:15
瞬间写入是不可能的
肯定是要有一个掉电检测和电容来保持单片机完成写入的时间
如果单片机对电源要求不高 ...

好的,感谢回答
回复

使用道具 举报

16#
ID:934353 发表于 2021-8-9 09:39 | 只看该作者
TTQ001 发表于 2021-8-7 10:01
第一种选择是写入新数据,以一定的间隔覆盖掉eeprom中的旧数据,或者在电源输出端使用一个大的电解电容,为 ...

好的,感谢回答
回复

使用道具 举报

17#
ID:451718 发表于 2021-8-9 13:43 | 只看该作者
掉电保存有三种办法实现:
1,及时存储(当数值发生重大变化时)或者检测时间间隔存储(比如5分钟保存一次)。
2,掉电检测存储,就是你提问的方式,需要去检测供电电压,然后比较,然后第一时间通过最高优先级中断来处理。但是这种方法不是太可靠,因为eeprom存储的时候,都需要一定的延迟,你的余电够不够存储很难说,对硬件电路要求比较高。
3,通过电池供电来存储,通过纽扣电池来完成存储后,单片机进入休眠状态(低功耗状态)。主供电恢复后,退出休眠状态。

评分

参与人数 2黑币 +30 收起 理由
开心就好hhhh + 10
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

18#
ID:934353 发表于 2021-8-11 13:17 | 只看该作者
robinsonlin 发表于 2021-8-9 13:43
掉电保存有三种办法实现:
1,及时存储(当数值发生重大变化时)或者检测时间间隔存储(比如5分钟保存一次 ...

好的,非常感谢
回复

使用道具 举报

19#
ID:958976 发表于 2021-9-23 16:20 | 只看该作者
lkc8210 发表于 2021-8-6 17:55
一定要掉电瞬间才写入吗?
换个思路,当检测到数据数值有变化就写入
就不用理它掉不掉电了

如果这样的话,用在开关类 传感器类的产品上会不会就不太好?频繁的擦写,会不会导致产品使用寿命降低
回复

使用道具 举报

20#
ID:161164 发表于 2021-9-23 16:37 | 只看该作者
gw422342988 发表于 2021-9-23 16:20
如果这样的话,用在开关类 传感器类的产品上会不会就不太好?频繁的擦写,会不会导致产品使用寿命降低

开关类传感器类的产品有什么数据需要掉电记录的?
如果该数据会不断变化
那么在掉电那段时间也会继续变化
记不记录也没所谓了吧

我的方法当然是用在不用频繁的擦写的数据上

回复

使用道具 举报

21#
ID:624769 发表于 2021-9-23 18:44 | 只看该作者
看到有人挖坟, 我就顺便说两句,

如果,使单片机内部的EEPROM 的话, 不需要添加任何硬件,就可以通过“掉电中断”,把数据存入 EEPROM。
由于从发现掉电,到彻底没电,只有15ms , 左右的时间,所以,外部Eeprom的话比较难实现(时间不够)。
内部Eeprom的话,只要不需要初始化(格式化)的话,大约能存入200个字节的数据,我想基本应该够用。
回复

使用道具 举报

22#
ID:592807 发表于 2021-9-23 19:49 | 只看该作者
wulin 发表于 2021-8-7 06:07
楼主的问题不是纯软件可以解决的,需要配置少量硬件。单片机完成任何工作都需要有电源支持和足够的时间。一 ...

最好不要,电量不足情况下,IO口电平不稳定,可能会误操作。一般会用到备份电源。
回复

使用道具 举报

23#
ID:514901 发表于 2021-9-24 10:01 | 只看该作者
可以一个ADC一直读取电源电压值,当电源电压底到某一阈值就启动马上调用eeprom写入,当然,外围电路加个电容,让电压降低延长个几十ms,对单片机来说几十ms够做很多事情了。可以参考一下STC的掉电保存的方案
回复

使用道具 举报

24#
ID:382454 发表于 2021-9-29 15:08 | 只看该作者
1要有一个ADC端口扫描VCC供电
2用一个法拉电容做为断电的延续电源,电容肯定比电池经久啊。从体积和寿命来说都有优势。
3执行机智是数据发生改变,或断电事件发生了,马上写入EERPOM。现在的EEPROM写入次几十万次以上了,你根本不用考虑寿命的问题。
回复

使用道具 举报

25#
ID:712493 发表于 2021-9-30 08:19 | 只看该作者
lkc8210 发表于 2021-8-6 17:55
一定要掉电瞬间才写入吗?
换个思路,当检测到数据数值有变化就写入
就不用理它掉不掉电了

掉电写入是为了减小写入次数,提高eeprom的寿命
回复

使用道具 举报

26#
ID:883242 发表于 2021-9-30 12:00 | 只看该作者
用比较器做个电源电压检测电路,把输出接入单片机外中断,单片机发现电压不够就开始写eeprom。
回复

使用道具 举报

27#
ID:883242 发表于 2021-9-30 12:01 | 只看该作者
fj51hei 发表于 2021-9-30 08:19
掉电写入是为了减小写入次数,提高eeprom的寿命

可以用铁电,现在不贵,理论上可以无数次写入。
回复

使用道具 举报

28#
ID:57657 发表于 2021-9-30 12:24 | 只看该作者
如果EEPROM容量较大,你可以参考下锂电池数码产品充放电控制电路。
回复

使用道具 举报

29#
ID:420836 发表于 2021-10-1 07:46 | 只看该作者
使用容量非常大的电容器来储存电力作为备用。 当发生断电时,电容器放电。 可以将时间设计为足以存储一些关键数据。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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