Skocz do zawartości

Sterownik silnika 1 przycisk pamieć po utracie zasilania


Pomocna odpowiedź

40 minut temu, ethanak napisał:

Jakbym zechciał później zapisywać drugą i trzecią strukturę to oznaczałoby, że program jest źle napisany.

😉

Cytat

Here's the legend: at a computer trade show in 1981, Bill Gates supposedly uttered this statement, in defense of the just-introduced IBM PC's 640KB usable RAM limit: "640K ought to be enough for anybody".

 

29 minut temu, nebraska napisał:

ethanak w razie czego mogę liczyć na twoją pomoc?

W Arduino IDE masz chyba pięć bibliotek do tego. Oczywiście mogę podrzucić swój kod, ale spróbuj lepiej tych bibliotek.

(edytowany)

Co za różnica czy strukturę z danymi wrzucasz do zewnętrznego eeprom czy tego wbudowanego? Żadna, zaś w esp8266 (nie wiem jeszcze jak 32) taki zapis do spi flash zawsze odbywa się w pełnych sektorach po 4kbit nie zależnie od pojemności danej struktury czy tablicy. Przy częstych operacjach należy stosować metody wear leveling, tak tylko wspominam zainteresowani znajdą co to jest i czemu się stosuje. 

Edytowano przez _LM_
(edytowany)
5 minut temu, _LM_ napisał:

Co za różnica czy strukturę z danymi wrzucasz do zewnętrznego eeprom czy tego wbudowanego?

Baaaaardzo duża dla mikrokontrolerów nie posiadających wbudowanego eepromu 🙂

 

Edytowano przez ethanak
8 godzin temu, _LM_ napisał:

Co za różnica czy strukturę z danymi wrzucasz do zewnętrznego eeprom czy tego wbudowanego? Żadna, zaś w esp8266 (nie wiem jeszcze jak 32) taki zapis do spi flash zawsze odbywa się w pełnych sektorach po 4kbit nie zależnie od pojemności danej struktury czy tablicy. Przy częstych operacjach należy stosować metody wear leveling, tak tylko wspominam zainteresowani znajdą co to jest i czemu się stosuje. 

Zarówno biblioteka preferences jak i littlefs/spiffs używa "pod spodem" wear levelingu.

Może eeprom też - nie wiem, nie używam.

Co do zapisu w sektorach 4k: pamięć flash (NOR) się degraduje od kasowania. Jak skasujesz raz obszar 4k, to teoretycznie możesz jeden bajt zapisać 4 tys razy zanim znów będziesz musiał skasować sektor. Strukturę wielkości 10b czterysta razy, itd.

12 godzin temu, kostuch napisał:

Co do zapisu w sektorach 4k: pamięć flash (NOR) się degraduje od kasowania. Jak skasujesz raz obszar 4k, to teoretycznie możesz jeden bajt zapisać 4 tys razy zanim znów będziesz musiał skasować sektor. Strukturę wielkości 10b czterysta razy, itd.

To aż taka mała żywotność mają preferencje???😱

12 godzin temu, kostuch napisał:

to teoretycznie możesz jeden bajt zapisać 4 tys razy zanim znów będziesz musiał skasować sektor.

Jeszcze warto zapisać jakąś informację gdzie go szukać 😉

BTW LittleFS operuje na długości bloku 4k (czyli pełnych sektorach) czyli żaden tam wear leveling. A preferences to esp32 a nie esp8266 (a od tego się zaczęło).

 

3 godziny temu, farmaceuta napisał:

To aż taka mała żywotność mają preferencje???😱

Jak małą?

Zapisujesz ten przysłowiowy bajt 4tys razy zanim musisz skasować sektor.

Sektorów masz (przy partycji 1M) 256

Sektor możesz skasować jakieś 100tys razy (pesymistyczna wartość z datasheeta)

4000*256*100000 = DUŻO 🙂

2 godziny temu, ethanak napisał:

Jeszcze warto zapisać jakąś informację gdzie go szukać 😉

A preferences to esp32 a nie esp8266

Dlatego napisałem "teoretycznie 4tys" a nie np 4096 🙂

Preferences dla esp8266: https://www.arduinolibraries.info/libraries/preferences

Co z tego że nieoficjalne wg Espressif. Równie nieoficjalny obecnie jest littlefs dla esp32

  • Lubię! 1

Ja tylko powiem tak: różne zastosowania implikują konkretne rozwiązania. Preferences jak sama nazwa wskazuje nie służy do zapisywania co chwilę jednego zmieniającego się bajta, tylko do zapisania sobie ustawień raz na jakiś czas kiedy przyjdzie nam ochota zmienić.

Do zapisywania często zmieniających się stosunkowo niewielkich danych masz eeprom, fram, ew.  statyczny ram z podtrzymaniem bateryjnym.

Do zapisywania większej ilości porcji danych o nieustalonej długości które dużo częściej odczytujesz niż zapisujesz możesz użyć albo przyspawanego do mikrokontrolera flasha, albo karty sd.

Ale @kostuch - nie przekonasz mnie że ten kawałek flasha w esp8266 jest idealny do zastosowania jakiego potrzebuje autor wątku 🙂

Chociaż w sumie można wykorzystać np. jakiegoś PostgreSQL-a na szybkim serwerze 🙂 Tak samo się nada i jeszcze przetrwa nie tylko wyłączenie zasilania, ale spalenie mikrokontrolera razem z całym ustrojstwem.

1 godzinę temu, kostuch napisał:

Jak małą?

Zapisujesz ten przysłowiowy bajt 4tys razy zanim musisz skasować sektor.

Sektorów masz (przy partycji 1M) 256

Sektor możesz skasować jakieś 100tys razy (pesymistyczna wartość z datasheeta)

4000*256*100000 = DUŻO 🙂

🙂

Ok, teraz cokolwiek łapie...😉

2 godziny temu, kostuch napisał:

Co z tego że nieoficjalne wg Espressif.

Arduino board ESP8266 jest cały nieoficjalny. W przeciwieństwie do ESP32.

2 godziny temu, ethanak napisał:

Ale @kostuch - nie przekonasz mnie że ten kawałek flasha w esp8266 jest idealny do zastosowania jakiego potrzebuje autor wątku 🙂

Daleki jestem od próby przekonania kogokolwiek do czegokolwiek 🙂

Sam używam w budowanym urządzeniu oprócz 8266 małej kostki FRAM 0,5kB

Ale zapisuję co sekundę kilkadziesiąt bajtów i asynchronicznie inne extrasy. Z obliczeń mi wyszło że orając flash i tak by działało kilkanaście/kilkadziesiąt lat, ale takie trochę "inżyniersko nieeleganckie" się wydawało więc zaszalałem 😁

Gdybym miał zapisywać zdarzenie naciśnięcia guzika (nawet co chwilę) to na pewno bym nie dokładał zewnętrznej pamięci - nie dożyłbym momentu, kiedy pamięć flash by się zużyła.

(edytowany)

@kostuch widzisz - ja jestem leniwy. Dolutowanie małej kostki eeprom zajmie mi mniej czasu niż kombinowanie z zapisem do flasha (mimo że jestem informatyk a nie elektronik).

Poza tym te metody z flashem są dobre w warunkach amatorskich - w przemysłowych by raczej nie przeszło...

(po rozmowie z kumplem - architekt oprogramowania w dupnej firmie  jednym z klientów jest Inmarsat):

To by nie przeszło przez pierwszy code review.

Edytowano przez ethanak

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...