Záznam do EEPROM při vypnutí napájení

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#16 Příspěvek od Celeron »

jova1 píše:A oddělovací diodu mezi tím měřením na vstupu a stabilizátorem máš?
Nemám. Proč myslíš, že by tam měla být? Před stabilizátorem žádnej elyt proti zemi nemám, jen keramiku 100N a je to napájený z autobaterky. Odpojuje se vytažením z autozásuvky. Taková modelářská pájka na letiště.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
jova1
Příspěvky: 1207
Registrován: 20 pro 2007, 01:00
Bydliště: Chýnov - to je kousek od Tábora
Kontaktovat uživatele:

#17 Příspěvek od jova1 »

Vycházel jsem z toho odkazu: Ale zatím to je na nepájivým poli s napájecí destičkou podobnou týhle.
Tam na vstupu nějaký kondenzátor je. Něco obdobného jsem řešil na hodinách a musel jsem tam dát právě diodu, aby mi oddělila napájecí napětí od stabilizátorů, kde ty vstupní kapacity taky byly.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#18 Příspěvek od Mahoney »

Celeron píše:Nemám. Proč myslíš, že by tam měla být?
Aby ti při výpadku napájení a napájení MCU z kondíku netekl proud zpátky do stablu (nebo co tam všechno máš), a případně i do toho měřícího pinu (nevím jak to máš zapojené).

To hlídání napájení bys měl nejlepší (a nejrychlejší) přímo na těch dvanácti voltech (samozřejmě s přizpůsobením), přes AD být nemusí. Já bych dal nejspíš optočlen.

Ta appnote co dal bdn tě nemine, a poznámka Crifoda taky není od věci.

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#19 Příspěvek od Standa33 »

Také by se dal použít miniaturní otočný bcd přepínač 4polohy(např. rozsah 270°C-310°C-350°C-400°C).
Opticky bude vidět nastavení(odpadne zápis do EEprom) a tak často to asi měnit nikdo nebude.
Naposledy upravil(a) Standa33 dne 12 bře 2023, 12:15, celkem upraveno 1 x.

Uživatelský avatar
workhard
Příspěvky: 4873
Registrován: 07 črc 2006, 02:00
Bydliště: Plzeň
Kontaktovat uživatele:

#20 Příspěvek od workhard »

Taky mně to přijde jako drbání se levou nohou za pravým uchem, ale proti gustu...
Věci,které fungují,se ZÁSADNĚ neopravují...

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#21 Příspěvek od Celeron »

Standa33 píše:Také by se dal použít miniaturní otočný bcd přepínač 4polohy(např. rozsah 270°C-310°C-350°C-400°C).
Může být. Třeba tohle. Mohl bych použít osmipolohovej. U ATtiny je k dispozici 6 datovejch noh. Jednu potřebuju na PWM, tři na 8 kroků teploty, jeden na led kontrolku že topí. Akorát nevím, kolik přecvaknutí tyhle BCD-čka vydrží. Aby to nebylo po 10 protočeních bez kontaktu.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#22 Příspěvek od Celeron »

jova1 píše: Tam na vstupu nějaký kondenzátor je.
Na ty mý na vstupu 12V elyt není. 10M je až za stabilem +5V a druhej je za stabilem 3V3.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#23 Příspěvek od Celeron »

Mahoney píše: Aby ti při výpadku napájení a napájení MCU z kondíku netekl proud zpátky do stablu (nebo co tam všechno máš), a případně i do toho měřícího pinu (nevím jak to máš zapojené).
Jo ale jova1 psal o diodě před stabilizátorem. Ta nezabrání aby z elytu na +5V aby proud při vypnutí tekl do stabilizátoru. A že teče pár desítel mikroampér do děliče na ohledání 12V je úplně jedno, přerušení reaguje na sestupnou hranu.
Mahoney píše: To hlídání napájení bys měl nejlepší (a nejrychlejší) přímo na těch dvanácti voltech (samozřejmě s přizpůsobením), přes AD být nemusí. Já bych dal nejspíš optočlen.
Ale vždyť to tak mám. Optočlen proč, vše je na jednom potenciálu. A psal jsem, že není místo.
Mahoney píše: Ta appnote co dal bdn tě nemine, a poznámka Crifoda taky není od věci.
Netuším, co tím myslíš. Jestli ty kruhový buffery a životnosti EEprom, tak při značně nadsazeným počtu 5 vypnutí za den x 365 dní, tak by odešla za cca 50 let.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#24 Příspěvek od Crifodo »

Ta poznámka se týkala víceméně jen toho, že jsem zápis hodnot řešil s prodlevou po změně, tedy čistě softwarově, bez sledování napájení. Dejme tomu je počet takových zápisů (nepodstatně) vyšší než před vypnutím. V obou případech vzhledem k životnosti eeprom téměř nemá cenu se zabývat cyklickým střídáním buněk. Šlo mi spíš o to, kdyby výrobce během let při různém katování "dosáhl" reálné životnosti třeba jednotky tisíc než deklarované stovky tisíc, to už by někdy vadit mohlo a pak se rozložení do 100 nebo 500 paměťových míst vyplatí. U zápisu během vypínání mi taky nebylo úplně jasné, jestli by to bylo blbuvzdorné při nějakém nedokončeném procesu, během vaklu v napájení, kdy přijde nový reset dřív než je ukončen zápis.
Názory na životnost eeprom jsou různé, třeba https://arduino.narkive.cz/bxT13py1/jak ... ost-eeprom
Ani nevím, jak je technologicky rozdílná výroba flash na čipu od eeprom, když výrobce udává pro flash řádově menší počet zápisů.

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#25 Příspěvek od Standa33 »

https://www.tme.eu/cz/details/mssm-04/p ... cs-co-ltd/
Tenhle má podle datašítu minimálně 25000 cyklů.

https://www.tme.eu/cz/details/tsr-08s-t ... cs-co-ltd/
Ten má 10000 cyklů

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#26 Příspěvek od Mahoney »

Celeron píše:Jo ale jova1 psal o diodě před stabilizátorem. Ta nezabrání aby z elytu na +5V aby proud při vypnutí tekl do stabilizátoru. A že teče pár desítel mikroampér do děliče na ohledání 12V je úplně jedno, přerušení reaguje na sestupnou hranu.
Však jo, a ještě před touto diodou (která ti odděluje filtrační kondenzátor, co je za ní, od měření, které je před ní) má být zapojeno měření s nějakým vhodným oddělením (protože pin MCU prostě nemůžeš jen tak připíchnout na 12V). Jde přeci o čas, ne o pár mili- či mikroampér, tobě jde o to, abys co nejrychleji vyhodnotil že jsi bez napájení a stihl při napájení MCU jenom z filtračního kondíku zapsat hodnotu do EEPROM. Když budeš měřit napětí někde "na kondíku" (prostě postupně klesající), uplyne moře času, než zjistíš že ti na něm klesá napětí.

Tím že tam elyt nemáš se ani nechlub, to znamená že nečteš datasheety.

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#27 Příspěvek od Celeron »

Nic, ten tlačítkovej blázinec, u kterýho není zřejmý co je vlastně nastavenýho, s pochybným ukládáním na EEprom jsem opustil a napsal jsem pár řádků, co se vejde do ATtiny25 za 3 pětky. Maká to podle přepínače BCD, hned je vidět co je nastavený a žádný blbnutí s EEPROM. Kromě ATtiny, BCD-čka, spínacího Feta, 100mA stabilu a dvou elytů tam není nic potřeba.

Kód: Vybrat vše

// řízení pájky přes PWM pomocí BCD přepínače na ATtiny25
// vstup PB, bit0-3 na pinech 0,1,2,3 proti GND
// výstup PWM na pinu 4

byte pwm = 0;
const int pwmPin = 4;
void setup()
{
// nastavení PullUp na PB0-PB3
for (int i = 0; i < 4; i++)
    {
    pinMode(i, INPUT_PULLUP); 
    }
//PORTB (digital 3-0) výstup
  DDRB = 0b11110000;
}
void loop()
{
// Přečti BCD kód ze vstupních pinů a maskuj jen PB0-PB3
    byte bcdCode = PINB & 0b00001111;
// inverze přepínače
    bcdCode = bcdCode ^ 0b00001111;

 if (bcdCode > 0){ 
           // na BCD přepínači je > 0, sestav PWM 
           // (BCD min, BCD max, PWM min, PWM max)
           pwm = map(bcdCode, 0,9, 160, 255);
           }
 else  { pwm = 0;  }   // BCD je na nule vypnout pájku
 analogWrite(pwmPin, pwm);
    delay (100);  
} 
Ten tlačítkáč byl proti tomu 10 x delší monstrum. Maká, není co dál řešit.
Naposledy upravil(a) Celeron dne 14 bře 2023, 00:22, celkem upraveno 1 x.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
Valdano
Příspěvky: 695
Registrován: 01 led 2023, 01:00
Bydliště: Česká Lípa

#28 Příspěvek od Valdano »

Celeron píše:Potřebuju těsně před vypnutím napájení ATtiny85 uložit jednu hodnotu v rozsahu 0-64 do EEPROM aby byla k dispozici pro následný zapnutí. EEPROM nesnese moc cyklů, takže přepisovat ji při změně hodnoty v cyklu Loop by dlouho nezvládala.
Nebo namísto EEPROM použít paměť NVRAM. Paměti NVRAM udrží data i bez napájení, mají nízkou spotřebu, jsou obvykle vybaveny rozhraním I2C nebo SPI a umožňují až 10 na 14-tou čtení a zápisů. Takže i když budete hodnotu v paměti neustále přepisovat v cyklu Loop tak by paměť měla vydržet mnohem víc než se vůbec dožijete.

Uživatelský avatar
rnbw
Příspěvky: 32312
Registrován: 21 bře 2006, 01:00
Bydliště: Bratislava

#29 Příspěvek od rnbw »

NVRAM je oznacenie pre celu triedu pamati a okrem ineho tam patri aj EEPROM, FLASH, SRAM (so zaloznou bateriou). Ale Celeron ma tento problem uz zjavne vyrieseny.

Uživatelský avatar
Valdano
Příspěvky: 695
Registrován: 01 led 2023, 01:00
Bydliště: Česká Lípa

#30 Příspěvek od Valdano »

Odkazované paměti jsou jako info do budoucna a mohou se hodit až bude potřeba v něčem jiném použít velké množství čtení a zápisů aniž by se muselo hledět na životnost jako u obyčejných EEPROMek, které toho v tomto ohledu moc nevydrží. Pak není potřeba ani řešit ukládaní jen při vypínání.

Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“