PROGMEM probléma

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Trebi
Újonc
Újonc
Hozzászólások: 7
Csatlakozott: 2017. június 19. hétfő, 6:48

PROGMEM probléma

Hozzászólás Szerző: Trebi »

Sziasztok,
Szeretnék eltárolni kb. 1000 darab nevet hozzátartozó értékekkel együtt.
El is kezdtem beírni az alábbiak szerint:

typedef struct
{
char* name;
int adat1;
int adat2;
int adat3;
int adat4;
int adat5;
int adat6;
int adat7;
int adat8;
int adat9;
int adat10;
...stb
}
nevek;

const nevek Products [] PROGMEM =
{
{"name1",73232173,74476,77678,82662},
{"name2",83480,1550,802,787,727,465},
{"name3",322,545617,487720,734563,76784,11822,5641044,145642,424453},
{"name4",3454,84400,123229},

...stb
kb. 1000 sor lenne összesen. Egy névhez 1-50 érték lenne eltárolva ami nevenként változik.

Amikor 500 sornál járok akkor még lefordul hiba nélkül. A memória is elégnek tűnik.

"Sketch uses 43 836 bytes (33%) of program storage space.
Maximum is 130 048 bytes.

Global variables use 2 152 bytes (13%) of dynamic memory,
leaving 14 232 bytes for local variables. Maximum is 16 384 bytes."



Viszont néhány sor beírása után reklamál, hogy túl nagy a méret :(


Ez a hiba üzenet:
"Arduino: 1.6.5 (Windows 7), Board: "ATmega1284, Standard, 1284P, 2.7v, Disabled (default), 16 MHz external"

tomb_teszt_OK:89: error: size of variable 'Products' is too large
size of variable 'Products' is too large

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences."



Hogyan lehetne ezt okosan megoldani???

Köszönöm!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: PROGMEM probléma

Hozzászólás Szerző: Robert »

ATmega1284 - ?
Nem lehet hogy a tömb ilyen megadásánál van belső korlát (változó túlcsordulás vagy valami?)
http://www.tavir.hu - a gazda :)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: PROGMEM probléma

Hozzászólás Szerző: kapu48 »

INT-be ez fér bele:
On the Arduino Uno (and other ATmega based boards) an int stores a 16-bit (2-byte) value. This yields a range of -32,768 to 32,767
https://www.arduino.cc/reference/en/lan ... types/int/

És te túl nagy értékeket akarsz bele préselni:
{"name3",322,545617?,487720?,734563?,76784?,11822,5641044?,145642,424453?},
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: PROGMEM probléma

Hozzászólás Szerző: vargham »

Soha ne használj sima int típust. Helyette mindig olyat, aminek tudod a méretét. Például uint8_t, int16_t, stb.
Válasz küldése