Работа с еепром по I2C
- Войдите на сайт для отправки комментариев
Чт, 07/01/2016 - 11:27
eeprom AT24C256 Подскажите пожалуйста как работать с такой платой ?
eeprom AT24C256 Подскажите пожалуйста как работать с такой платой ?
Товарищу лень гуглить, искать читать.
#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() { }В коде реализована запись и чтение байта по адресу
Добрый день. Совсем не лень. В вашем коде в какой адрес пишется информация ? Мне нужна запись в апределённый адрес и так же его считывание из адреса. Если вам неочень сложно можете помочь разобратся с вашим примером ?
Вообщем упростить код таким образом ячейка 100 и запись в эту ячейку число десятичное 155. Собственно всё. За помощь могу отблагодарить.
в вашем примере инфа пишется с 0 ячейки по 19 попорядку в цикле. я хочу добится записи в определённую ячейку и считывание из неё вот и всё собственно.
в вашем примере инфа пишется с 0 ячейки по 19 попорядку в цикле. я хочу добится записи в определённую ячейку и считывание из неё вот и всё собственно.
Т.е. как писать в 0-ую или в 19-ую Вы разобрались, а вот как писать в 100-ую - не знаете? Я правильно понял?
Или мало выпили или слишком много - мозг отказался работать)))
writeData(100,150);
так точно нужна запись только в одну ячейку пускай будет 100 и число в неё записать 150
так точно нужна запись только в одну ячейку пускай будет 100 и число в неё записать 150
Вы меня убиваете! Как писать в яейку 0 Вам показали. Какие у Вас проблем записать в ячейку 100? Что непонятно? В чём именно проблема?
Или мало выпили или слишком много - мозг отказался работать)))
writeData(100,150);
Ну, зачем Вы помешали человеку сделать собственное открытие?
Даайте не будем отходить от темы, очевидно что человеку трудно думать и понимание приходит постепенно. Но на этом форуме будем помогать всем достичь полного понимания работы программы.
записалось действительно в сотую ячейку
совершенно с вами согласен
вот и разбираюсь зачем нужен массив с циклами разве нельзя просто записать инфу в одну ячейку и потом её оттуда прочитать
как к примеру с епром самой ардуины
Даайте не будем отходить от темы, очевидно что человеку трудно думать и понимание приходит постепенно. Но на этом форуме будем помогать всем достичь полного понимания работы программы.
дык и я ж про то же! Откуда возьмётся понимание, если Вы просто сами за него написали? А если завтра ему потребуется записать число 123 в 101-ую ячейку? Опять будете писать? Впрочем, дело Ваше.
Просто в одну ячейку можно записать только 1 байт. Байт это самая малая величина. millis() имеет тип unsigned long - который занимает 4 байта.
Как вы будете записывать переменную занимающую 2 байта(тип int)?
чтобы разобратся нужно упростить код а для этого нужно убрать массив и циклы и подпрограммы для чего нужна масса переменных чтобы человек нечего непонял и вы его отправили в гугл ? гугл поисковик он неможет пояснить структуру кода.
тоесть в этой памяти я несмогу записать просто в одну ячейку тут запись сразу идёт страницей ?
Товарищи, стоит ли использовать внешнюю Eeprom, 24LC256, чтобы не "изнашивать мк" (ограниченное же число записи). Или я заморачиваюся?
заморачиваесся.
зависит от того, сколько раз писать планируете. И если уж берете внешнюю, чтобы писать много - берите FRAM с его практически неограниченным ресурсом - она нынче чуть дороже традиционной ЕЕПРОМ
Запись около 10 раз в день.
FM24C04B прикуплю)
Запись около 10 раз в день.
При таком использовании ресурса внутренней ардуиновской EEPROM хватит более чем на 25 лет - я бы не заморачивался :)
"Много записей" - это напромер 3 млн перезаписей в час - было тут в одном проекте :)
А ежели еще в разные ячейки писать, то хватит до рассейской пенсии.
Запись около 10 раз в день.
Простая математика:
10 раз в день * 365 дней в году = 3650 записей в год.
Гарантированный ресурс EEPROM МК = 100000 циклов перезаписи.
100000 / 3650 = 27,39 лет гарантированного ресурса.
Спасибо)
Значит не куплю...XDDD
Ну, вот, оставили девочку без шоппинга! Злые вы фсе!
Неправильно вы проникаете в женскую психологию. Если не нужно покупать микросхемы, то можно же купить кулон в санлайте (коли бесплатно не достался)!
Win-win, как грицца.
Никаких кулонов,только 3Д принтер!)))
Принтер псевдосеребром не напечатает... Не знаю, как можно шармы на 3D-принтер сменять...