Olá amigos!

Estou tentando fazer essa simples rotina de ler e escrever em uma EEPROM 24LC512 I / P,
mas sempre o valor retornado é 255. Eu já mudei de memória mas o resultado é o mesmo. Alguém sabe me dizer o que pode ser?

O código é esse abaixo:

#include "Wire.h"

#define EEPROM_I2C_ADDRESS 0x50

void setup()
{
Wire.begin();
Serial.begin(9600);

int address = 0;
byte val = 110;

writeAddress(address, val);
byte readVal = readAddress(address);

Serial.print("O valor retornado é: ");
Serial.println(readVal);

delay(10000);

}

void loop()
{
int address = 0;
byte val = 110;

writeAddress(address, val);
byte readVal = readAddress(address);

Serial.print("O valor retornado é: ");
Serial.println(readVal);

delay(1000);
}

void writeAddress(int address, byte val)
{
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
Wire.write((int)(address >> 8 )); // MSB
Wire.write((int)(address & 0xFF)); // LSB

Wire.write(val);
Wire.endTransmission();

delay(5);
}

byte readAddress(int address)
{
byte rData = 0xFF;

Wire.beginTransmission(EEPROM_I2C_ADDRESS);

Wire.write((int)(address >> 8 )); // MSB
Wire.write((int)(address & 0xFF)); // LSB
Wire.endTransmission();

Wire.requestFrom(EEPROM_I2C_ADDRESS, 1);

rData = Wire.read();

return rData;
}

Muito Obrigado!

Exibições: 1195

Responder esta

Respostas a este tópico

Oi 2CB, bom dia.

Primeiro uma recomendação que dou a todos amigos daqui.

Evite de colar  code na área de texto.  Anexe um arquivo com o code ou use o www.pastebin.com

Se você quiser pode remover o seu code postado e usar esta minha recomendação.

Depois, use o processo JACK para determinar o que é realmente seu problema.

Você tem certeza que o endereço está correto  " EEPROM_I2C_ADDRESS 0x50 "?

Use este code para verificar isto.  http://playground.arduino.cc/Main/I2cScanner

Com este code saberá o endereço correto e se a sua EEPROM se comunica corretamente com o arduino.

Rui

Obrigado Rui,

mas o resultado do código foi:

Scanning...
No I2C devices found

Acima está ligação

Oi 2CB, bom dia.

Você está usando os pinos A0 e A1 para comunicação I2C.

Estes pinos estariam corretos se a sua placa fosse um UNO.

Mas como você está usando um Leonardo, os pinos são outros.

São D2 e D3. Por isto voce recebe a msg   "No I2C devices found".

Veja aqui os pinos de cada placa.

https://www.arduino.cc/en/Reference/Wire

Corrija e teste novamente com o I2Cscanner.

Se ainda assim tiver problema, coloque 2 resistores de 10k dos pinos de I2C para o +5V.

Pois estes pinos não tem resitor interno de pullup.

http://1.bp.blogspot.com/-4jsahEkSrpw/U0S3keOXfiI/AAAAAAAAETc/c9-F5...

Rui

Funcionou!!

Muito Obrigado Rui!!!

Oi 2CB, boa noite.

Por favor, acrescente a palavra RESOLVIDO antes do seu texto no titulo do tópico.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço