变量保存问题

[复制链接]
2243|18
 楼主| tianxiongweitxw 发表于 2018-9-25 11:21 | 显示全部楼层 |阅读模式
请教一下论坛前辈,有一个项目,设置的压力参数需要在程序中更改,而且下一次断电重启后,这个压力参数保持上一次的值不变,这个参数变量放在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,看手册是支持在系统编程的。
 楼主| tianxiongweitxw 发表于 2018-9-25 13:48 | 显示全部楼层
但是FLASH中是存储的程序啊,操作FLASH不会打程序搞乱吗?我怎么知道那些地址可以操作,那些不能操作???
ayb_ice 发表于 2018-9-25 15:09 | 显示全部楼层
tianxiongweitxw 发表于 2018-9-25 13:48
但是FLASH中是存储的程序啊,操作FLASH不会打程序搞乱吗?我怎么知道那些地址可以操作,那些不能操作??? ...

看手册吧
hwpga 发表于 2018-9-25 18:36 | 显示全部楼层
用片内Flash不就可以了,用片内低压中断或者AD分压检测欠压点
没欠压前,修改后的参数在RAM里不用管
检测欠压后,把参数做个简单的校验和协议函数,打个包
参数一次存储到指定FLASH扇区

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



hwpga 发表于 2018-9-25 18:52 | 显示全部楼层
用AD检测欠压,5-10MS时间片轮询一次即可
低压中断的话,硬件自动帮你检测了
单片机VCC电容要够大,保证数据能可靠写入
欠压检测点不能太高85%差不多了
 楼主| tianxiongweitxw 发表于 2018-9-26 11:13 | 显示全部楼层
谢谢各位的建议。
神奇号 发表于 2018-9-26 12:02 | 显示全部楼层
本帖最后由 神奇号 于 2018-9-26 12:04 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| tianxiongweitxw 发表于 2018-9-26 16:07 | 显示全部楼层
程序空间和EEPROM空间到底有什么区别,怎么寻址,我理解两者是一样的。
cainiao518 发表于 2018-9-26 16:30 | 显示全部楼层
tianxiongweitxw 发表于 2018-9-26 16:07
程序空间和EEPROM空间到底有什么区别,怎么寻址,我理解两者是一样的。

其实都是flash存储区,只是两者位于不同的地址区域,需按不同的方式访问
lihui567 发表于 2018-9-27 14:02 | 显示全部楼层
放在EEPROM里。这个非常普遍的存储方式,
chentianxi 发表于 2018-9-27 15:31 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
千岁寒 发表于 2018-11-12 11:30 | 显示全部楼层
放到一个固定的ROM位置;
每隔一段时间或者每次更改重刷新写入;
why130110 发表于 2018-11-14 16:01 | 显示全部楼层
新手小白可在某宝上搜索 51单片机开发 远程服务
可以放在STC的EEPROM里面
一叶倾城wwq 发表于 2018-11-14 17:12 | 显示全部楼层
建议用EE,不建议用flash,flash只能从1写为0,要从0写为1需要擦除,反正本人是这么理解的,有不对的地方请有异议的坛友指正
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里面
检测到低压后,我只要保存你最后一次修改的参数



座机呀 发表于 2018-11-14 22:32 | 显示全部楼层
hwpga 发表于 2018-11-14 20:03
一般的应用要存储的数据也就10来个字节不到
用E2P还要外挂,占空间还占成本,E2P写一个字节要2MS左右
这 ...

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

本版积分规则

73

主题

521

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部