Skocz do zawartości

Pamięć stanu Arduino po utracie zasilania


Pomocna odpowiedź

Napisano

Witam,

Piszę program alarmu włamaniowego wszystko działa super, natomiast nie wiem co zrobić by arduino po powrocie zasilania ustwił stan alarmu na taki jaki był przed zanikiem zasilania. Jeśli alarm był zazbrojony to po ponownym włączeniu by tak było , a jeśli rozbrojony to rozbrojony Proszę o wskazówki, i dziękuję pomoc.

Witaj,

Tak, wiem co to EPROM. Nie korzystałem z niej w arduino. Dziś zanim na forum przeczytałem o niej i wyczytałem, że ona nie jest dożywotnia po iluś zapisach się uszkadza. Patrząc, że robiąc projekty często arduino resetuje czy odpinam zasilanie obawiam się, że szybko padnie. Jeśli coś źle rozumiem to przepraszam. Także, każde włączenie czy wyłączenie. Alarmu powoduje zapis jak rozumiem więc sądziłem, że jest inne rozwiazanie. Z góry dziękuję za pomoc

mikro-sławek, masz jak najbardziej rację, eeprom wytrzymuje tylko określoną liczbę zapisów. Możesz przemyśleć jeszcze inne opcje:

1) podtrzymywanie bateryjne - do tego może być problem z arduino ale jeśli uda Ci się uśpić procesor i ograniczyć pobór prądu, możesz przechowywać dane w pamięci RAM

2) użyć zewnętrznej pamięci np. FRAM

Zwykle pomięć EEPROM używasz w ten sposób, że po każdej zmianie parametrów w RAMie zapisujesz ich kopię do EEPROMu. Producent gwarantuje milion zapisów (odczyty są bezkarne)

i wiele lat przechowywania informacji a jak myślisz, ile wciśnięć wytrzymuje zwykły przycisk? 10000? 100000? Myślę, że musiałbyś się bardzo postarać (i zużyć kilka kompletów klawiatur) by załatwić EEPROM. Nie miej obiekcji tylko w to wchodź, to dzisiaj standard i najtańsza opcja przechowywania informacji bez zasilania. Są do tego biblioteki i niczego nie musisz dołączać do procesora. Wszystkie alarmy, zegarki itp na tym bazują. W AVR masz tego od 512 bajtów do 4Kbajtów - zależy od wersji - to naprawdę dużo jak na potrzeby przechowywania ustawień.

Jeżeli musisz mieć do tego zawsze aktualny czas, to niektóre kostki RTC (takie podtrzymywane baterią pastylkową przez lata) mają czasem trochę wolnego RAMu na przechowywanie jakichś ustawień, ale to zwykle kilkadziesiąt bajtów. Być może to wystarczy?

Producent deklaruje 100k cykli zapisu. Zależy jak często mają miejsce, jeśli np. co 1s to błędy mogą pojawić się bardzo szybko. Najlepiej oszacować czas życia urządzenia, częstotliwość zapisów i wtedy dobrać rodzaj pamięci.

Elvis: Weź może odnieś się do tego konkretnego przypadku i pomóż sensownie a nie powtarzasz banały. Tu człowiek ma alarm, uzbrojony albo nie i tylko to chce wiedzieć po starcie zasilania. Ile razy dziennie uzbrajasz alarm? Co sekundę? No proszę Cię. Nawet gdy będzie wychodził z domu 10 razy dziennie to ma gwarancję ponad 25 lat pracy urządzenia. Jeśli to jest "bardzo szybko" to chyba zajmujesz się geologią a nie elektroniką.

EDIT: A swoją drogą alarm chyba powinien mieć jakieś podtrzymanie - tak centralki, czujek jaki syreny - i awarie zasilania nie powinny mu się zdarzać. Chyba że mówimy o zabawce dla młodszego brata.

W sumie zajmuję się oprogramowaniem, elektroniką tylko czasami. Nie wiem, co jeszcze będzie zapisywane w eepromie, może np. historia zgłaszanych alarmów? Wykonanie analizy przed zaprojektowaniem urządzenia to raczej poprawna ścieżka, nawet w geologii, na której niestety się nie znam. Może to błąd, ale nie lubię podawać innym jedynie słusznych rozwiązań, wolę żeby pytający sami wybrali to co im odpowiada - jeśli mikro-sławek uzna, że eeprom mu wystarcza, to bardzo dobrze. Podałem tylko inne możliwości, wybór nalezy do klienta - może za długo pracuję jako konsultant.

EDIT: a co do elektroniki, to urządzenia, które projektowałem miały czas życia 10 lat, więc czasem lepiej policzyć zanim się zacznie produkcję.

