登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

ATMEGA128外接调电不丢RAM解决方案

作者:yonghuang 栏目:单片机
ATMEGA128外接调电不丢RAM解决方案
近来做系统设计的时候发现:ATMEGA128内部带有4K的RAM,但是是掉电丢的;若外部扩展非易失性RAM(如HM62256),但AVR指令不支持直接寻址外部存储器(如:8051单片机的XDATA)。相对于51单片机来说很是麻烦。
解决办法:外部扩展一般的RAM,另外还需扩展大容量的FLASH用来存储数据
并口的有512K字节的W29C040,串口的有AT45D041等。
我在这里抛砖引玉,如果大家有什么好的意见,欢迎讨论!

2楼: >>参与讨论
zsmbj
不知所云
单片机内部的RAM都是调电丢失的,51也一样。
MEGA128是支持外部数据存储器的。扩展方法和51是一样的。
不知嫩抛的是什么砖?引的什么玉?

3楼: >>参与讨论
kanprin
呵呵,晕晕。
原来现在玉也不贵了。

4楼: >>参与讨论
yonghuang
to zsmbj
可能zsmbj还没有理解我的意思。在51里面我们可以直接用XBYTE访问外部存储器。而在ATMEGA128中虽然可以访问外部存储器,但是内部存储器和外部存储器是没法分开的(至少程序里面),你能知道所存的数据是放到内部呢,还是外部呢?就此事我曾专门打电话给双龙公司,他们的工程师也告诉我说没有好办法,除非你指定具体的地址才行,或者先把内部的4K空间给耗尽了,然后才能保证存到外部。

5楼: >>参与讨论
zhermit
呵呵
不是很清楚yonghuang 的意思.
51里使用XBYTE访问外部存储器,也不是一个确定地址的过程吗?如果不需要指定外部和内部,51有必要加个XBYTE?不如直接用mov好了.
到了AVR,不是一样的道理?只不过换了个方式,先指定外部地址,有多大区别?
另外,你既然选了avr,死抱着51设计编程方式干什么?
祝 好运

6楼: >>参与讨论
avrx007
把破烂当成宝了。
M128超出内部4KB SRAM的地址就属于外部SRAM
在AVR中,你可以自己指定数据的地址。51 XDATA也是指定地址区域

LZ好像搞错了 非易失性RAM  HM62256??

非易失性RAM(NVRAM)价格可不便宜。

HM62256+锂电池也行。

7楼: >>参与讨论
erkin
乱说
谁说AVR不支持外部SRAM了,我现在外边用了2M的RAM。
如果不丢失,那你加一个电池就可以了,另外在初始化的时候不要把RAM清零就可以了。建议用GCC,用ICC我还真不太清楚。
在不行就把数据存在内部EEPROM中,128的EEPROM很好用的。

8楼: >>参与讨论
mxh0506
指定数据段放在外部SRAM
我就是这么做的
4K以下全作为堆栈;4K以上是数据.可以保证堆栈和数据不冲突

那种类似XBYTE的方法只有在访问固定地址的外设时比较合适,要是用来声明变量就不高明了

9楼: >>参与讨论
yonghuang
不好意思,把XDATA搞成XBYTE了
请问avrx007,怎样自己指定数据的地址?这点真是不是很清楚,可能是我没有弄明白的关键所在,请不吝赐教。
51中有如下例子:
  float xdata today[5][31];如果接了外部RAM,我们可以不去管它到底分配到哪个具体的地址,由编译器自动指定。如果是NVRAM,下次开机时数据还保存着。
在AVR中我们只能用float today[5][31]来声明;而AVR中编译器的分配原则好像是先内部,然后外部。如果声明的变量多了,就不知它存在内部的RAM里面还是外部的RAM里面。
   erkin的用内部EEPROM的方法很好,但是4K的空间对我的系统来说小了点。
   我还是倾向与mxh0506 的4K以下全作为堆栈;4K以上是数据这种方法,但不知怎么实现的。

10楼: >>参与讨论
erkin
问题是这样的,你可以指定你声明的东西的首地址。
这样就解决了你的问题,另外如果有什么问题的化,加我QQ:1567494。
建议你不要用数组,这个东西我实在是觉得不好,不如用结构体来的方便。

11楼: >>参与讨论
xiaoIIhei
可以用指针
#define    today[5][31](*(volatile float *) 0x3008)
这样不知道行不行

参与讨论
昵称:
讨论内容:
 
 
相关帖子
4-20 ma
CodeVisionAVR C Compiler问题请教
请教:mega128L控制EL显示屏,回读数据出错
请高手们帮忙修改交通信号灯程序
我使用 WDR 怎么无效?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号