搜索
bottom↓
回复: 9

请教马老师一个mega64的EEPROM中某个数据偶尔被改写的问题,谢谢

[复制链接]

出0入0汤圆

发表于 2009-3-19 21:27:54 | 显示全部楼层 |阅读模式
马老师您好:
我有一个mega64的EEPROM被乱写的问题想请教您一下。
我们用mega64做一个监控产品,主要用到mega64的SPI口和UART串口。SPI口做了底层驱动后,上层通过sprintf_P函数组包将数据组好后发送给SPI口,由于我们要检测的数据量非常大,在内存中定义了很多结构体,占用了大量的内存,程序流程也写的很复杂,占用了mega64的99.8%的FLASH资源,和73.6%的RAM资源。GCC编译后产生如下数据:
Program:   65388 bytes (99.8% Full)
(.text + .data + .bootloader)

Data:       3016 bytes (73.6% Full)
(.data + .bss + .noinit)
这个程序在试量产的时候,做了30台,在跑的过程中,发现一个问题,经常将EEPROM中的某个数据改掉,在那个位置写了一些乱码,很奇怪。如下图:

正确的应该如下:

两个都是通过双龙USBISP从EEPROM中读取的数据,请问这会是什么原因呢?
        程序只有在最开始的时候会去EEPROM读出数据,在UART串口收到指令后往EEPROM中写数据,但是在正常跑的时候我们也不发UART指令的。所以正常跑的过程中不会写EEPROM的。
按照您说的,BOD也已经打开,4V掉电检测。
设备在运行中,跑上1-2个小时,有的设备会出现上面EEPROM中出现乱码的情况,不是每一台都会同时出现这些现象,有的早出现,有的晚出现。这个问题已经困扰我们三天了,我们没有很好的办法去检测程序运行的实时状态。只能通过串口观察,但是我们通过串口观察的3台设备却一直也没有出现上面的错误,已经有3-4个小时了,请问这会是什么问题呢?我想是不是内部RAM有溢出,导致程序跑飞了?还是…,请马老师给点建议,谢谢。

出0入0汤圆

 楼主| 发表于 2009-3-19 21:30:32 | 显示全部楼层

EEPROM中数据被改写 (原文件名:error.JPG)

出0入0汤圆

 楼主| 发表于 2009-3-19 21:31:13 | 显示全部楼层

EEPROM中没被改写的数据 (原文件名:right.JPG)

出0入0汤圆

发表于 2009-3-24 09:22:13 | 显示全部楼层
我用AVR 三年来从来没有出过问题。而且经过大量反复试验过(测试的重点是:(1)、反复上电。(2)用串口调试精灵,每隔50往EEPROM写数据)

  1、确保你的程序没有问题
  2、熔丝BOD必须开启(ATMEGA128)
  3、熔丝门限电压必须设置成4.3V

出0入0汤圆

发表于 2009-12-7 16:42:04 | 显示全部楼层
关注......

出0入0汤圆

发表于 2009-12-7 20:15:06 | 显示全部楼层
除了3楼的几点,还需要注意:

1。对EEPROM写操作时,必须保证不被其它中断打断(关闭所有的中断)。尤其是自己编写的对EEPROM写操作低层函数。使用CVAVR可以直接调用他提供的EEPROM读写函数,因为该函数已经关闭了所有的中断。

2。对一批写入EEPROM的数据增加效验字节,写入后马上读出,进行效验,不对重写。程序中读EEPROM数据使用时,首先经验效验字节,如果不对,需要放弃,做错误处理。

根据你的介绍,运行中不写EEPROM的,而且BOD也已经使用,4V掉电检测,因此应该不会破坏掉EEPROM中的数据。最大的可能是程序本身的问题。

我设计的产品很多都是具备掉电保存数据,上电后接掉电时的状态继续运行(不是从头开始)的,保存数据就是使用AVR内部的EEPROM。都没有问题。我主要使用CVAVR,直接用它提供的EEPROM操作函数。

出0入0汤圆

发表于 2009-12-8 12:48:09 | 显示全部楼层
Data:       3016 bytes (73.6% Full)
这个73.6%是一些全局量和静态量。函数内部的局部动态变量没有包含。所以可能出现RAM溢出。其他的我就不会了,呵呵。

出0入0汤圆

发表于 2009-12-9 16:50:26 | 显示全部楼层
直接用flash代替eerom吧,数据绝对稳定。

可惜你的flash没空间了

出0入0汤圆

发表于 2009-12-11 17:46:33 | 显示全部楼层
搭车问一句:怎么把数据写入flash?用汇编?

出0入0汤圆

发表于 2009-12-14 16:04:20 | 显示全部楼层
回8楼

详见:数据手册中“引导加载支持的自编程功能”章节
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 11:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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