vymazání exter,eeprom 24LC16B

Odpovědět
johan
Příspěvky: 31
Registrován: 20 bře 2013, 00:19
Bydliště: Ostrava

vymazání exter,eeprom 24LC16B

Příspěvek od johan »

Zdravím.

Po nahrání externí eeprom paměti 24LC16B, bych chtěl změnit (upravit) jeden znak.
jejikož je to EE.....pamět a dočetl jsem se, že se vymaže přivedením napětí(max 5V na adresové vdiče), přesto se mi to stále nedaří.

Když totiž znovu nahrávám už změněnou ascii tabulku znaků dole v programu, (a v ní upraven ten jeden znak), pořád se mi vykresluje ten původní.

Nevíte co dělám špatně?
Díky za radu
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: vymazání exter,eeprom 24LC16B

Příspěvek od Pirx »

Promin, ale cetl jsi datasheet? EEPROM se pred zapisem nemazou, mazat se musi pouze FLASH pameti. Do EEPROM se pristupuje podobne jako do RAM, jenom musis pockat, az se data zapisou, coz trva delsi dobu. Takze: Pokud jsi napajel EEPROM z +5V, privedenim +5V na piny jsi ji neznicil. Pokud ji napajis ze +3.3V, podle datasheetu je max napeti na pinu Vcc+1V, takze je patrne po ni. Pro zapis pouzij postup podle popisu v datasheetu (Byte Write nebo Page Write). U I2C zarizeni se zapis aktivuje tak, ze se nastavi nejnizsi bit "adresy" (neni to soucast adresy, ale bit Write) do jednicky. Tedy, pokud ma EEPROM adresu napr. 0xA0, nastavis 0xA1 pro zapis. U teto EEEPROM je to jeste komplikovano tim, ze musis vyssi tri bity adresy dat do adresy zarizeni a nizsich 8 bitu poslat jako druhy byte. Potom teprve muzes zapisovat jeden nebo max 16 bytu soucasne. Pak musis dat Stop na I2C a pockat na konec zapisu. Lepe je to popsano v datasheetu. Predpokladam, ze na toto jsi se ptal.
Soldering fumes make you stronger!
Pirx
Příspěvky: 181
Registrován: 24 úno 2013, 16:29
Kontaktovat uživatele:

Re: vymazání exter,eeprom 24LC16B

Příspěvek od Pirx »

Tak jsem se nachytal hned napoprve - prehlidl jsem sekci PICAxe.
Timto se moje poznamky stavaji silne irelevantni, tedy jako bych nic nenapsal.
Soldering fumes make you stronger!
Uživatelský avatar
jrt
Příspěvky: 1921
Registrován: 17 úno 2013, 17:13

Re: vymazání exter,eeprom 24LC16B

Příspěvek od jrt »

Řekl bych (be záruky), že tu paměť nejsnadněji vymažete zápisem samých F(hex).
Nepomohlo by tohle?
jrt
johan
Příspěvky: 31
Registrován: 20 bře 2013, 00:19
Bydliště: Ostrava

Re: vymazání exter,eeprom 24LC16B

Příspěvek od johan »

Dobrý den
Ten zápis v hexa vyzkouším.
...A ostatní přelouskám... :o
Moc díky.
Mimco

Re: vymazání exter,eeprom 24LC16B

Příspěvek od Mimco »

Zdravím,

pro vymazání (přepsání) obsahu EEPROM snad pomůže následující kód. Používal jsem jej v začátku práce s EEPROM, tak je trochu kostrbatý.
Kód je určen pro 24C64. Pro 24C16 je akorát nutné změnit parametry komunikace (konkrétně i2cword nahradit za i2cbyte).

Napětí na adresních vodičích zůstává nezměněno - je dle adresy (např. u mě i2cslave %10100000), jen musíte na "WP pin" 24C16 připojit zem (dělal jsem to přes rezistor 10k0). Fungovalo bez sebemenších problémů :)

Pokud jde o přepsání jednoho konkrétního znaku, stačí napsat jeho adresu (pořadí) do proměnné "kampsat" a na místo mého textu "Toto je pokusný text" zadat jen znak, který tam má být :)

Kód: Vybrat vše

symbol LED = B.0	'Signalizační LED
symbol WP = B.6	'Write Protect (Low úroveň je pro zápis)
symbol kampsat = 0 'Nastavení odkud se začne zapisovat do EEPROM
symbol kdecist = 0  'Nastavení odkud se začne číst z EEPROM

sertxd("Pokusy se zápisem do EEPROM 24C64",13,10," připojené na PICAXE 20M2",13,10)
zapis:
	high LED : 	low WP
	i2cslave %10100000, i2cfast, i2cword 'parametry komunikace (viz Datasheet)
	writei2c kampsat,("Toto je pokusny text")
	low LED		'vypnutí červené LED (signalizuje konec zapisování do EEPROM)
cteni:
	i2cslave %10100000, i2cfast, i2cword 'parametry komunikace (viz Datasheet)
	readi2c kdecist,(b0)
	sertxd ("Změněný znak: ",b0,13,10)
end
johan
Příspěvky: 31
Registrován: 20 bře 2013, 00:19
Bydliště: Ostrava

Re: vymazání exter,eeprom 24LC16B

Příspěvek od johan »

Ahoj
Tak jsem to všechno vyzkoušel a přečetl a moje "rezimé" je následující:
Když znaky zapisuju do externí eeprom 24LC16B po sběrnici iCC, tak nechám implicitní takt.frekvenci (u 28x1 4Mhz) a né 8Mhz nebo 16Mhz.
Dále pak je nutné po každých 8.Bajtech od dané adresy, dát pauzu.

Např:

writei2c $00,(0,62,65,93,85,30,0,0) ' @
pause 10
writei2c $08,(0,126,17,17,17,126,0,0) ' A 'např.2.blok paměti
pause 10
writei2c $10,(0,127,73,73,73,54,0,0) ' B
pause 10
writei2c $18,(0,62,65,65,65,34,0,0) ' C
pause 10
..........atd.......................
..........atd.......................


Pak až je celá ascii tabulka zapsána (4.a 5.blok používám pro pro zápis velkých znaků 16x16 na vykreslení loga firmy), vrátím rychlost tekt.frekvevce i rychlost čtení, na 16Mhz.

Např:

i2cslave %10100110, i2cfast_16, i2cbyte
...........kod...............
Readi2c b1,(b0)
...........kod...............

Ted mi to zapisuje i čte všechno, naprosto dokonale

Díky všem za rady a odkazy

________
Já ano... :D
Odpovědět