Fórum témák

» Több friss téma
Fórum » PIC EEPROM terület írása táp lekapcsolás után
Lapozás: OK   1 / 2
(#) Kera_Will hozzászólása Márc 8, 2006 1 /
 
Szervusztok!
Lenne 1 kis problémám.
Adott 1 eszközöm amit modernizálnék 1 PIC-el.
Szeretném a PIC üzemállapotát kikapcsolás után is megtartani.
Erre lenne jó a belső EEPROM terület kb.: 4 bájtja.
Ebből bekapcsolás után tudná hol is tartott előtte a rendszer.
Nem szeretném nagyon megbolygatni eredeti tápfesz kapcsoló részt ... ne a PIC portja rángasson 1 áteresztőt, ne kelljen a PIC portot felhasználnom ON/OFF gombnak.
Az se jó ha "sűrűn/ritkán" írogatom át a EEPROM tartalmat .Mivel "kopik" adatlap alapján n*100ezer -millió átírás lehetséges.
Ezenkívűl mikor írjam át/mikor lesz power off ?! ... stb...
Jó, elég nagy számú EEPROM írás lehetséges de ha pl.: percenként módosul az üzemállapota akkor mindig annyival csökken az átírhatóság mennyisége.
Ki/be kapcsolása kevésbé ilyen sűrűségű.
Eddigi ötletem: lehetne pufferrelni a PIC tápját 1-2000mikros kondival. Ami csak a PICen lenne rajta . Igaz ekkor 1 port beáldozható a külső táp figyelésre.
Amint megszünt a betáp még a pufferben van energia és a PIC letudná magát menteni EEPROMjába, amíg kisül a nagy puffer.
Ja igen líthium elemet se szeretnék használni.
Igaz ekkor a PIC porton lévő többet fogyasztó perifériákat lekell rántani valami kapcsolóval.
pl 1 LED sort közös ágban lévő tranzisztoron keresztül táplálva, aminek bázisát a bejövő táp nyitja és ha kikapcs van akkor a tranzisztor lezár,ledek közös ága "levegőbe" fog lógni.

Ok az elkó se 1 életbiztosítás mert idővel kiszárad ... de esetleg a " goldkapszulák " annó ilyesminek hívták a Conradban a 5Vos 1 Farádos kondért.
Ez is kiszáradhat ?!

Vkinek ennél jobb ötlete ???
(#) Slope válasza Kera_Will hozzászólására (») Márc 8, 2006 /
 
Hello!

Nem értem pontosan, hogy mit is szeretnél, de pl. elküldheted "aludni" a PIC-et úgy nagyságrendekkel kevesebbet fogyaszt.
"Amint megszünt a betáp még a pufferben van energia és a PIC letudná magát menteni EEPROMjába, amíg kisül a nagy puffer. Ja igen líthium elemet se szeretnék használni. Igaz ekkor a PIC porton lévő többet fogyasztó perifériákat lekell rántani valami kapcsolóval."
Írhatsz egy rutint a tápfesz megszűnésére, és leállítod a főprogramot.

Egyébként egy jóminőségű elkó sem szárad ki csak úgy... 10évig biztos megy.
Üdv!
(#) Kera_Will válasza Slope hozzászólására (») Márc 8, 2006 /
 
Jó oké alszik .... akkor mivan ?! Kevesebbet fogyaszt és... ?!
Ha a táp elmegy akkor megint nem fog tudni magáról semmit se. Milyen állapotban volt a szundi közben/előtt stb ?

Perifériákat róla lerántva , pedig biztos kisebb lesz
a fogyasztása. Ezek most éppen optok ledjei lennének majd.

Kimenetek állapota :
1.statikus
2.dinamikusan változnak (számlál)
3.EEPROM 1 részéből olvasott adatokat küld kifolyamatosan a portra
Tehát ezek különböző üzemmódjai a rendszernek.
Az épp aktuális utolsó állapotot szertném újra látni.
Lehetne vmi fix alapállapot is de ez nem jó mert akkor az előző állapotott újra elő kell állítani .
Na jó van mikor nem szükséges pl éppen vmi adatot módosítottam volna és nem tudtam befejezni akkor vesszen el mert én lőttem le az áramkört .... na de ez csak amolyan finomítgatás ... meg úgyis kiderül ha ilyen funkció is kell majd ... de szerintem nem szükséges....
(#) Slope válasza Kera_Will hozzászólására (») Márc 8, 2006 /
 
A szunyálást azért mondtam, mert úgy egy nagyobb kondiról hetekig elmegy.

Esetleg figyelhetnéd a tápfeszültséget. Pl. kikapcsol a táp, de a vele párhuzamba kötött kondi még táplálja... ekkor a kondi feszültsége exponenciálisan elkezd csökkenni, majd ha elérte a beállított küszöböt, amin a PIC még működik elindíthatja a mentést az EEPROMba.
A küszöböt ott kell megválasztani, hogy egy kisssebb ingadozás még ne indítson mentést, de még legyen annyi, hogy a PIC menjen, és be tudja fejezni a műveletet, aztán rezetelje magát, hogy ne legyen hiba.
Olyan PIC-t válassz amiben van A/D átalakiító, komparátor.
(#) Slope válasza Slope hozzászólására (») Márc 8, 2006 /
 
Ja és a mentés kezdetekor kinullázod a portokat, így az sem terhel (ill. az optók)
(#) Kera_Will válasza Slope hozzászólására (») Márc 8, 2006 /
 
igen ez is jó de addig telik az ido és még ki nem értékelődik a program által a feltétel akkor fogyasztanak a ledek ... gyorsabban merül a kondi ...
(#) Gagyi válasza Kera_Will hozzászólására (») Márc 8, 2006 / 4
 
A megoldás roppant egyszerű. Én is egy olyan alkalmazást csináltam az autómba Pic segítségével aminek a tépfeszét ki kell kapcsolni, de az adatok meg kell hogy maradjanak.
A megoldás:A 18-as picekbe (lehet hogy a 16-osba is, azt nem tudom tutira ) van olyan egység, ami érzékeli a tápfesz bizonyos szint alá csökkenését.
Az egység neve: LVD vagyis low voltage detect itt beéllítható, hogy mekkora fesznél szóljon a pic. amikor a kijelölt feszültség alá csökken a fesz, akkor a pic ad egy megszakítást, és ezzel jelet adva neked arra, hogy elmentsd az epromba a beállításaid.
Üdv Gagyi
(#) Slope válasza Kera_Will hozzászólására (») Márc 8, 2006 /
 
Az hogy mire kell, milyen célt szolgálna ez a cucc azt csak Te tudod. Viszont, ha amúgy is le akarod kapcsolni az optókat, akkor nem értem mi fogyaszt.
Az LVD-ről meg is feledkeztem... a 16-os szériában is van (többnyire).
Valami ilyesmit gondoltam: LVD gjenerál egy megszakítást -> nullázza a portokat (led nem megy) -> feldolgozza a maradék infót -> ment -> aztán rezet
2200µF-os kondival sztem futja minderre.
Két lehetőség van: próbapanel és tesztelgetés, vagy számolás.
(#) Kera_Will válasza Slope hozzászólására (») Márc 8, 2006 /
 
Ahan LVD .. . jónak tünik ...
megnézem 18as nál hol van a IT prioritás láncában... az LVD ...
(#) Pavel válasza Kera_Will hozzászólására (») Márc 10, 2006 /
 
Tudom nem egészen ide tartozik, de nem akartam ezért új topikot nyitni! Van egy kis problémám: egy 24lc32 -es I2C - Buszos EEProm - ot akarok írni, de ennek 2byte - os címe van (4KB -os EEprom), a progit assembly - ben írom, tudna valaki ebben segíteni, hogy ezt hogy kell megcsinálni, (mintapélda v. valami jó magyarázat, hogy hogy tudom kiküldeni a 2 byte - os címet), előre is köszi a segítségeteket

ui: nemtudom, hogy amikor kiküldöm az első byte -ot (a 16 bites cím felső byte - ja), utána kell - e várni ACK
-ra?

Üdv
(#) Tomee válasza Pavel hozzászólására (») Márc 10, 2006 /
 
Ha én jól gondolom akkor az i2c buszon szinte mindig van ack és csak amikor befejezi az olvasást akkor csak ott van nack.
Szerintem ebben az esetben is kell ack.
Az ack jelzi, hogy minden OK.
Lehetnek speciális eltérő esetek is.

Egyébként az adatlapja mutatja, hogy hol milyen adat forgalomnak kéne lennie.
(#) Pavel válasza Tomee hozzászólására (») Márc 10, 2006 /
 
Igaz!!! Én ki buta , még meg sem néztem az adatlapot.... , ennek máris utánanézek! Köszi!
(#) Pavel válasza Pavel hozzászólására (») Márc 10, 2006 /
 
Nah meg is van a megoldás , az adatlapon minden le van írva ....hihetetlen
(#) potyo válasza Pavel hozzászólására (») Márc 10, 2006 /
 
Szerintem nem hihetetlen. Rendes gyártó részletesen leír mindent.
(#) Pavel válasza potyo hozzászólására (») Márc 11, 2006 /
 
tudom !! A hihetetlen az, hogy én ilyen buta vagyok hogy nem ezzel kezdtem
(#) robotech hozzászólása Jan 13, 2008 /
 
Sorry, ezért nem akartam új topicot nyitni.

Gyakorta használom a PICek eeprom adatmemóriaterülét, melyről az adatlapok azt írják,hogy kb 1milliószór irhatóak újra.

Nna most,

a kérdésem az lenne,hogy ez minden egyeb word írására vonatkozik, tehát minden egyes wordot 1 milliószor tudok újraírni,

vagy pedig ez az egész memóriaterület írására vonatkozik?
Pl: tehát ha csak az alsó 32byteot írom állandóan, akkor a többi 96 byte is már irhatatlanná válik a kb 1 milliós írási ciklus után?

Előre is köszönöm a választ.
(#) kobold válasza robotech hozzászólására (») Jan 13, 2008 /
 
Különálló CMOS-elemek alkotják a memóriacellákat, így a tárolóképesség elvesztése nem az összesre vonatkozik, hanem a használtra. Az adatbusz ugyebár nem kopik, az érintetlen cellák sosem lesznek feltöltve / kisütve, így azok csak természetes öregedésen esnek át.
(#) robotech válasza kobold hozzászólására (») Jan 13, 2008 /
 
Köszi a gyors választ!
(#) kobold válasza robotech hozzászólására (») Jan 13, 2008 /
 
Nincs mit
Csak úgy kérdezem, hogy ha ennyire gyakran kell adatot módosítanod, nem volna megoldható a proci saját RAM-ját, vagy külső RAM-ot használni? Igaz, nehéz elérni az egymillió írást, meg macerásabb egy külső memória, de az elérési ideje is kisebb volna.
(#) robotech válasza kobold hozzászólására (») Jan 13, 2008 /
 
Nem túl gyakori a beírás, csak szerettem volna kiszámolni,hogy átlagos napi használat esetén kb hány év múlva megy tönkre a dolog.

annyi az egész,hogy bedobnak egy zsetont, erre mondjuk 15percig működik a dolog, ezt a történést külső EEPROMba dátum/idővel eltárolja, viszont ennek a naplózásnak a 'pointere' viszont a belső EEPROMBa tárolódik,hogy áramkimaradás után onnan tudja folytatni a naplózást,ahol abbahagyta.

más is van a memóriában, amit néha írkál, PL: üdvözlőszöveg beállítható, stb... ezért lettem volna kiváncsi rá...
(#) metzcsabi hozzászólása Feb 17, 2008 /
 
Sziasztok !

Ide illő kérdés:

PIC18F-nek az LVD áramkörét használva, beállítva a megfelelő küszöbszintet, szabályozható tápról nyomon követhető, tökéletesn működik.
A főprogram ciklusában figyelve az LVDIF bitet, rendre működik. De a fejlesztés folyamán megnövekedett programfutási idő miatt többször késve érkezik a főprogramba, így nincs ideje a vészmentő ciklus futtatásra (2000 mF pufferrel se).
Korrekt megoldás a megszakítás generálása, és ez az, amit nem tudok elérni, pedig közben a SIO-n bejövő megszakítást folyamatosan kezeli. Ha kiveszem a SIO megszakítást, akkor sem generál LVD megszakítást.

Ha Valaki foglalkozott már LVD-vel, várom ötletét.
(#) potyo válasza metzcsabi hozzászólására (») Feb 17, 2008 /
 
Inkább szeretnénk látni a kódodat, mert így nem lehet kitalálni, mit csinálhatsz rosszul. Adatlap ezzel foglalkozó fejezetében közölt leírás alapján állítottál be mindent?
(#) Norberto válasza metzcsabi hozzászólására (») Feb 17, 2008 /
 
És esetleg egy olyan kondi nem lehetne segítség, ami mondjuk 0,5F értékű és 5V-os? Ha a tápfesz csökkenni kezd, akkor átkapcsol erre a nagy kondira, lementi az adatokat, aztán történhet bármi... persze ez csak tüneti kezelés és nem az okok vannak megszüntetve vele...
(#) metzcsabi válasza potyo hozzászólására (») Feb 17, 2008 /
 
Köszi a vasárnapi figyelést!

Íme a programrészlet, igaz én Picbasic Pro-ban csinálom, de ez nem hiszem, hogy beleszól, hiszen a több, mint 2000 soros program többi része jól megy.

Nem tudom, hogy jelenik meg a lapon, csak a txt-részt copyztam.

Az ellenörzést most teszteléskor potméteres tápegységgel kézzel végzem, így a lassú fesültség csökkenést most garantált.


;========LVD KEZELESE
INTCON.7=0 ;GLOBALIS IR TILTAS
LVDCON=%00011101 ;LVD TAP KUSZOB+LVD ENGEDELYEZES
LVDD: IF LVDCON.5=0 THEN LVDD ;TAP STABILRA VARAS
PIR2.2=0 ;LVDIF REGISZTER TORLESE
PIE2.2=1 ;LVD MEGSZAKITAS ENGEDELYEZESE
INTCON.7=1 ;GLOBALIS IR ENGEDELYEZES

;========PROGRAM
LCDOUT $FE,1
FPRG: LCDOUT $FE,$80,"ROADMASTER-G"
GOTO FPRG

LVD_PONT: LCDOUT $FE,$80,"TAP ALACSONY"
IDE: GOTO IDE

;======INTERRUPT KEZELES
DISABLE
INT_0: IF PIR2.2=1 THEN LVD_PONT ;LVDIF TAPFESZ FIGYELO
RESUME
ENABLE
RETURN
;======INTERRUPT KEZELES VEGE
(#) metzcsabi válasza metzcsabi hozzászólására (») Feb 17, 2008 /
 
Amint látom, nem az igazi a tördelés, de talán érthető.

Ez csak a tesztelő program, hiszen ha a teljes programmal tesztelem, hosszan fordul, és lassan töltődik az MPU-ba a Bootloaderen keresztül.
(#) potyo válasza metzcsabi hozzászólására (») Feb 17, 2008 /
 
Próbáld meg, hogy bekapcsolod az INTCON, PEIE bitet is. Nem derült ki számomra egyértelműen az adatlapból, hogy kell-e hozzá, de egy próbát megér.
(#) metzcsabi válasza potyo hozzászólására (») Feb 17, 2008 /
 
Már próbáltam, még a prioritás bitet is, de semmi.
Az adatlap 18.2 szerint jártam el. Az LVDIF bitet generálja, lekérdezve ciklusban, de megszakítást nem indít.
A fél programot pedig nem tűzdelhetem tele az LVDIF lekérdezéssel.
(#) potyo válasza metzcsabi hozzászólására (») Feb 17, 2008 /
 
Kipróbáltam C-ben azt, amit az adatlapban ír, gyönyörűen működik. Valami a programodban nem stimmel, de hogy mi, nemtudom. Úgy nézem, jól állítottad be az LVD-t, viszont nekem a kód többi része valahogy furcsa, bár sosem néztem még pic-re írt basic kódot...
(#) metzcsabi válasza potyo hozzászólására (») Feb 17, 2008 /
 
Köszi, hogy gondod volt a témára.
A főprogram része az nem lényeges.
Az a furcsa, hogy az INT kezelési rutin a SIO megszakítást tökéletesen viszi.
Csak annyival egészítettem ki a megszakítási rutint, hogy a PIR1.5 lekérdezése előtt a PIR2.2-t is lekérdezem, de mivel nem generálja a megszakítást, hiába kérdezem.
(#) bbb válasza metzcsabi hozzászólására (») Feb 18, 2008 /
 
debugolni nem lehet az ilyen progit rögtön élesben? (mintha az icd2-ről azt írták volna ide a fórumba, hogy erre is jó)

én azt tippelem, hogy rossz az adatlap leírása, és előfordulhat, hogy mégis megváltoztat valamit (egy flaget) amikor elvileg nem kellene, vagy éppen fordítva... (pl. most tanulok assemblyt, ott bár a dosos print utasításnak nincs kimenete a leírás szerint, mégis az egyik regiszter tartalmát átírja)
Következő: »»   1 / 2
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem