Pages: 1 [2] 3   Go Down
Author Topic: Utilizzare una EEPROM 24WC16P con Arduino  (Read 3161 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@garinus il tuo codice rispedisce indietro 255(ÿ), probabilmente a questo punto peso sia un problema di collegamento o lo sketch ha gli indirizzi sbagliati. Ho provato con una24WC16P e una 24c16 che sono uguali come memoria e da sempre 255
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esatto! Hai il mio stesso problema!
Ritorna sempre 255, maledizione!

Secondo me, guardando il codice, dipende dal fatto che non c'è comunicazione con la EEPROM:

Code:
byte rdata = 0xFF;
  if (Wire.available()) rdata = Wire.receive();
return rdata;

Infatti, (0xFF)16 = (255)10
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io ho provato per vedere se ci fosse comunicazione cosi:

Code:
if (Wire.available())
{
rdata = Wire.receive();
Serial.print("aviable");
}
return rdata;

e cosi non mi entrava mai nell'if
Logged

cuneo
Offline Offline
God Member
*****
Karma: 3
Posts: 785
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

allora avrete il codice della memoria diverso..
bisogna cercare nel datasheet
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

con quel codice ho provato anche su una atmel 24c16 e non funziona forse avro sbagliato piedinatura ci controllo
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

niente non ci riesco a farlo andare provo a togliere l'alimentazione dalla e2prom e mi da sempre 255 non comunica. come si puo fare?
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Stavo per provare il codice di garinus, ma vedo che già non è andato a te...

Devo pensare che abbiamo due Arduino con i pin 4 e 5 fuori uso??  :-/
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no funzionano ho provato a leggere un valore analogico e vanno, ho provato anche con i pin digitali, ma niente sembra cha sia attaccata male la  E2PROM... secondo me ha qualche cosa il pin 7 (WP)
 smiley
Logged

cuneo
Offline Offline
God Member
*****
Karma: 3
Posts: 785
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ovvio è il write protection
deve avere uno stato da datasheet sennò non si scrive....
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sulle 24C16 deve essere messo a gnd per R/W in queta non lo sò. Però io ho provato con due memorie già citate sopra e non funge con nessuna
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non sbaglio, nel datasheet dice che va connesso a massa per abilitarne la scrittura...
« Last Edit: June 25, 2010, 02:14:21 pm by 83darking83 » Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 181
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e lettura
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dopo aver scoperto questo:
"On the Arduino Mega, SDA is digital pin 20 and SCL is 21"
e aver seguito alla lettera questa guida:
http://10kohms.com/arduino-external-eeprom-24lc256
ed aver ottenuto l'ennesimo maledetto 255.... RINUNCIO!   >smiley-sad

In pratica, ho visto che, in fase di lettura, dopo il comando:
Code:
Wire.requestFrom(deviceaddress,1);
il successivo:
Code:
Wire.available()
è uguale a NULL!
Quindi le ipotesi sono due: o non scrive nulla (perchè non ha nessun byte da ricevere) o entrambe (ho provato anche con una SLA24C14D con la stessa piedinatura) le EEPROM non funzionano!
« Last Edit: June 26, 2010, 12:33:26 pm by 83darking83 » Logged

kokiua
Guest
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusate l'intrusione: ma mi è venuto il dubbio che l'indirizzo della eeprom non sia impostato correttamente, in quanto sul datasheet risulta che dovrebbe essere 1010 0xxx dove xxx dipende da come sono impostati i pin A0, A1, A2.
Nel vostro codice invece indicate:
Code:
--- (A2, A1, A0 to GND for 1010000 (0x50) address.)
invece di 0xA0 ... (B10100000)
Riporto qui il testo del datasheet:
Quote
The four most significant bits of the 8-bit slave address are fixed as 1010 for the CAT24WC01/02/04/08/16 (see Fig. 5). The next three significant bits (A2, A1, A0) are the device address bits and define which device or which part of the device the Master is accessing.
Che traducendolo sarebbe "l 4 bit più significativi dell'8-bit slave address sono fissati a 1010"...
Poi c'è comunque un dubbio se i 3 bit di indirizzo siano A2, A1, A0 oppure A3, A2, A1 (The next three significant bits) ... ma che nel caso siano tutti a 0 il problema non si pone  smiley-wink
« Last Edit: June 27, 2010, 05:26:21 am by kokiua » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 264
Posts: 21614
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a Tutti
avete provato questo esempio?
http://www.arduino.cc/playground/Code/I2CEEPROM24C1024
dovrebbe funzionare mettendo il valore #define MAX_ADDRESS a 2048
la libreria é fatta per un eprom col indirizzo 0x50 che dovrebbe essere il 24WC16.
Io l' ho provato con un 24LC256 e mi funziona.
Ciao Uwe
« Last Edit: June 26, 2010, 05:52:54 pm by uwefed » Logged

Pages: 1 [2] 3   Go Up
Jump to: