esp8266 用arduino 实例的EEPROM程序写入后正常读取,但是断电...-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 23356|回复: 23

[未解决] esp8266 用arduino 实例的EEPROM程序写入后正常读取,但是断电...

[复制链接]
发表于 2016-9-5 12:48 | 显示全部楼层 |阅读模式
esp8266 用arduino 实例的EEPROM程序写入后正常读取,但是断电后重新加电,又变回原来的数值了,是怎么回事。

比如我再EEPROM的0位写入了132,由原来的255变成132了,这个接着读取都是132.
但是把电关了,重新读,又变成255了,这是怎么回事?有人知道吗?
发表于 2016-9-5 13:37 | 显示全部楼层

回帖奖励 +1 金币

你用的是 arduino 本身自带的 eeprom吗?
发表于 2016-9-5 19:49 | 显示全部楼层
能发一下代码吗
 楼主| 发表于 2016-9-6 11:16 | 显示全部楼层

#include<EEPROM.h>
union data{
  int a;
  byte b[4];
};

data c;
int addr = 0;
int led = 13;

void setup() {
  Serial.begin(115200);
EEPROM.begin(1024);

  pinMode(led,OUTPUT);
pinMode(12, INPUT_PULLUP);
}

void loop() {
  digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);

int val = digitalRead(12);
  if(val == LOW){
  
c.a = 32767;
for (int i = 96; i < 100; i++)
  EEPROM.write(i,c.b);
  Serial.println("write done");

  }
for(int i = 96; i<100; i ++)
c.b = EEPROM.read(i);
Serial.println(c.a);
  EEPROM.commit();
   delay(100);     

}
 楼主| 发表于 2016-9-6 11:17 | 显示全部楼层
Zoologist 发表于 2016-9-5 13:37
你用的是 arduino 本身自带的 eeprom吗?

对啊,自带的和改的都不能用,用arduino的开发板可以,用esp8266断电就变了
 楼主| 发表于 2016-9-6 11:50 | 显示全部楼层
son9dy 发表于 2016-9-6 11:17
对啊,自带的和改的都不能用,用arduino的开发板可以,用esp8266断电就变了

用自带的可以,用共用体,保存数据就不行了。
发表于 2016-9-6 11:51 | 显示全部楼层
son9dy 发表于 2016-9-6 11:17
对啊,自带的和改的都不能用,用arduino的开发板可以,用esp8266断电就变了

uno的 eeprom 是 1024Byte

你开始的访问似乎有问题
 楼主| 发表于 2016-9-6 11:53 | 显示全部楼层
Zoologist 发表于 2016-9-6 11:51
uno的 eeprom 是 1024Byte

你开始的访问似乎有问题

一样的,换成512,或者不写。都不是这个原因
发表于 2017-1-17 15:45 | 显示全部楼层
http://qiita.com/exabugs/items/0220edd4c9bf93da981b
发表于 2017-1-17 15:45 | 显示全部楼层
我注意到小日本的代码里面有个PUT  你试试看可以吗  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:00 , Processed in 0.126074 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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