Vítejte na Elektro Bastlírně
Nuke - Elektro Bastlirna
  Vytvořit účet Domů · Fórum old · Download · Upload · Účet · Zprávy · Hledat na fóru · Hledat v článcích

Nuke - Elektro Bastlirna: Diskuzní fórum

Diskuzní fórum Elektro Bastlírny :: Zobrazit téma - Atmel, uložení do eeprom při vypnutí
 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Atmel, uložení do eeprom při vypnutí
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Bernard
Super uživatel
Super uživatel



Založen: May 27, 2005

PříspěvekZaslal: čt červenec 01 2010, 11:43    Předmět: Citovat

Mám dojem, že limit 100 000 zápisů má každý bajt samostatně, pokud je samostatně přepsatelný. Pokud by se zapisovalo třeba 20 B a EEPROM měla 2 KB, trvanlivost vzroste 100x při postupném využívání celé kapacity. Jenom by v rámci těch 20 B muselo být počítadlo zápisů (snad do 65535) a pro celou EEPROM by někde musel být ukazovatel na aktuální banku.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea
Team boss
Team boss



Založen: Sep 07, 2007

PříspěvekZaslal: čt červenec 01 2010, 12:10    Předmět: Citovat

Bernard napsal(a):
a pro celou EEPROM by někde musel být ukazovatel na aktuální banku.

Uložený v nějaké EEPROM, která by měla ukazatel uložený v nějaké EEPROM... Very Happy

Lepší je nějaký chytřejší algoritmus nepotřebující zvláštní ukazatel. Například jeden byte v bloku říká, jestli je obsazený. Před zápisem bloku se následující blok nastaví jako prázdný. Po zapnutí se najde první prázdný blok, blok před ním je poslední zapsaný a pokračuje se dál. V případě, že paměť umožňuje oddělené mazání a zápis, tak se životnost zvětší počet_bloků-krát, pokud je zápis kombinovaný s mazáním, tak je to zvětšení poloviční.

Zápis aktivovaný výpadkem napájení musí být spouštěný poklesem napětí před stabilizátorem. Spouštět zápis když už klesá napětí samotnému procesoru je přijít s křížkem po funuse. Procesor (AVR) by měl mít zapnutý BOD, pokud používá vnitřní EEPROM. A samozřejmě by se ten zápis měl spustit vnějším přerušením s největší prioritou.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Bernard
Super uživatel
Super uživatel



Založen: May 27, 2005

PříspěvekZaslal: čt červenec 01 2010, 12:28    Předmět: Citovat

Andrea napsal(a):

Uložený v nějaké EEPROM, která by měla ukazatel uložený v nějaké EEPROM... Very Happy
........

Možná to vypadá hloupě, ale ten ukazovatel se po dobu životnosti EEPROM přepíše třeba jen 100x, tak by to snad použitelné bylo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea
Team boss
Team boss



Založen: Sep 07, 2007

PříspěvekZaslal: čt červenec 01 2010, 12:31    Předmět: Citovat

Jo ták, no to je geniální, to mě nenapadlo Embarassed
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
termit256
Uživatel
Uživatel



Založen: Dec 06, 2007

PříspěvekZaslal: so červenec 03 2010, 9:46    Předmět: Citovat

pokud je pristroj napajen ze site, sleduj sitove napeti.
pokud neprijde pulvlna, vygeneruj preruseni a zapis.
pouzivam tenhle system leta a pracuje spolehlive.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy
Zúčastněný
Zúčastněný



Založen: Jul 04, 2010

PříspěvekZaslal: po červenec 05 2010, 10:20    Předmět: Re: Atmel, uložení do eeprom při vypnutí Citovat

cely problem se resi drive nez dojde k nahodnemu vypnuti.....ukladam hned po namereni do EERAM ..EXTERNI napriklad 64kb hodnot dokola ve smycce ....po vypadku tam vzdy zustanou posledni data do poctu 64kb .....bude ti to stacit Question jarda
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
peatre
Zúčastněný
Zúčastněný



Založen: Nov 26, 2007
Bydliště: Malacky

PříspěvekZaslal: st červenec 07 2010, 14:32    Předmět: A co takto??? Citovat

Do obvodu pridat superkapacitor alebo malu Li-on bateriu. po pandutí napájania ( treba merat este pred vyhladzovacim kondenzatorom ) bezi CPU na bateriu. Ulozia sa data do EEPROM, CPU sa prevedie do SLEEPU. CPU aj EEPROM ostane stale pod napatim. takze po obnoveni napajania program moze pokracovat tam kde skoncil a pokial tych dat nieje vela ani netreba pouzivat EEPROM. Zaspaty procesir pri dobre navrhnutom zapojeni zere len jednotky uA co superkapacitor alebo Lion clanok utiahne hoooodne dlho...
_________________
<div>Bezpečnost pri práci je dúležitejší než práca samotná</div><br />
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
bigjedla
Zúčastněný
Zúčastněný



Založen: Feb 01, 2009

PříspěvekZaslal: út červenec 13 2010, 21:02    Předmět: Citovat

To ukládání jsem zkoušel udělat ve smyčce vždy na jinou adresu (při každém spuštění inkrementace adresy a pak už ukládání vždy na tuto adresu každých 10s) ale nefunguje to spolehlivě, někdy dojde ke ztrátě dat. Je možné že se procesor vypne například zrovna v průběhu ukládání dat (teoreticky)??

Nejlepší by tam bylo dát asi malou baterku která by se po uložení odpojila třeba tranzistorem. Jenže ať přemýšlím jak chci nenapadá mě jak zkombinovat 5V ze stabilizátoru a 3,3V z baterie Embarassed Oddělovat to diodou je blbost... nenapadá někoho jak jinak vyřešit přepnutí na baterii? Přerušovací vstup už žádný není volný Sad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
bigjedla
Zúčastněný
Zúčastněný