Nie opowiadaj, jeśli jesteś konsultantem to powinieneś szybko oceniać ludzi. Jaką produkcję?? Tu masz konkretny przypadek, nie jakąś zmyśloną sytuację: "klienta" który jest zielony jak natka na wiosnę, zadaje pytania z 1 klasy elektroniki, nie ma pojęcia o pamięciach, pisze alarm dla zabawy (bo przecież nikt rozsądny nie da mu uczyć się i zrobić tego za jakieś pieniądze a produkt nie będzie miał czasu życia 10 lat bo blaszki Arduino rozegną się lub zgniją po 2) a Ty mu każesz wybierać między FRAMem a EEPROMem. Gdybym raz trafił na takiego konsultanta co to nie potrafi w lot ocenić moich możliwości i potrzeb, ciężko mu przychodzi wyrażenie jasnego, własnego zdania, więcej bym tam nie wrócił. No tak, historia alarmów to rzeczywiście znaczny wzrost ilości zapisów. Ile razy w roku okradają Ci dom? Mi z garażu zginął jeden rower w ciągu 10 lat. Ho, ho, to musimy doliczyć 0.001 zapisu dziennie. No ale może zmiana haseł? Kompletny świr (albo oficer bezpieczeństwa puszczony bez nadzoru) może to robić nawet raz dziennie. Ha, to teraz mamy dodatkowy 1 zapis na dzień i czas naszego EEPROMu (jeśli używamy wciąż tej samej komórki) kurczy się do 10 lat! Porażka, projekt jest do zaorania... 😐

EDIT: Geologii użyłem tylko dla skali czasu. Nic nie pisałem o metodologii postępowania, nie przekręcaj.

Nie jestem handlowcem, więc na szczęście ocenianie ludzi nie jest kluczową umiejętnością. A co do autora wątku, to go nie znam, nie wiem kim jest, ani po co robi to urządzenie. Wolę nie zakładać, że wszyscy inni użytkownicy forum to młodzież z gimnazjum, bo może się okazać, że niektórzy mają więcej lat i doświadczenia ode mnie.

Pytanie było krótkie i konkretne - co więcej sam autor wykazał zainteresowanie typami pamięci i odkrył, że eeprom ma pewne wady. Więc może pozwólmy mu określić co potrzebuje, jakie rozwiązanie jest dla niego najlepsze. Jeśli masz jeszcze inne pomysły, możesz się nimi podzielić. Ale podejmowanie za kogoś decyzji i zgadywanie co potrzebuje to chyba nie najlepsza metoda.

ethanak, mam nadzieję, że pisanie o eeprom jako be to nie moja sprawka - nie chciałem zniechęcać do użycia eeprom, chodziło mi tylko o pokazanie innych możliwości. A przy okazji liczyłem, że autor wątku nauczy się szacować liczbę wymaganych zapisów oraz dokonywać racjonalnych wyborów. Niestety jak zwykle zamiast tego zmokłem podczas burzy 🙁

E tam.

Durny telewizor zapamiętuje ustawienie głośności w eepromie. Kto się spotkał kiedyś z uszkodzeniem tego eepromu przed wywalenirm starego telewizora na śmietnik?

Jak komuś nie pasuje eeprom - niech kupi fram. Jak fram mu nie pasuje (bo trzeba przez 300 lat dane trzymać) to niech poczeka sto lat, coś przez ten czas wymyślą...

  • Lubię! 1
mikro-sławek, masz jak najbardziej rację, eeprom wytrzymuje tylko określoną liczbę zapisów. Możesz przemyśleć jeszcze inne opcje:

1) podtrzymywanie bateryjne - do tego może być problem z arduino ale jeśli uda Ci się uśpić procesor i ograniczyć pobór prądu, możesz przechowywać dane w pamięci RAM

2) użyć zewnętrznej pamięci np. FRAM

Cześć,

tak z ciekawości, co to jest pamięć FRAM i na jakiej zasadzie działa (i kiedy warto rozważyć jej zastosowanie)? Oczywiście mogę poszukać np. w Wikipedi, ale nie wiem, czy otrzymam przydatną odpowiedź.

Pozdrawiam

Na wikipedii jest całkiem dobry opis https://en.wikipedia.org/wiki/Ferroelectric_RAM

Przykładowa pamięć jest dostępna np. tu: https://www.tme.eu/pl/details/fm24c04b-g/pamieci-fram-uklady-scalone/cypress/

Jest droga, więc wcale nie musi być idealny rozwiązaniem - ale warto wiedzieć że jest taka opcja. Ja miałem z nią do czynienia jakieś 10 lat temu, może są teraz nowsze / lepsze rozwiązania.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...