打印

谢谢大家的建议,有没有比较好的掉电**的方法,抛砖引

[复制链接]
4632|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WilliamL|  楼主 | 2009-7-2 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,如果说MCU资料说复位条件是电压低于3V,如果这个时候掉电了,请问RAM里面的内容是瞬间一次性全部清0,还是有一定延时呢,比如先会清掉一些,然后在清掉一些。

这个问题的起因是:如果我的电压在低于3V的时候,维持了10+个us,然后又恢复,也就是电压在频繁抖动。

麻烦各位大侠讲解一下啊,谢谢了哈

相关帖子

沙发
datreexia| | 2009-7-2 11:14 | 只看该作者

是慢慢清零吧

有一样的疑惑,我认为和电容放电的过程类似,动态RAM嘛。
    另外,有些特殊的用法判断掉电时间,就是利用设定变量的值,若掉电时间长于一段时间(如1min),该变量读值为0.
    不知道说的对不。

使用特权

评论回复
板凳
WilliamL|  楼主 | 2009-7-2 11:33 | 只看该作者

谢谢啊,来些人讨论讨论啊

即使是慢慢清零,是不是RAM内清零的顺序也是随机的呢~~

估计搞芯片设计的人应该懂吧~~

使用特权

评论回复
地板
icecut| | 2009-7-2 12:24 | 只看该作者

时间越长,数据正确个数越少.

你可以写个程序,然后外面做个掉电时间控制器.然后测一下正确率数据图

使用特权

评论回复
5
lanmp| | 2009-7-2 13:45 | 只看该作者

研究这个意义不大

因为无法确定低电压下CPU和总线的状态。你就不知道是数据自己消失了还是被改写了。

使用特权

评论回复
6
耕在此行| | 2009-7-2 19:44 | 只看该作者

是不是这样理解

系统掉电了,那么支持RAM维持高电位的电压变低了,所以RAM的值也就会在电压低到一定程度时变成0了.
以上仅仅是臆测,呵呵.

使用特权

评论回复
7
delin17| | 2009-7-2 19:46 | 只看该作者

顶楼上

觉得如楼上所述,
电平变化也是慢慢降下来的

使用特权

评论回复
8
icecut| | 2009-7-2 20:08 | 只看该作者

哎呀,我还是终结大家讨论吧

其实keil编译的时候,在开始时候会清零所有内存.所以,只要复位,内存肯定是0

使用特权

评论回复
9
NE5532| | 2009-7-2 21:18 | 只看该作者

楼上说的对是对。

不过楼主若是写汇编,编译器就不会插入清零代码。
另外单片机的RAM数据保持电压和复位电压是不一样的,RAM保持电压很低的,在1、2V的时候都可以保持,数据手册会给出这个数据。

所以楼主的现象不一定是RAM数据丢失造成,讨论低于RAM保持电压的情形,你只有问芯片设计者了,在我们看来,一旦出现这个问题,讨论数据是如何丢失的不具有太大意义。

使用特权

评论回复
10
beinghu| | 2009-7-2 21:47 | 只看该作者

数据慢慢丢失的

而且是随机的。   如果你掉电时间很断,估计啥事都没有的。

使用特权

评论回复
11
lyjian| | 2009-7-2 22:10 | 只看该作者

同意9楼说法

只要出现过掉电(那怕是瞬间的),RAM里面的数据就无法保证有没丢失了。
讨论掉电后RAM数据是如何丢失的的确没有什么意义,浪费青春而已。
有空的话还不如讨论一下EEPROM的数据为什么会丢失。

使用特权

评论回复
12
冯广州| | 2009-7-3 08:52 | 只看该作者

EEPROM里面的数据也丢失吗?呵呵

EEPROM里面的数据也丢失吗?呵呵

使用特权

评论回复
13
williamL| | 2009-7-3 11:05 | 只看该作者

谢谢大家的建议,有没有比较好的掉电**的方法,抛砖引

我的系统是检测220V的正弦信号,也就是过零点的检测。

1.如果检测到过零点没有了(我的是只要检测到一次没有了)就认为掉电了;2.然后将需要保存的数据存入I2C;
3.程序仍然运行,直到电掉光(忽略储电电容支持单片机工作直到消耗完为止的时间);
4.上述的做法是因为,如果没消耗完(电压波动,比如打开了大功率设备)过零又恢复了,程序可以继续运行;

这里面个人也有一些想法,比如过零点是只检测一个还是多个,如果是多个的话,就会发生我问的那个问题,如果我检测3个,而负载很大,很快就消耗完了,RAM的数据要保存的话,会不会就会出问题,而导致有些RAM的保存值不对。

多谢大家了,讨论下掉电的方案吧,整个最优“掉电方案”怎们样,呵呵~~

使用特权

评论回复
14
Airwill| | 2009-7-3 15:13 | 只看该作者

通常

sram 的保持电压相当的低. 

在单片机掉电复位(或者没有掉电的单片机因欠压而程序跑飞)前, SRAM 是能保持的.

另外, 上电后, sram 并非都为0, 但值是 0 的位多于 是 1 的位, 这点我进行过测试

使用特权

评论回复
15
NE5532| | 2009-7-3 16:26 | 只看该作者

楼主想复杂了。

RAM的保持电压低于BOR复位电压,所以你只要把BOR复位用上就可以了。要快速掉电保存数据,可以字节用铁电。

使用特权

评论回复
16
hellook| | 2009-7-4 09:20 | 只看该作者

这样来看

1. VDD 掉到多少 会造成RAM 不可用,请参照具体Datashet
2. 外围线路决定了假设全没电时能维持这个电压的时间
3. 要利用RST 来保护这个电压,因为在RST时(VDD正常范围)RAM数据是新鲜的
4. 最后的结果是:
    如果外围彻底掉电,VDD 的电容决定了下降时间,同时保证RST线路此时处于RST状态(程序处于初始化低压状态,所有外设控制为0,即自己关闭外设,不去耗电)

其实这是了结合软硬件功能的 较复杂的设计,要结合具体条件来设计线路以及程序检测方法,还有RAM保护策略,呵呵!

使用特权

评论回复
17
fushaobing| | 2009-7-5 13:54 | 只看该作者

感觉题目有点问题

"弱弱的问题,掉电条件满足后RAM是瞬间清掉,还是慢慢清0".
如果掉电时间很短,不足以引起MCU复位,那么RAM应该不是被清零,而是一个不确定的数据。对吗?

使用特权

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

本版积分规则

2

主题

11

帖子

0

粉丝