INT 21h

Hi, I am Vladimir Smagin, SysAdmin, DevOps and barely good guy. Telegram Email / GIT / Микроблог / Thingiverse / GPG

ESP8266: Пример работы с внешней EEPROM через I2C

№ 8349 В разделах: Программирование Электроника ESP8266 от July 8th, 2017,

Решил тряхнуть стариной со второй купленой отладочной платой с ESP8266 и что-нить запрогать. Под руку попалась ППЗУ от Atmel на целый 1 кБайт 🙂 Поскольку код особо писать не хотелось была найдена библиотечка. У автора возникла проблема с точно такой же микросхемой как у меня. После быстрого просмотра кода стало понятно, что используется 16 битная адресация, которая есть только на более объемных моделях типа 24LC256. Всего несколько строчек изменено и вот уже работает 8 битная адресация 🙂 В writeEEPROM и readEEPROM закомментировал 2 строки со смещением и засылом байтов и просто написал свою строку с 8 битным адресом.

void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) {
 Wire.beginTransmission(deviceaddress);
 //Wire.write((int)(eeaddress >> 8)); // MSB
 //Wire.write((int)(eeaddress & 0xFF)); // LSB
 Wire.write((int)(eeaddress)); //only for 8 bit addressing
 Wire.write(data);
 Wire.endTransmission();
 delay(5);
}

byte readEEPROM(int deviceaddress, unsigned int eeaddress ) {
 byte rdata = 0xFF;
 Wire.beginTransmission(deviceaddress);
 //Wire.write((int)(eeaddress >> 8)); // MSB
 //Wire.write((int)(eeaddress & 0xFF)); // LSB
 Wire.write((int)(eeaddress)); //only for 8 bit addressing
 Wire.endTransmission();
 Wire.requestFrom(deviceaddress,1);
 if (Wire.available()) rdata = Wire.read();
 return rdata;
}

void setup() {
 EEPROMAddress = 0; // EEPROM word variable
 EEPROMValue = 120; // EEPROM value

 Serial.print("EEPROMAddress: ");  Serial.print(EEPROMAddress);
 Serial.print(", EEPROMValue: ");  Serial.print(EEPROMValue);
 Serial.print(", EEPROMBank: 0x"); Serial.println(EEPROMBank,HEX);

 writeEEPROM(EEPROMBank, EEPROMAddress, byte(EEPROMValue));

 for (EEPROMAddress = 0; EEPROMAddress < 3; EEPROMAddress++) {
  Serial.print("EEPROMAddress: ");
  Serial.print(EEPROMAddress);
  Serial.print(", Value: ");
  Serial.println(readEEPROM(EEPROMBank, EEPROMAddress), DEC);
 }
}

Исходник https://git.blindage.org/21h/esp8266-eeprom

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Микроблог перейти

# 2019-11-20 13:13:54

Говорят вещь хорошая, надо будет поковырять на днях keel.sh/ #kubernetes #devops

# 2019-11-16 02:02:31

Хорошая шпаргалка по пластикам для печати drive.google.com/file/d/1NKB3- В принципе, данные практически сходятся с моими blindage.org/?p=10199

# 2019-11-14 15:29:01

Код quay теперь открыт www.projectquay.io/ #devops #kubernetes


© Vladimir Smagin, 2005-2019. Копирование материалов без разрешения запрещено. GPG DA4CD0F5E222EA727D6A40C413BCE12E5618F071 *
Яндекс.Метрика

Fortune cookie: A whimsical fellow named Bloch Could beat the base drum with his cock. With a special erection He could play a selection From Johann Sebastian Bach.