打印
[AVR单片机]

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

[复制链接]
3660|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天发现这样一个问题,我用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,而不是初始化的值。你也是 ...

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




使用特权

评论回复
5
游浪星|  楼主 | 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)里   ,是我哪边仿真没设置好吗?

使用特权

评论回复
6
游浪星|  楼主 | 2013-9-4 14:49 | 只看该作者
能加你QQ吗  

使用特权

评论回复
7
huangxz| | 2013-9-4 14:53 | 只看该作者
游浪星 发表于 2013-9-4 14:49
我按你的程序也写了下,仿真的时候a0是0x3a  但是a1一直是00  我一直按F10  程序貌似不能进入while(1) ...

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


使用特权

评论回复
8
游浪星|  楼主 | 2013-9-4 15:16 | 只看该作者
huangxz 发表于 2013-9-4 14:53
由于gcc优化的关系,你断点无法下到while(1)前面,你可以下到汇编指令里面

恩  谢谢你,我EESAVE熔丝位设置成0  所以不会擦出EEPROM的内容的。我仿真的时候是可以了,但是下进去后还是不行。那个EEP文件什么时候烧到eeprom里?是在烧hex之前还是之后?

使用特权

评论回复
9
huangxz| | 2013-9-4 15:23 | 只看该作者
游浪星 发表于 2013-9-4 15:16
恩  谢谢你,我EESAVE熔丝位设置成0  所以不会擦出EEPROM的内容的。我仿真的时候是可以了,但是下进去后 ...

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

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

使用特权

评论回复
10
游浪星|  楼主 | 2013-9-4 15:31 | 只看该作者
huangxz 发表于 2013-9-4 15:23
要看你的烧入工具了。
我的是这样的。

恩  那你是先烧FLASH,再烧eeprom的吗 ?我是用伟纳电子SP200烧的。

使用特权

评论回复
11
huangxz| | 2013-9-4 15:51 | 只看该作者
游浪星 发表于 2013-9-4 15:31
恩  那你是先烧FLASH,再烧eeprom的吗 ?我是用伟纳电子SP200烧的。

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

正常执行这些步骤没任何问题,我试过的。

使用特权

评论回复
12
游浪星|  楼主 | 2013-9-4 16:15 | 只看该作者
恩  我用mega128试试看。那个有JTAG,谢谢你

使用特权

评论回复
13
xxiao6130| | 2013-9-9 09:06 | 只看该作者
可以打开memory,看看eeprom里面的情况的

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
游浪星 + 1 很给力!
14
netcattle| | 2013-9-24 08:20 | 只看该作者
楼主烧写进去然后仿真看的数据?仿真加载程序的时候会重置EEPROM的。

使用特权

评论回复
15
SevenWans| | 2015-8-4 14:59 | 只看该作者
挖坟了,那个EEMEM是什么意思。是定义了就变量就存放在EEPROM里吗?以后操作会自动读取存储?

使用特权

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

本版积分规则

8

主题

45

帖子

0

粉丝