Zálohování registrů při vypnutí napájení

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Jirka525
Příspěvky: 325
Registrován: 22 kvě 2013, 00:00
Bydliště: Psáry JN79GW

Zálohování registrů při vypnutí napájení

#1 Příspěvek od Jirka525 »

Ahoj,
potřeboval bych při vypnutí napájení ATmega8U zálohovat cca 8 registrů do EEPROM a po obnovení napájení zase tyto registry obnovit. To, co nevím je od jaké události spustit zálohovací funkci. Možná si to vyžádá i nějakou HW úpravu na desce. Napájení CPU je 3.3V. Neřešil už někdo tento problém?
Díky
Jirka
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#2 Příspěvek od hakamusai »

Nevím jak ATmel,ale PIC 18F... to umí událostí přerušení.U mcu,který to neumí se to řeší podržením napájení kondenzátorem,před kterým je dioda a před diodou je sledováno přítomnost napětí.Velikost kondenzátoru se volí podle potřeby.Na ATmel to lze použít taky.
schéma pro inspiraci
Uživatelský avatar
Jirka525
Příspěvky: 325
Registrován: 22 kvě 2013, 00:00
Bydliště: Psáry JN79GW

#3 Příspěvek od Jirka525 »

Díky. Vzít si vzorek napájení před stabilizátorem 3.3 V, to je přesně to jednoduché a spolehlivé řešení, které mě nenapadlo. Nicméně, kdyby bylo možno vyřešit problém čiste SW, tak bych byl radši. Deska už je hotová a na tohle jsem zapomněl.
Jirka
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#4 Příspěvek od Celeron »

Spíš bych si spočítal jestli filtrace udrží procík v chodu než se zapíše těch 8 registrů. Já jsem na 89C52 potřeboval uložit po intervenci z dohlížecího MAXe 4 registry do Timekeeperu (zálohovaná paralelní RAM) a byl to celkem problém, na 5V jsem musel naložit elyt 4G aby to makalo spolehlivě.
Jirka
Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 00:00
Bydliště: Ašsko
Kontaktovat uživatele:

#5 Příspěvek od jiriS »

"Čistě" softwarově nepoznáš, že je vypnuté napájení, procesor to sice pozná, ale generuje vnitřní signál reset. Jedině testovat přítomnost napájení nebo přerušení, viz výš.
Já ukládám důležité registry při změně, ale to nesmí být časté změny. Například zvolený typ činnosti uživatelem apod., kvůli omezenému počtu zápisů a spotřebovanému času.
Jirka
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#6 Příspěvek od ZdenekHQ »

FRAM může být taky cesta (FM24C64). V nouzi jsem ji použil i jako RAM. :)
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
termit256
Příspěvky: 10029
Registrován: 06 pro 2007, 00:00

#7 Příspěvek od termit256 »

FRAM taky pouzivam, pro par registru staci treby fram ktera byva soucasti RTC apod.
Pokud je zarizeni napajeno sitove a mam potrebu zalohovat pri vypadku, pouziju klasicke trafo a sleduju vypadky pulvln hned za trafem, je to rychlejsi nez cekat na pokles napeti.
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#8 Příspěvek od Celeron »

ZdenekHQ píše:FRAM může být taky cesta (FM24C64). V nouzi jsem ji použil i jako RAM. :)

Nacpat v poklesu při výpadku něco do sériový paměti? Já s bídou stíhal 4 byty u paralelní a to mi Max hodil přerušení už při cca 8V, na vstupu napájecí 7805.
Jirka
Uživatelský avatar
Hill
Administrátor
Příspěvky: 21237
Registrován: 10 zář 2004, 02:00
Bydliště: Jičín, Český ráj

#9 Příspěvek od Hill »

Na to, aby ti 7805 udržela 5 V na výstupu, potřebuje na vstupu nejméně 7,6 V, když takovou z většího počtu kusů vybereš (naprostá většina jich ale potřebuje 8 V a víc).
V každém případě je nutné vyhodnotit přítomnost střídaviny na trafu a identifikovat její absenci co nejrychleji, aby procesor co nejdříve začal ukládat zálohu a zbyl mu čas na to, uložit všechny registry, než mu dojde šťáva.

Pro zálohování kontrolérů na bázi Z80CPU se používaly NiCd akumulátory, některé dokonce měly časovač s 555, který "podržel" otevřený tranzistor nebo sepnuté relé a dal procesoru asi 10 vteřin na uložení, a pak baterii odpojil.
Těm, kdo si nevybírají odpovědi na soukromé zprávy, už příště neodpovím. Tak.
Uživatelský avatar
Jirka525
Příspěvky: 325
Registrován: 22 kvě 2013, 00:00
Bydliště: Psáry JN79GW

#10 Příspěvek od Jirka525 »

Díky za rady. Z toho, co tu padlo se mě zdá nejjednodušší, vzít si vzorek napájení před stabilizátorem a monitorovat ho na volném analogovém vstupu. Za stabilizátor dát pořádny elyt aby bylo dost času pro zápis. Mezi tím jsem program drobet zoptimalizoval, tak mě bude stačit zálohovat pouze 4 registry. Má někdo zkušenosti kolik budu na to potřebovat času?
Díky.
Jirka
Uživatelský avatar
lesana87
Příspěvky: 4403
Registrován: 20 zář 2014, 00:00

#11 Příspěvek od lesana87 »

Na 4 byty do interní EEPROM potřebuješ tak 15ms.
Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 00:00
Bydliště: Ašsko
Kontaktovat uživatele:

#12 Příspěvek od jiriS »

V assembleru samotný zápis trvá cca 18 cyklů (vnitřní oscilátor 1MHz nebo 9,6MHz Tiny13); používám na rozdíl od datasheetu navíc 4x nop; ale k tomu musíš připočíst cykly pro obsluhu přerušení, nastavení adres a návrat, pokud budeš zapisovat stejnou sekvencí příkazů 4x. Asi by bylo rychlejší zpracování zapsat sekvenci 4x za sebou a adresu EEPROM zvyšovat inkrementací.
Určitá neznámá může být v čekání na dokončení předchozího zápisu v registru EECR, protože zápis trvá delší dobu, V datasheetech jsou uváděny časy zápisů v jednotkách ms (podle typu MCU, způsobu zápisu a hodinovém kmitočtu).
Také bude důležitá rychlost detekce chybějícího napájení a její spolehlivost.
Jirka
Edit: lesana87 byl rychlejší a stručnější
Uživatelský avatar
lesana87
Příspěvky: 4403
Registrován: 20 zář 2014, 00:00

#13 Příspěvek od lesana87 »

Radši byla. :wink:
Uživatelský avatar
workhard
Příspěvky: 5495
Registrován: 07 črc 2006, 00:00
Bydliště: Plzeň
Kontaktovat uživatele:

#14 Příspěvek od workhard »

Na děvčata tu nejsme moc zvyklí ;) Čistě technicky, elyt by byl výhodnější před stabilizátorem, za ním na něm začne napětí velice rychle klesat a není tam žádná rezerva, monitorovat tu střídavinu.
Věci,které fungují,se ZÁSADNĚ neopravují...
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#15 Příspěvek od ZdenekHQ »

Celeron píše:
ZdenekHQ píše:FRAM může být taky cesta (FM24C64). V nouzi jsem ji použil i jako RAM. :)

Nacpat v poklesu při výpadku něco do sériový paměti? Já s bídou stíhal 4 byty u paralelní a to mi Max hodil přerušení už při cca 8V, na vstupu napájecí 7805.
Jirka


Ale FRAM nepotřebuje žádný čas na zápis, nasypeš to tam tak rychle, jak Ti dovolí I2C, t.j. 16byte řádově ve stovkách us.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“