Stránka 1 z 2
Zálohování registrů při vypnutí napájení
Napsal: 22 úno 2015, 16:30
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
Napsal: 22 úno 2015, 16:49
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
Napsal: 22 úno 2015, 17:05
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.
Napsal: 22 úno 2015, 17:50
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
Napsal: 22 úno 2015, 18:11
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
Napsal: 23 úno 2015, 23:06
od ZdenekHQ
FRAM může být taky cesta (FM24C64). V nouzi jsem ji použil i jako RAM.

Napsal: 24 úno 2015, 00:27
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.
Napsal: 24 úno 2015, 18:14
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
Napsal: 24 úno 2015, 19:40
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.
Napsal: 24 úno 2015, 20:33
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.
Napsal: 24 úno 2015, 20:40
od lesana87
Na 4 byty do interní EEPROM potřebuješ tak 15ms.
Napsal: 24 úno 2015, 21:25
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ší
Napsal: 24 úno 2015, 21:45
od lesana87
Radši byla.

Napsal: 24 úno 2015, 22:29
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.
Napsal: 24 úno 2015, 23:09
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.