eeprom 24c04

Salve!

Sto cercando si scrivere in una eeprom 24c04 la sintassi che uso e' questa:

I2CWRITE SDA,SCL,$A0,var1,[var2]

il problema sta se uso variabili (var1 e var2) a 16 bit dichiarando appunto var1 e var 2 di tipo word, quando vado a leggere le celle della eeprom non c'e' quello che doveva esserci, sono costretto ad usare almeno var1 a 16 bit perche' la 24c04 ha 511 celle, se invece uso variabili a 8 bit dichiarando le varibili come di tipo byte funziona tutto egregiamente, per far capire meglio posto l'intero ciclo

for var1 = 0 to $1ff var2=$ab I2CWRITE SDA,SCL,$A0,var1,[var2] pause 20 next var1

sapete dirmi dove e' l'inghippo?

Reply to
enzo
Loading thread data ...

da un'occhiata al ds dell eeprom... cmq che io sappia queste eeproom hanno "celle" da 8 bit, non da 16

ciao!

Reply to
ice

"enzo" ha scritto nel messaggio news:4343016a$0$15713$ snipped-for-privacy@reader4.news.tin.it...

Non so se l'istruzione I2CWRITE del tuo compilatore, gestisca in automatico la scrittura di variabili di più di un byte. Anche se così fosse, dovresti scrivere non in indirizzi consecutivi (a livello di byte), ovvero dovresti fare qualcosa del tipo for var1 = 0 to $FE step 2

Reply to
Roberto

Ciao!

lo so che le singole celle sono da 8 bit, il problema non e' questo ma consiste che la 24c04 ha 511 celle e per indicare un cella superiore alla

255 devo usare una variabile a 16 bit "ice" ha scritto nel messaggio news:43437ff6$0$29543$ snipped-for-privacy@reader1.news.tin.it...
Reply to
enzo

Ciao!

molto interessante la tua informazione, ma volevo chiederti se srvo con step di 2 avro' delle locazioni che non andro' a scrivere?

"Roberto" ha scritto nel messaggio news:di0l9r$k4h$ snipped-for-privacy@area.cu.mi.it...

Reply to
enzo

"enzo" ha scritto nel messaggio news:4343016a$0$15713$ snipped-for-privacy@reader4.news.tin.it...

Ti faccio un sunto di come funzionano le 24C. Intanto quelle che chiami celle sono byte... infatti la 24C04 è una EEPROM da 4kbit, cioè 4096 kb, che diviso 8 da 512 byte (da quello con indirizzo 0 a quello con indirizzo 511).

Questi byte internamente sono divisi in pagine da 32 byte ognuna.

Tu puoi scrivere un byte (una cella da 8 bit) alla volta inviando dato e indirizzo (indicandolo a 16 bit, in realtà te ne servono 9), o una pagina alla volta inviando dato e indirizzo di partenza. L'indirizzo di partenza di una pagian naturalmente può essere 0, 32, 64, ...

J.

Reply to
Regae

Problema risolto scaricando il datasheet dalla SGS, la 24c04 ha due pagine da 256 locazioni ogni una, quindi la prima va da 00 a FF, mentre la seconda va da 100 a 1FF, per scegliere la pagina da usare cioe' la prima o la seconda basta impstare il bit A8 a 0 per la prima pagina mentre 1 per la seconda, inoltre indirizzamente si puo' fare con comandi ad 8 bit e non a

16 come cercavo di fare, in sintesi se invio 10100000 scrivero' nella prima pagina se invio 10100010 scrivero' nella seconda.

"Regae" ha scritto nel messaggio news:434440fe$0$29550$ snipped-for-privacy@reader1.news.tin.it...

Reply to
enzo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.