Přidávání údajů do FLASH paměti

Odpovědět
Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Přidávání údajů do FLASH paměti

Příspěvek od Patrik » 21 čer 2020, 11:12

Ahoj,

chtěl bych se zeptat, jestli by se dala nějak uskutečnit tato má myšlenka (bez použití paměťové karty) a jestli je to vůbec vhodné. Mám datovou strukturu, ve které mám 5 datových typů. První dva jsou neměnné a proto jsou uloženy do paměti FLASH pomocí progmem, následující 3 datové typy - byte, boolean, boolean se za chodu programu mění a proto jsou uloženy do paměti SRAM). Chtěl bych se dotázat, mám například 201 uživatelů, např.


{"Novak", 546498, 50, 0, 0} //Např. tento bude posledním uživatelem tedy (200)

A mým dotazem je, že bych rád za chodu programu - pomocí klávesnice vytvořil dalšího uživatele (bez nutnosti zasahovat do jádra programu). Tzn. např. uživatel s jedničkou na konci = administrátor (např. {"Novakova", 555555, 50, 0, 1}) a na základě toho bych spustil cyklus, který by vyčkal na zadání dat z klávesnice. Chtěl bych prostě přidat za běhu programu dalšího uživatele např. 201 -místo jména by se automaticky přiřadilo číslo 201, poté by bylo vyžadováno číslo karty (toto by zapsal, uložil) - do paměti FLASH, dále zadal počet vteřin, např. 50 a dvakrát 0 nebo 1 a uložil (poslední 3 údaje by byly v paměti SRAM). Je to realizovatelné?
První dva údaje, které byly uloženy do paměti FLASH by měly být v paměti i po vypnutí a zapnutí napájení arduina, ale co ty následující 3 údaje? Vlastně kód by se načetl znovu a nenačetly se poslední 3 údaje, které byly v SRAM (takže by to zase nefungovalo)... Proto mě napadla další varianta a to ta, že mám např. v té struktuře 201 uživatelů, ale zadal bych do struktury 251 uživatelů (kde, posledních 50 uživatelů by bylo tzv. fiktivních) např.

{"Novak", 546498, 50, 0, 0}, // uzivatel 199
{"Citron", 38900, 50, 0, 0}, // uzivatel 200
{"201", 000000, 50, 0, 0}, // fiktivní uživatelé 201 - 250
{"250", 000000, 50, 0, 0},

Na základě toho, bych přidal pomocí klávesnice jednoduše dalšího uživatele a bylo by po mně požadováno jen číslo karty (2. datový typ, který bych zadal a uložil do FLASH paměti), mohl bych změnit i poslední 3 údaje (byte, boolean, boolean), ale počítal bych s tím, že při restartu Arduina by došlo k tomu, že kdybych tu 50 změnil na 40, tak by se mu přiřadila po restartu 50... (ovšem ke ztrátě U většinou nedochází a zařízení je v chodu několik dnů)..

Jenomže nyní toto mám uloženo, což je fajn, ale chtěl bych vidět i nějaký výstup (na základě kterého bych tyto úpravy mohl zapsat i trvale do kódu)... Např. nějaký administrátor přidal uživatele {"201", 777825, 40, 1, 0}, kterému přiřadil číslo 777825, čas 40 a režim vstupu 1.. A já bych rád tyto údaje viděl v Serial.lince (po připojení notebooku), nebo prostřednictvím WiFi modulu i dálkově... Ovšem pokud bych připojil notebook pomocí USB a chtěl bych vidět serial linku, kde bych vypsal všechny uživatele ze struktury, tak bych viděl i nově upravené uživatele {"201", 777825, 50, 0, 0}.. ovšem to, co provedl v rámci SRAM paměti bych vlastně neviděl (že místo 50 zadal 40, místo 0 zadal 1) Jak by se toto dalo realizovat? Je možno vidět výstup ze serial linky i bez nutnosti aby se arduino restartovalo? A já tak vlastně přišel o tyto údaje? Předpokládám, že s paměťovou kartou je to 100 % lepší a jednodušší... Ale rád bych to prvně zkusil takto.

Děkuji

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Přidávání údajů do FLASH paměti

Příspěvek od ondraN » 21 čer 2020, 21:48

Za chodu nelze modifikovat flash paměť arduina. To se dá pouze před překladem a nahráním. Pokud nechceš použít externí SD a do interní EEPROM se to nevejde, můžeš si připojit externí s větší kapacitou a ukládat si to do ní. ale budeš muset řešit strukturu uložení dat. To se dá udělat třeba přes vhodnou strukturu.
Sériovou linku lze zapojit i bez restartu, tak že se zapojí mezi napájení a reset nějaký rezistor, hodnotu z hlavy nevím, ale před pár měsíci se to tady řešilo.

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Přidávání údajů do FLASH paměti

Příspěvek od Patrik » 23 čer 2020, 09:32

Děkuji Ondro, zatím tedy v řešení. :lol: :D

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Přidávání údajů do FLASH paměti

Příspěvek od ondraN » 23 čer 2020, 11:03

Já tedy nevím, proč se bráníš tomu použití SD karty. Můžeš na ní mít kompletní databázi uživatelů, do paměti si nataháš jenom kódy a pak si podle aktivovaného kódu jenom šáhneš pro ostatní data na SD. Můžeš použít soubory v csv formátu a databázi udělat i spravovat pohodlně v Ecelu. Tyhle všechny výhody bohatě vyrovnají o něco větší potřebu paměti knihovny s FAT podporou pro SD kartu.

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Přidávání údajů do FLASH paměti

Příspěvek od Patrik » 23 čer 2020, 11:13

Ondro, nebráním.. Zatím jsem chtěl právě řešení bez karty, abych nemusel činit objednávku jen kvůli modulu paměťové karty.. Postupem času, až budu toho mít více (att si zase nevzpomínám zpětně a netvoří 4 objednávky), tak koupím vše najednou :-)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů