Skocz do zawartości

Zmiana zapisanych argumentów bez ponownego wgrywania programu


Pomocna odpowiedź

Napisano

Cześć, wybaczcie, jeżeli nazwa tematu nie odpowiada dokładnie temu o co mi chodzi - jestem początkujący.

Zbudowałem sobie pehametr na ESP8266. Dla jasności - jest to urządzenie mierzące pH roztworu w funkcji SEM (~napięcie) ogniwa pomiarowego. Żeby to działało taki przyrząd trzeba skalibrować na roztworach o znanym pH. Czyli - umieszczam ogniwo w roztworze o znanym pH i na wyświetlaczu odczytuję SEM. Powtarzam te czynności dla roztworu o innym pH. Mając dwa zestawy punktów (pH1, SEM1; pH2, SEM2) wprowadzam je do programu, gdzie mam odpowiedni wzór, który wyznacza parametry kalibracji. I teraz tak - chciałbym móc zmieniać te parametry bez wgrywania programu po każdej kalibracji. Oczywiście, jeżeli nie wyłączę pehametru to taka implementacja nie jest zbyt trudna, nawet dla mnie, ale zasadniczo pehametr używa się tylko przez określony czas, po czym się go wyłącza, przez co wprowadzone dane przepadają. Czy jest jakiś prosty sposób, żeby móc zapisywać do pamięci argumenty (w tym przypadku pH i SEM) i żeby nie zmieniły się na zapisane podczas wgrywania programu po odłączeniu zasilania. Mam nadzieję, że w miarę wyjaśniłem o co mi chodzi. Próbowałem szukać w google, ale ponieważ nie wiem jak to dokładnie wpisać, żeby google wypluło jakiś sensowny wynik to niczego nie znalazłem.

A widzisz, jak się wie co wpisać w google to można znaleźć, ale tak jak pisałem - nie wiedziałem jak to ująć w słowa, tak żeby google wypluło jakieś sensowne informacje. Dzięki.

  • Lubię! 1

@moszeusz tak, hasło klucz w tym kontekście to właśnie pamięć EEPROM, czyli taka, do której można zapisać np. wartość zmiennej, a dane te nie zostaną usunięcie po wyłączeniu zasilania. Czasami wykorzystuje się również do tego pamięć flash, w której trzymany jest program, ale to już trochę bardziej zawiłe rozwiązanie. W ramach ciekawostki polecam lekturę tego artykułu, z którego można dowiedzieć się więcej o różnych typach pamięci: https://forbot.pl/blog/kompendium-pamieci-zewnetrznych-eeprom-flash-fram-id29485

  • Pomogłeś! 1

W nonos obsługuje się to funkcjami 

spi_flash_erase_sector();
spi_flash_read();
spi_flash_write();

Oczywiście z argumentami i z podziałem na sektory po 4kB

  • Lubię! 1
(edytowany)

Można z wyrównaniem do 4 bajtów - vide moja Mimbrola.

W ESP32 oczywiście (bo o to było pytanie).

Edytowano przez ethanak
  • Lubię! 1
1 godzinę temu, jand napisał:

@farmaceuta Popatrz na bibliotekę preferences.h

Już obadałem preferencje i spiffs i mniej więcej kapuje, ale czasem trzeba zapisać parę bajtów to taki EEMEM by się przydał dla eeprom'u żeby nie cyrkować...😉

Zawsze możesz zamiast z preferences korzystać z gołego nvm (nie wiem po co, w końcu po to masz preferences) albo podpiąć jakiegoś pryszcza eeprom (24lc01 na przykład). Możesz również zrobić sobie swoją dodatkową partycję na flashu i tam się bawić.

Z ciekawości: jaki jest problem z zapisaniem paru bajtów przez preferences?

33 minuty temu, ethanak napisał:

Z ciekawości: jaki jest problem z zapisaniem paru bajtów przez preferences?

Żadnego..nawet najmniejszego😉 tak tylko pytam bo jednak jest ten eeprom (bodajże 512b) który też bym czasem wykorzystywał gdybym miał prosty sposób na zapamiętanie adresów (coś jak EEMEM)

1 godzinę temu, ethanak napisał:

Kto ci jakichś bajek naopowiadał że ESP ma eeprom?

No ja wiem że on jest zrobiony z flash'a😉 no ale to nie zmienia faktu że obsługa tej pamięci przypomina używanie EEPROM'u na avr...tak z grubsza oczywiscie

(edytowany)

No to do tego masz preferences. 

I przyjmij wreszcie do wiadomości, że ESP to nie jest taki większy AVR.

Aha; jak chcesz na niższym poziomie to obejrzyj sobie kod źródłowy preferences.

Edytowano przez ethanak
  • Lubię! 2

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