[elektro] PIC , EEPROM-ba irás hogyan?

Moczik Gabor pm_levlista at progzmaster.hu
Wed Jul 7 22:08:15 CEST 2010


elight wrote:
> DE Ha áramszünet jöm , akkor ki szeretném írni EEROM-ba ujra..
> 
> Az áramszünetet INT rutinnal a bejövő tápfesz
> 
> közvezlen mérésével oldanám meg, kb  1 mSec-onként T0 INT-el.
> 
> 
> 
> A gondom, hogy az EEPROM iró függvényt,  mivel máskor is
> 
> használt, a fordító nem engedi két helyről meghívni..
> 
> Gondolom valamiféle  FLAG-el megoldható,  hogy uton utfélen a
> 
> várakozós részekből kilépjen és azonnal EEPROM-ot írjon
> 
> a főhurokban..

Az nem jó, hogy csak az ISR írja az EEPROM-ot, és a főhurokban egy FLAG 
állításával kéred hogy te most is ki szeretnéd írni?
Az ISR 1 ms múlva lefut majd megnézni a tápfeszt, egyúttal akkor megnézi 
ezt a flag-et is, ha kell kiírja az adatot és törli a flag-et.

Ha a main-ben azt is fontos tudnod hogy kész a mentés, akkor megvárhatod 
hogy törlődjön a flag.

> Az is jo lenne, ha leseséskor csak egyszer írna ki
> 
> és várná,  hogy ujra megnő a fesz , vagy resetre teljesen
> 
> lefagy a proc..

Ebben én nem látok problémát, flag-eket kell használni, meg a 
legtisztább az lenne, hogy ha már fesz.eséskor úgyis felkészülsz a 
halálra, leállítgatsz perifériákat, stb., akkor itt kivinnéd a programot 
egy végtelen ciklusba.

Innen a watchdog újraindíthatja ha mégis visszajött a fesz, vagy ha nem 
használod, akkor betehetsz még egy PowerGood flag-et, amit kiolvasol 
ebben a ciklusban, és ha visszajött, akkor simán kiadsz egy RESET utasítást.

Egyúttal bootnál is figyelheted a PG flaget, és addig vársz az init-tel, 
amég meg nem jelenik (mert mondjuk bekapcs után a 24V-os tápfesz amint 
eléri az 5V-ot a proci már menne, de ha itt pont megint leesne a fesz, 
akkor beszédülsz a főciklusba úgy, hogy pillanatokon belül újra elmegy a 
táp...)

Ezek mellett pedig írhatod szimultán az EEPROM-ot a main-ből is. Én ezt 
nagyvonalúan úgy szoktam megoldani hogy, hogy megírtam az EEPROM írást 
két tökegyforma példányban, ee_write(), isr_ee_write(), és akkor nem 
kell reentrant függvény (meg fordító ami támogatja).

Mellesleg nem csak ezért írtam meg, nekem régen a library függvény pont 
nem ment valami PIC16F procin, akkor megírtam az adatlap szerint, azóta 
újabb procikon itt-ott bele kellett írni, de alapvetően kb. 10-20 asm 
utasítás, úgyhogy nem szakad bele nagyon az ember... :-)


-- 
((( Móczik Gábor  )))--((( e|mail: pm-01 |@| progzmaster |.| hu )))
((( S.k.y.p.e.: moczik )))



More information about the Elektro mailing list