Založen: Feb 01, 2009

PříspěvekZaslal: po červenec 19 2010, 18:48    Předmět: Citovat

kdybych šel cestou zálohovací baterie do DPS... jaká je její předpokládaná životnost? respektive je třeba řešit její dobíjení nebo něco takového?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
elnovy
Zúčastněný
Zúčastněný



Založen: Jul 04, 2010

PříspěvekZaslal: po červenec 19 2010, 19:35    Předmět: Citovat

zalohovani je jedna moznost ale dobijeci obvod je nutny ....dle meho nazoru je vhodne vsechny operace vcetne zalohovani resit tedy i ukladat do EEpromky ta po odpojeni napajeni vse uchovava a po zapnuti pri vhodnem programu vse pokracuje dal.....plus pridat vetsi kapacitor umoznujici dobehnuti operaci po vypadku napajeni by bylo vyhodou ....volny vstup potom snima prave onen okamzity vypadek napajeni
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
bigjedla
Zúčastněný
Zúčastněný



Založen: Feb 01, 2009

PříspěvekZaslal: út červenec 20 2010, 14:30    Předmět: Citovat

myslím to takto... procesor měří napětí napájení, při výpadku se uloží hodnoty do eeprom a procesor se vypne (třeba přes tranzistor odpojí zálohovací baterku), přičemž běh od výpadku napětí do vypnutí zajišťuje tak baterka... otázka je když dám například 80mAh NiMH baterku jestli je nutné řešit její dobíjení. Z baterie by běžel jen procesor po čas uložení všech hodnot. Takže za normálních okolností by ta baterka byla nesmrtelná, ale za jak dlouho se vybije sama od sebe? Nebo jakou asi mají ty baterie životnost?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea
Team boss
Team boss



Založen: Sep 07, 2007

PříspěvekZaslal: út červenec 20 2010, 14:52    Předmět: Citovat

Je blbost, dávat tam dobíjecí baterku a nedobíjet ji, to je pak lepší tam dát primární článek, ten vydrží klidně 10 let, NiMH se za rok vybije samovybíjením. Druhá věc je, když bude mít zálohovací baterka třeba 3,6V, aby byl procesor schopný na takové napětí běžet a bezpečně zapisovat do EEPROM.
Ale mělo by to jít i bez zálohování. Pokud při cyklickém záznamu každých 10s má každý zapsaný blok dat svůj příznak platnosti, tak za předpokladu, že se tento příznak nastaví (zapíše) až jako poslední, nemůže dojít k poškození záznamu. Buď se příznak stihne nastavit a pak jsou i data zapsaná správně, nebo se nestihne nastavit a pak se tento blok ignoruje a vezme se jako poslední platný předchozí blok, zapsaný před 10s. V nejhorším se tedy ztratí data z posledních 10s, což zase nemusí být tak tragické.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Burajko
Team member
Team member



Založen: Aug 21, 2009

PříspěvekZaslal: út červenec 20 2010, 14:57    Předmět: Citovat

Staci dat dostatocne velky kondenzator oddeleny diodou od vetvy pred stabilizator (LDO)+ nejaky supervizor ,co generuje power fail + reset.Power fail dat na IRQ a mas vystarane.Treba zratat cas ,kolko bude trvat zapis do eeprom ,alebo zmerat cas od odpojenia napatia powerfail <->reset.
_________________
Už druhý krát strihám a furt je to krátke


Naposledy upravil Burajko dne út červenec 20 2010, 17:48, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
bigjedla
Zúčastněný
Zúčastněný



Založen: Feb 01, 2009

PříspěvekZaslal: út červenec 20 2010, 15:46    Předmět: Citovat

andreo používám standardní knihovny eeprom.h myslíš že je to v nich vyřešeno? já se v nich moc nevyznám...

nevím proč se mi nedařilo udělat to s tou proměnnou adresou Sad když by se při každém spuštění změnila adresa ukládání a perioda ukládání by byla těch 10s tak by to asi stačilo... životnost by byla dostatečná a baterie by nebyla třeba. Ale tak na 50% se mi stávalo, že po spuštění se mi načetly z paměti samé nulové hodnoty nebo maximální... kdyby to bylo pokaždé tak asi mám zmatek v adresách pro uložení, ale někdy to načetlo správně a jindy ne Sad

napsáno jsem to měl takto:

kód:

int main()
{
 if (eeprom_read_byte((uint8_t*)E2END)!='A')
   {
    for(int i=0;i<=1023;i++)
       {
       eeprom_write_byte((uint8_t*)i,0);
      }
         eeprom_write_word((uint16_t*)12,611); // konstanta pro výpočty
         eeprom_write_byte((uint8_t*)E2END,'A'); // kontrolní byte na poslední místě v paměti
         }
 adresa_ulozeni=eeprom_read_word((uint16_t*)10);
 prutok=eeprom_read_word((uint16_t*)12);
 stometru = eeprom_read_word((uint16_t*)(adresa_ulozeni+14));

 eeprom_write_word((uint16_t*)(adresa_ulozeni+14),0); // vynulování použité buňky
 
 adresa_ulozeni=adresa_ulozeni+10;
 if(adresa_ulozeni >=990)
     adresa_ulozeni=0;
 eeprom_write_word((uint16_t*)10,adresa_ulozeni);   
}

a pak v každých 10s:

kód:

eeprom_write_word((uint16_t*)(adresa_ulozeni+14),stometru);

teoreticky to přece musí fungovat ne? prakticky se mi stávalo že po spuštění se načetla hodnota nula nebo 65535..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímájí záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žáden zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva, kontaktujte administrátora a on sjedná nápravu.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.39 sekund