Stránka 1 z 1

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

Napsal: 21 čer 2020, 11:12
od Patrik
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

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

Napsal: 21 čer 2020, 21:48
od ondraN
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.

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

Napsal: 23 čer 2020, 09:32
od Patrik
Děkuji Ondro, zatím tedy v řešení. :lol: :D

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

Napsal: 23 čer 2020, 11:03
od ondraN
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.

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

Napsal: 23 čer 2020, 11:13
od Patrik
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 :-)