Stránka 1 z 1

PIC32 - MikroC - Flash (read/write)

Napsal: 02 úno 2014, 20:37
od ondradj
Zdravím,

chtěl bych se obrátit na zkušenější a poprosit o radu s Flash pamětí procesoru PIC32MX440F512H. Ideálně kdyby to mohlo být rovnou konkrétně "slovy", respektive funkcemi, kompilátoru MikroC... Nyní k věci:

Jak do této paměti (co nejefektivněji a programátorsky nejčistěji) uložit následující proměnné?

CHAR setting[7];
CHAR text[10][20] = { "txt 1", "txt 2", "..", "..", "..", "..", "..", "..", "txt 9" };

Jde mi o čtení i zápis (obsah je demonstrativní, ale typ proměnné a hranice klíčové). Externí paměti nepřicházejí v úvahu.


Předem bych rád poděkoval všem, kteří mě odkáží na něco užitečného, ale především hlavně těm, pokud by si někdo dal tu práci mi to tu zkusit jednoduše/polopaticky "naprogramovat" :-)

Napsal: 02 úno 2014, 23:21
od hakamusai
Převodem CharToByte (předpokládám ,že ho MikroC umí) ?

Napsal: 03 úno 2014, 00:56
od ondradj
hakamusai píše:Převodem CharToByte (předpokládám ,že ho MikroC umí) ?


Asi jsem se nevyjádřil dostatečně přesně, za což se omlouvám.. Jde mi o uložení zmíněných dvou proměnných (respektive polí) do paměti, která drží svou informaci i po odpojení napájení. Podle všeho starší typy CPU využívají EEPROM, současné FLASH paměti. Chtěl bych (kromě programu v programové paměti) nastavovat jisté věci pomocí sériové linky a ty aby zůstaly uloženy... V programové paměti ale být nemohou, protože čas od času mají být uživatelsky snadno dostupné a měnitelné (konkrétně pomocí bluetooth). Jediný můj problém je, že si neumím představit strukturu FLASH paměti, a jak s ní efektivně pracovat... :-(

Napsal: 03 úno 2014, 09:56
od procesor
Hmm. Dnes sa začína pri PIC32?

Napsal: 03 úno 2014, 10:06
od AB1
Slovo FLASH se používá pro označení paměti programu.
Některé mikroprocesory mají vnitřní EEPROM pro uložení dat.

Jelikož v MikroC není možnost deklarovat proměnné v EEPROM, tak není elegantnější řešení než zapisovat a číst bajt po bajtu.

Ale jestli se dívám dobře, tak uvedený typ nemá vnitřní EEPROM.

Napsal: 03 úno 2014, 15:19
od frpr666
Nevím jak u MikroC, ale u WinAVR je součástí knihovna libc, kde jsou už některé funce hotové.
Např.void eeprom_read_block (void __dst, const void __src, size_t __n)
Read a block of __n bytes from EEPROM address __src to SRAM __dst
void eeprom_update_block (const void __src, void __dst, size_t __n)
Update a block of __n bytes to EEPROM address __dst from __src

Nevím jak u flash u toho PICu píšou:
Program Flash Memory
D130 EP Cell Endurance 1000 — — E/W
Tedy jen min. 1000 erase/write cyklů ?