Работа с EEPROM
- Войдите на сайт для отправки комментариев
Пнд, 16/05/2016 - 17:38
Приобрел память М24С32, научился записывать различные типы переменных, считывать их и т.п. Но тут у меня появился вопрос, какой адрис последний для записи? согласно даташиту - 4096. Написал такой скетч
while (k < 5001) {
eeprom.writeByte(k, 42);
delay(8);
k++;
}
Serial.print("TEST");
while (i <5001) {
byte data1 = eeprom.readByte(i);
Serial.print("adress ");
Serial.print(i);
Serial.print("znachenie ");
Serial.println(data1, DEC);
i++;
}
Беда в том, что даже на значениях адреса свыше 10000 контроллер все равно выдает в порт значение 42, а не 255 или ноль (я так понял он должен был выдать одно из крайних значений). Что же я сделал не так? И как определить последний адрес?
использую библиотеки
#include <Wire.h> #include <Eeprom24C32_64.h>
Ссылка на даташит не прикрепилась
Все так, работает по кругу после максималього адреса идет начало. Т.е. после адреса 4095 будет значение с 0, даже если пытаетесь указать 4096.
В качестве головоломки - придумайте как используя только операции записи и чтения определить максимальный адрес. Это возможно.
Благодарю за ответ и задачку
#include <Wire.h> #include <Eeprom24C32_64.h> #define EEPROM_ADDRESS 0x50 static Eeprom24C32_64 eeprom(EEPROM_ADDRESS); int k = 1; void setup() { Serial.begin(9600); eeprom.initialize(); eeprom.writeByte(0, 1); while (k > 0) { eeprom.writeByte( k, 2); delay(4); k++; if (eeprom.readByte(0) != 1) { Serial.println(k - 1); break; } } } void loop() { }ОК. Код похож на ответ.