OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5394|回复: 3

AVR GCC EEPROM.h 读数据出错!

[复制链接]

33

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2013-6-18
在线时间
15 小时
发表于 2013-11-8 10:14:58 | 显示全部楼层 |阅读模式
是这样的。
ATMEGA 128
EEPROM 4K
GCC
内部晶振 8M
电源采用下载器供电。非仿真
主程序如下。

#include<avr/io.h>
#include<util/delay.h>
#include<avr/eeprom.h>

int main(void)
{
unsigned char val;
_delay_ms(3000);
// eeprom_busy_wait(); //等待EEPROM 读写就绪
// eeprom_write_byte(0,'C'); //将C 写入到EEPORM 0 地址处
eeprom_busy_wait();
val=eeprom_read_byte(0); //从EEPROM 0 地址处读取一字节赋给RAM 变量val
while(1);
}
实验现象:上电后直接向0地址写入C,让后立马读出,Val的结果为C,这样看上去没有错!EEPROM是掉电存储,我就试了下,先将写EEPROM的部分函数句释掉,烧入程序,断掉电源,等待几秒钟,在上电,发现Val读出来的值为255,读出错,不知道什么原因,本程序绝无中断,上电延时保证电源稳定后操作EEPROM,我以前也就是立马写了后立马读,本以为是正确的,没有进一步的去实验,才导致现在的问题,有相同经历的可以去试试。
有没有哪位能帮我解答!







一知半解!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-8 10:43:33 | 显示全部楼层
好多年没用AVR了
以前用avr的时候,用cvavr,eeprom的使用非常简单。直接定义关键字eeprom了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

33

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
280
金钱
280
注册时间
2013-6-18
在线时间
15 小时
 楼主| 发表于 2013-11-8 11:24:06 | 显示全部楼层
原因是在编程的时候被擦除了。
//EESAVE配置成0,表示使能EEPROM保存,这样下载程序不会擦掉原来的eeprom的内容。



一知半解!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-8 12:49:48 | 显示全部楼层
哦哦,谢谢分享。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 03:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表