打印

变量保存问题

[复制链接]
1843|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请教一下论坛前辈,有一个项目,设置的压力参数需要在程序中更改,而且下一次断电重启后,这个压力参数保持上一次的值不变,这个参数变量放在RAM中肯定不行,掉电后就成了默认值了,我考虑这个变量能不能放在ROM中,但如果放ROM中,程序运行时是改不了的啊,我该怎么办,是不是一定要加一个串行或者并行存储器?

相关帖子

沙发
xuyaqi| | 2018-9-25 13:28 | 只看该作者
看你用的是那种单片机,有的单片机是可以把数据存在flash里。

使用特权

评论回复
板凳
mailshichao| | 2018-9-25 13:34 | 只看该作者
就是修改的数据需要掉电保存,很多单片机都支持flash或者eeprom的,不过不支持则只能外挂eeprom芯片了

使用特权

评论回复
地板
tianxiongweitxw|  楼主 | 2018-9-25 13:47 | 只看该作者
单片机是STC12C5A16S2,看手册是支持在系统编程的。

使用特权

评论回复
5
tianxiongweitxw|  楼主 | 2018-9-25 13:48 | 只看该作者
但是FLASH中是存储的程序啊,操作FLASH不会打程序搞乱吗?我怎么知道那些地址可以操作,那些不能操作???

使用特权

评论回复
6
ayb_ice| | 2018-9-25 15:09 | 只看该作者
tianxiongweitxw 发表于 2018-9-25 13:48
但是FLASH中是存储的程序啊,操作FLASH不会打程序搞乱吗?我怎么知道那些地址可以操作,那些不能操作??? ...

看手册吧

使用特权

评论回复
7
hwpga| | 2018-9-25 18:36 | 只看该作者
用片内Flash不就可以了,用片内低压中断或者AD分压检测欠压点
没欠压前,修改后的参数在RAM里不用管
检测欠压后,把参数做个简单的校验和协议函数,打个包
参数一次存储到指定FLASH扇区

上电后从指定扇区读取数据,根据协议校验
校验正确,填入参数值
校验错误,填初时参数值



使用特权

评论回复
8
hwpga| | 2018-9-25 18:52 | 只看该作者
用AD检测欠压,5-10MS时间片轮询一次即可
低压中断的话,硬件自动帮你检测了
单片机VCC电容要够大,保证数据能可靠写入
欠压检测点不能太高85%差不多了

使用特权

评论回复
9
tianxiongweitxw|  楼主 | 2018-9-26 11:13 | 只看该作者
谢谢各位的建议。

使用特权

评论回复
10
神奇号| | 2018-9-26 12:02 | 只看该作者
本帖最后由 神奇号 于 2018-9-26 12:04 编辑

看了下,EEPROM有45K,完全够你存的

无标题.png (483.07 KB )

无标题.png

使用特权

评论回复
11
tianxiongweitxw|  楼主 | 2018-9-26 16:07 | 只看该作者
程序空间和EEPROM空间到底有什么区别,怎么寻址,我理解两者是一样的。

使用特权

评论回复
12
cainiao518| | 2018-9-26 16:30 | 只看该作者
tianxiongweitxw 发表于 2018-9-26 16:07
程序空间和EEPROM空间到底有什么区别,怎么寻址,我理解两者是一样的。

其实都是flash存储区,只是两者位于不同的地址区域,需按不同的方式访问

使用特权

评论回复
13
lihui567| | 2018-9-27 14:02 | 只看该作者
放在EEPROM里。这个非常普遍的存储方式,

使用特权

评论回复
14
chentianxi| | 2018-9-27 15:31 | 只看该作者

使用特权

评论回复
15
千岁寒| | 2018-11-12 11:30 | 只看该作者
放到一个固定的ROM位置;
每隔一段时间或者每次更改重刷新写入;

使用特权

评论回复
16
why130110| | 2018-11-14 16:01 | 只看该作者
新手小白可在某宝上搜索 51单片机开发 远程服务
可以放在STC的EEPROM里面

使用特权

评论回复
17
一叶倾城wwq| | 2018-11-14 17:12 | 只看该作者
建议用EE,不建议用flash,flash只能从1写为0,要从0写为1需要擦除,反正本人是这么理解的,有不对的地方请有异议的坛友指正

使用特权

评论回复
18
hwpga| | 2018-11-14 20:03 | 只看该作者
一叶倾城wwq 发表于 2018-11-14 17:12
建议用EE,不建议用flash,flash只能从1写为0,要从0写为1需要擦除,反正本人是这么理解的,有不对的地方请 ...

一般的应用要存储的数据也就10来个字节不到
用E2P还要外挂,占空间还占成本,E2P写一个字节要2MS左右
这个时候存FLASH是比较好的
没掉电前,哪怕你一天改100W次参数,数据反正在RAM里面
检测到低压后,我只要保存你最后一次修改的参数



使用特权

评论回复
19
座机呀| | 2018-11-14 22:32 | 只看该作者
hwpga 发表于 2018-11-14 20:03
一般的应用要存储的数据也就10来个字节不到
用E2P还要外挂,占空间还占成本,E2P写一个字节要2MS左右
这 ...

你说的方法给了我一个新的思路,这样的确能大幅减少flash写入次数,如果掉电的瞬间触发flash写入,flash操作要产生时序,产生编程用的电压,这个电压一般比运行电压高,而电源电压这个时候在波动,这个会不会影响数据的可靠性?的确,增加vcc的电容能够放缓电源变化速率,但这种方式在实际应用中具体效果怎么样?
我目前需要保存掉电保存的数据都是改变则保存到flash,只是这样软件上复杂点,需要循环使用flash的地址,但我认为这样的方式能够保证数据是可靠的.

使用特权

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

本版积分规则

72

主题

520

帖子

0

粉丝