Работа с еепром по I2C

grbox
Offline
Зарегистрирован: 16.04.2015

eeprom AT24C256 Подскажите пожалуйста как работать с такой платой ?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Товарищу лень гуглить, искать читать.

#include <Wire.h>     // for I2C
#define i2caddr 0x50    // device address for left-hand chip on our breadboard
byte d=0; // data to store in or read from the EEPROM

void setup()
{
  Serial.begin(115200); // Initialize the serial line
  Wire.begin();         // wake up the I2C
 
  Serial.println("Writing data...");
  for (int i=0; i<20; i++)
  {
    writeData(i,i);
  }
  Serial.println("DONE");
  Serial.println("Reading data...");
  for (int i=0; i<20; i++)
  {
    Serial.print(i);
    Serial.print(" : ");
    d=readData(i);
    Serial.println(d, DEC);
  }
  Serial.println("DONE");

}

// writes a byte of data in memory location addr
void writeData(unsigned int addr, byte data) 
{
  Wire.beginTransmission(i2caddr);
  // set the pointer position
  Wire.write((int)(addr >> 8));
  Wire.write((int)(addr & 0xFF));
  Wire.write(data);
  Wire.endTransmission();
  delay(10);
}

// reads a byte of data from memory location addr
byte readData(unsigned int addr) 
{
  byte result;
  Wire.beginTransmission(i2caddr);
  // set the pointer position
  Wire.write((int)(addr >> 8));
  Wire.write((int)(addr & 0xFF));
  Wire.endTransmission();
  Wire.requestFrom(i2caddr,1); // get the byte of data
  result = Wire.read();
  return result;
}

void loop()
{
}

В коде реализована запись и чтение байта по адресу

grbox
Offline
Зарегистрирован: 16.04.2015

Добрый день.  Совсем не лень. В вашем коде в какой адрес пишется информация ? Мне нужна запись в апределённый адрес и так же его считывание из адреса. Если вам неочень сложно можете помочь разобратся с вашим примером ?

grbox
Offline
Зарегистрирован: 16.04.2015

Вообщем упростить код таким образом ячейка 100 и запись в эту ячейку число десятичное 155. Собственно всё. За помощь могу отблагодарить.

grbox
Offline
Зарегистрирован: 16.04.2015

в вашем примере инфа пишется с 0 ячейки по 19 попорядку в цикле. я хочу добится записи в определённую ячейку и считывание из неё вот и всё собственно.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

grbox пишет:

в вашем примере инфа пишется с 0 ячейки по 19 попорядку в цикле. я хочу добится записи в определённую ячейку и считывание из неё вот и всё собственно.

Т.е. как писать в 0-ую или в 19-ую Вы разобрались, а вот как писать в 100-ую - не знаете? Я правильно понял?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Или мало выпили или слишком много - мозг отказался работать)))

writeData(100,150);

grbox
Offline
Зарегистрирован: 16.04.2015

так точно нужна запись только в одну ячейку пускай будет 100 и число в неё записать 150

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

grbox пишет:

так точно нужна запись только в одну ячейку пускай будет 100 и число в неё записать 150

Вы меня убиваете! Как писать в яейку 0 Вам показали. Какие у Вас проблем записать в ячейку 100? Что непонятно? В чём именно проблема?

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

NeiroN пишет:

Или мало выпили или слишком много - мозг отказался работать)))

writeData(100,150);

Ну, зачем Вы помешали человеку сделать собственное открытие?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Даайте не будем отходить от темы, очевидно что человеку трудно думать и понимание приходит постепенно.   Но на этом форуме будем помогать всем достичь полного понимания работы программы.

grbox
Offline
Зарегистрирован: 16.04.2015

записалось действительно в сотую ячейку

grbox
Offline
Зарегистрирован: 16.04.2015

совершенно с вами согласен

grbox
Offline
Зарегистрирован: 16.04.2015

вот и разбираюсь зачем нужен массив с циклами разве нельзя просто записать инфу в одну ячейку и потом её оттуда прочитать

grbox
Offline
Зарегистрирован: 16.04.2015

как к примеру с епром самой ардуины

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

NeiroN пишет:

Даайте не будем отходить от темы, очевидно что человеку трудно думать и понимание приходит постепенно.   Но на этом форуме будем помогать всем достичь полного понимания работы программы.

дык и я ж про то же! Откуда возьмётся понимание, если Вы просто сами за него написали? А если завтра ему потребуется записать число 123 в 101-ую ячейку? Опять будете писать? Впрочем, дело Ваше.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

 Просто в одну ячейку можно записать только 1 байт. Байт это самая малая величина. millis() имеет тип unsigned long - который занимает 4 байта.

Как вы будете записывать переменную занимающую 2 байта(тип int)?

 

grbox
Offline
Зарегистрирован: 16.04.2015

чтобы разобратся нужно упростить код а для этого нужно убрать массив и циклы и подпрограммы для чего нужна масса переменных чтобы человек нечего непонял и вы его отправили в гугл ? гугл поисковик он неможет пояснить структуру кода.

grbox
Offline
Зарегистрирован: 16.04.2015

тоесть в этой памяти я несмогу записать просто в одну ячейку тут запись сразу идёт страницей ?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Товарищи, стоит ли использовать внешнюю Eeprom, 24LC256, чтобы не "изнашивать мк" (ограниченное же число записи). Или я заморачиваюся?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Irinka пишет:
Или я заморачиваюся?

заморачиваесся. 

b707
Offline
Зарегистрирован: 26.05.2017

Irinka пишет:
Товарищи, стоит ли использовать внешнюю Eeprom, 24LC256, чтобы не "изнашивать мк" (ограниченное же число записи). Или я заморачиваюся?

зависит от того, сколько раз писать планируете. И если уж берете внешнюю, чтобы писать много - берите FRAM с его практически неограниченным ресурсом - она нынче чуть дороже традиционной ЕЕПРОМ

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Запись около 10 раз в день.

FM24C04B прикуплю)

b707
Offline
Зарегистрирован: 26.05.2017

Irinka пишет:

Запись около 10 раз в день.

При таком использовании ресурса внутренней ардуиновской EEPROM хватит более чем на 25 лет - я бы не заморачивался :)

"Много записей" - это напромер 3 млн перезаписей в час - было тут в одном проекте :)

sadman41
Offline
Зарегистрирован: 19.10.2016

А ежели еще в разные ячейки писать, то хватит до рассейской пенсии.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Irinka пишет:

Запись около 10 раз в день.

Простая математика:

10 раз в день * 365 дней в году = 3650 записей в год.
Гарантированный ресурс EEPROM МК = 100000 циклов перезаписи.
100000 / 3650 = 27,39 лет гарантированного ресурса.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Спасибо)

Значит не куплю...XDDD

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Ну, вот, оставили девочку без шоппинга! Злые вы фсе!

sadman41
Offline
Зарегистрирован: 19.10.2016

Неправильно вы проникаете в женскую психологию. Если не нужно покупать микросхемы, то можно же купить кулон в санлайте (коли бесплатно не достался)!

Win-win, как грицца.

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Никаких кулонов,только 3Д принтер!)))

sadman41
Offline
Зарегистрирован: 19.10.2016

Принтер псевдосеребром не напечатает... Не знаю, как можно шармы на 3D-принтер сменять...