Cteni EEPROM u T89C51RD2

Jirka Mww jirka.mww na gmail.com
Pondělí Leden 20 17:41:43 CET 2014


Díky za odpověď. Prostudoval jsem datasheet a to čtení je opravdu
primitivní procedura.
Začínám mít  podezření na souběh čtení a přerušení, které tam mám tři:
1. od HW UARTU
2. od SW UARTU ( simulovaného v assembleru )
3. od časovače 100 mS

V těchto oblastech jsem s ničím nehýbal, ale mám podezření, že mi  přeteče
stack
až někam do oblasti  spec. registrů a změní to EECON .  Ten děj není
nahodilý, jakmile se to jednou stane, tak
až do resetu to čte už jen nuly. Udělal jsem velmi jednoduchý čtecí program
a je to opravdu tak.
Z celé oblasti EEPROM, která mě zajímá ( cca 100 bytů) to po tomhle
incidentu už čte jenom nuly .
Jediné, co se po resetu nastavuje HW je ten EECON.  Zkusím udělat program
na jeho vypsání a uvidím.
Možná bych mohl ho i SW nastavovat před každým čtením.
Dám vědět, jak jsem dopadl, pravděpodobně to bude nějaká ptákovina.




Dne 20. ledna 2014 9:28 Jan Waclawek <konfera na efton.sk> napsal(a):

> V tomto nevidim ziadny problem (ak len nemate prerusenie, ktore by EECON
> menilo niekde tesne pred tym citanim, co sa mi zda ako nezmysel).
>
>
> Nemoze byt problem niekde inde, t.j. v mieste, kde tie udaje spracovavate,
> zobrazujete, posielate prec atd.?
>
> wek
>
>
> ----- Original Message ---------------
> >U subj. dlouhou dobu používám jednoduchý program na ètení z EEPROM.
> Chodilo
> >to léta,
> >ale teï po provedených úpravách SW, které se nijak netýkají této oblasti,
> >mám potíže
> >se ètením konfiguraèních dat z EEPROM. Mám tam uložených 12 bytù a cca po
> >jednom dni provozu mi to zaène místo uložených dat èíst samé nuly.
>  Ostatní
> >funkce programu bìží normálnì. Staèí procesor zresetovat ( jen resetem, ne
> >napájením ) a data to ète zase dobøe.Program pro ètení je opsaný z
> pøíruèky
> >k RD2 kitu od HW shopu a nedoznal bìhem úprav žádných zmìn.
> >
> >Vypadá takto :
> >
> >BYTE ReadEEPromByte(WORD addr)
> >{ data BYTE val;
> >  while(EECON&EEBUSY){};  // wait until eeprom programming busy flag set
> >  EECON |= EEE;           // enable eeprom space
> >  val = XBYTE[addr];      // read byte
> >  EECON &= ~EEE;          // disable eeprom space
> >  return val;
> >
> >Pøedpokládám, že chyba je nìkde v mém SW, který tam nìco zablokuje, ale
> >vzhledem k tomu, že ten mùj SW bìhá jen v sekundové smyèce, vùbec nevím
> jak
> >to mám hledat, protože chyba se opravdu projeví vždycky až za nìkolik
> hodin
> >provozu.
> >
> >Nevíte na co se podívat ?
> >
> >--
> >Zdravi
> >Jirka OK1MWW
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>



-- 
Zdravi
Jirka OK1MWW
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140120/ef94c1f5/attachment.html>


Další informace o konferenci Hw-list