原创 【摘自-www.avrvi.com】AVR使用范例--EEPROM使用详解

2009-2-23 11:04 3070 6 6 分类: MCU/ 嵌入式

本页关键词:什么是eeprom spi eeprom eeprom程序 eeprom资料 eeprom结构 eeprom 读写 eeprom的读写


本页详细介绍ICC自带EEPROM操作函数的操作方法,包括单字符读写,数组读写,结构体读写。


程序代码:下载相关文件





  1. 地址10上的值被改写为“a”
    地址10上的值被改写

  2. temp1的值变为a,及读取了地址0x10的值a:
    temp1的值变为a

  3. abcdefg写入20开始的地址:
    abcdefg写入20开始的地址

  4. temp2的变为地址20的值a:

  5. 以0x20开始的值都读入buffer数组中:

  6. 预定义的数组中的值写到EEPROM中:
    点击看大图
  7. 设置不保护EEPROM的值之后,停止调试再开始调试,EEPROM中的值改为0XFF:
    点击看大图


  • EEPROMWriteBytes(0x10,&red_flag,sizeof(red_flag)); //将结构写入EEPROM
  • EEPROMReadBytes(0x10,&red_flag,sizeof(red_flag)); //从EEPROM中将结构全部读出来
  • 旗帜的结构为
 
 

AVR操作EEPROM应注意的问题

作为一个正式的系统或产品,当系统基本功能调试完成后,一旦进行现场测试阶段,请注意马上改写熔丝位的配置,启用AVR的电源检测(BOD)功能。

对于5V系统,设置BOD电平为4.0V;对于3V系统,设置BOD电平为2.7V。然后允许BOD检测。


这样,一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。保证了系统的可靠性!


原因分析如下:

AVR
是宽电压工作的芯片,当电压跌至2.5V,系统程序还能工作。这是有2个可怕的现象可能出现,

1
。外围芯片工作已经混乱,AVR读到的东西不正确,造成程序的执行发生逻辑错误(不是AVR本身的原因)。

2
。当电源低到临界点,如2.4V时,并且在此互上互下的,AVR本身的程序执行也不正常,取指令、读数据都可能发生错误,或程序乱飞、不稳定(AVR本身的原因,实际任何的单片机都是这样的),非常容易造成EEPROMFALSH的破坏。有人问51怎么不会?实际上51也是这样,只是51内部没有直接写EEPROMFLASH的指令,它的程序乱飞留不下痕迹。还有人有疑问:外挂EEPROM,掉电时怎么不会改写?实际是外挂EEPROM,当电压低于4V2.7V)时,它已经不工作了,程序去改内容也改不了。而AVR内部的东西在临界电压时都能工作,但非常不稳定。


AVR
BOD功能必须要使用,我早期使用51时,凡是产品外部都要使用电源监测芯片,现在AVR自己本身就有该功能,一定要使用。

        
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条