[elektro] PIC16F883 EEPROM adatvesztés
Móczik Gábor
pm_levlista at progzmaster.hu
Sat Nov 12 16:23:11 CET 2011
2011.11.12. 15:39 keltezéssel, hg12345 írta:
> Hát nem tudom, én még sohasem vártam meg mig az adat beíródik, kiadom a parancsot és a program fut tovább, inkább írás elött várok mig szabaddá nem válik az eszköz. Ha vársz ellenörzésre akkor tényleg 3-5ms időt vesztesz minden beírásnál, vagy egyes EEPROM-ok irás közben is olvasható?.
Attól függ, de nálam elég ritka, hogy csak egy byte-ot kell írni, tehát
úgyis meg kell várni.
Persze lehet interruptban nyomatni ahol erre a kihegyezett tempóra van
szükség, de ott már endurance probléma is felmerül, lényegesen
bonyolultabb témakör, valószínüleg máshogy célszerűbb megoldani.
> Egy párhuzamos LCD parancs kiadása után is vársz mig szabaddá válik az eszköz? Várakozol a busy jelre minek, elöbb utóbb biztos végrehajta :-()
Igen, várakozok, mert általában nem 1 karaktert kell kiírni, és addig
úgysem folytathatnám. Persze a pre-check valóban célszerűbb, érdekes
hogy pl. UART-nál eleve úgy csinálom, itt meg eszembe sem jutott. :-)
Én 1 taszkos rendszerben úgy csinálom, hogy szinte csak az user
interface vagy az elég lassú eseményeket (amibe belefér az LCD vagy
miegymás késleletése) vezérli a főprogram, ami gyors, határidős és
determinisztikus, az megy minden ISR-ben, állapotgépekkel.
Általában olyanok a programjaim, hogy a main-ben egy delay() kiadása
szabadon megtehető, a fontos eseményeket egyáltalán nem érinti.
> Az ellenörzés.... mit csinálsz amikor leállítás közben kiderül, hogy nem tudod kiírni a backup tartalmat, időd se energiád sincs az ismétlésre!.... A validitás visszaolvasáskor megadja hogy mit kell csinálni, ha nagyon fontos az adat akkor hiba javító kód..... Ezt nem lehet kikerülni varázslással....
Ha ilyet kell csinálnia az eszköznek, akkor biztosítani kell, hogy
_legyen_ energiája. Be kell tervezni egy akkora puffert, ami bőségesen
elég ahhoz hogy elmentse a leállításkori státuszt. Ha elveszett a táp,
azt a puffer előtt kell érzékelni.
Emellett megoldható, megoldandó, hogy ha közben visszajön a táp, akkor
is egy szakszerű reset ciklus menjen végbe. Nyilván nem csak az MCU-t
érinti, ezt szoftver úton is lehetne resetelni, de a hardver elemeket
nem biztos, tehát azt kell megoldani, hogy ha már egyszer a leállítási
státuszba került a rendszer, akkor vegye is el a saját betápját, úgy
hogy rendesen le is álljon.
Helyzettől függ, hogy kell-e ez vagy sem, kézzel kelljen újraindítani,
vagy egy időzítő (független hardver rész) újraindítja, stb...
Ahol kell, meg lehet ezt szakszerűen oldani, jó is néznénk ki, ha a
véletlentől függene, hogy ki bírjuk-e írni a mentést vagy sem...
> A nagy varázslások nem adnak megoldást, csak megnyugtatják a tervezőt addig mig benem üt a crack!
Ebben egyetértünk.
> Amikor a RESET-tel kéne már valamit csinálni (leállítani a uC) az már nagyon nagy baj.... még elötte elkell kapni a hibát.
Igen vagy nem, attól függ. :-)
Pl. egyszerűen lekezelhető vele, hogy a processzor RESET-ben áll, amég a
táp nem jelez, hogy minden tápfesz jó, ekkor elengedi a RESET-et. Persze
lehet szoftveresen, de van mikor ez egyszerűbb.
Nem utolsósorban, a fejlesztést nehezítheti, ha nem lehet hardveresen
RESET-elni a procit. Fejlesztés idejére persze meg lehet hagyni a
funkciót, de az a véleményem, hogy ha ezen múlik egy projekt stabil
működőképessége, ott már komoly baj van...
More information about the Elektro
mailing list