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
vymazání exter,eeprom 24LC16B
Re: vymazání exter,eeprom 24LC16B
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!
Re: vymazání exter,eeprom 24LC16B
Tak jsem se nachytal hned napoprve - prehlidl jsem sekci PICAxe.
Timto se moje poznamky stavaji silne irelevantni, tedy jako bych nic nenapsal.
Timto se moje poznamky stavaji silne irelevantni, tedy jako bych nic nenapsal.
Soldering fumes make you stronger!
Re: vymazání exter,eeprom 24LC16B
Řekl bych (be záruky), že tu paměť nejsnadněji vymažete zápisem samých F(hex).
Nepomohlo by tohle?
Nepomohlo by tohle?
jrt
Re: vymazání exter,eeprom 24LC16B
Dobrý den
Ten zápis v hexa vyzkouším.
...A ostatní přelouskám...
Moc díky.
Ten zápis v hexa vyzkouším.
...A ostatní přelouskám...
Moc díky.
Re: vymazání exter,eeprom 24LC16B
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
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
Re: vymazání exter,eeprom 24LC16B
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...
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...