[AVR单片机] AVR单片机内部EEPROM变量初始化值有用吗?

[复制链接]
 楼主| 游浪星 发表于 2013-9-4 10:04 | 显示全部楼层 |阅读模式
今天发现这样一个问题,我用AVRStudio写程序的,下面是源程序:
#include <avr/io.h>
#include <avr/eeprom.h>
#defined uchar  unsigned char
uchar  a[2]EEMEM={58,64};
uchar val;
int main()
{
      val=eeprom_read_byte(a);
      while (1);
}
为什么val不等于58呀,而是0xff?难道初始化值不起作用吗?大家有遇到过这种情况吗?
huangxz 发表于 2013-9-4 10:51 | 显示全部楼层
烧入的时候那个eep文件也要写。
 楼主| 游浪星 发表于 2013-9-4 13:28 | 显示全部楼层
huangxz 发表于 2013-9-4 10:51
烧入的时候那个eep文件也要写。

你好  我把eep文件烧到EEPROM后,将hex文件烧到flash里,但是读取的值还是0XFF,而不是初始化的值。你也是用WINAVR的吗
huangxz 发表于 2013-9-4 14:03 | 显示全部楼层
游浪星 发表于 2013-9-4 13:28
你好  我把eep文件烧到EEPROM后,将hex文件烧到flash里,但是读取的值还是0XFF,而不是初始化的值。你也是 ...

没问题啊,是不是你选了擦除啊.




本帖子中包含更多资源

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

×
 楼主| 游浪星 发表于 2013-9-4 14:49 | 显示全部楼层
huangxz 发表于 2013-9-4 14:03
没问题啊,是不是你选了擦除啊.

file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/920356221/QQ/WinTemp/RichOle/DBS8HJ3~%25B%6009))QD3$4%7DRB.jpg
我按你的程序也写了下,仿真的时候a0是0x3a  但是a1一直是00  我一直按F10  程序貌似不能进入while(1)里   ,是我哪边仿真没设置好吗?
 楼主| 游浪星 发表于 2013-9-4 14:49 | 显示全部楼层
能加你QQ吗  
huangxz 发表于 2013-9-4 14:53 | 显示全部楼层
游浪星 发表于 2013-9-4 14:49
我按你的程序也写了下,仿真的时候a0是0x3a  但是a1一直是00  我一直按F10  程序貌似不能进入while(1) ...

由于gcc优化的关系,你断点无法下到while(1)前面,你可以下到汇编指令里面


本帖子中包含更多资源

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

×
 楼主| 游浪星 发表于 2013-9-4 15:16 | 显示全部楼层
huangxz 发表于 2013-9-4 14:53
由于gcc优化的关系,你断点无法下到while(1)前面,你可以下到汇编指令里面

恩  谢谢你,我EESAVE熔丝位设置成0  所以不会擦出EEPROM的内容的。我仿真的时候是可以了,但是下进去后还是不行。那个EEP文件什么时候烧到eeprom里?是在烧hex之前还是之后?
huangxz 发表于 2013-9-4 15:23 | 显示全部楼层
游浪星 发表于 2013-9-4 15:16
恩  谢谢你,我EESAVE熔丝位设置成0  所以不会擦出EEPROM的内容的。我仿真的时候是可以了,但是下进去后 ...

要看你的烧入工具了。
我的是这样的。

一个program是烧flash的,中间个是烧eeprom的。

本帖子中包含更多资源

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

×
 楼主| 游浪星 发表于 2013-9-4 15:31 | 显示全部楼层
huangxz 发表于 2013-9-4 15:23
要看你的烧入工具了。
我的是这样的。

恩  那你是先烧FLASH,再烧eeprom的吗 ?我是用伟纳电子SP200烧的。
huangxz 发表于 2013-9-4 15:51 | 显示全部楼层
游浪星 发表于 2013-9-4 15:31
恩  那你是先烧FLASH,再烧eeprom的吗 ?我是用伟纳电子SP200烧的。

顺序都是没有影响的,过程应该是这样:
(1)片擦除-包括flash和eeprom
(2)flash写入,校验
(3)eeprom写入,校验

正常执行这些步骤没任何问题,我试过的。
 楼主| 游浪星 发表于 2013-9-4 16:15 | 显示全部楼层
恩  我用mega128试试看。那个有JTAG,谢谢你
xxiao6130 发表于 2013-9-9 09:06 | 显示全部楼层
可以打开memory,看看eeprom里面的情况的

评分

参与人数 1威望 +1 收起 理由
游浪星 + 1 很给力!

查看全部评分

netcattle 发表于 2013-9-24 08:20 | 显示全部楼层
楼主烧写进去然后仿真看的数据?仿真加载程序的时候会重置EEPROM的。
SevenWans 发表于 2015-8-4 14:59 | 显示全部楼层
挖坟了,那个EEMEM是什么意思。是定义了就变量就存放在EEPROM里吗?以后操作会自动读取存储?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

45

帖子

0

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