PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PROGMEM array auslesen geht nicht



_maddin
11.05.2007, 20:28
hallo

ich hab nen zweidimensionales array

unsigned char shifted[68][2]= {

(tastatur scancodes)
wenn ich das array so lasse kommen die richtigen werte am pc an

while(kbcode!=unshifted[c][0]&&unshifted[c][0]!=0) c++;
uart_putc(unshifted[c][1]);
uart_putc(shifted[c][1]);

wenn ich das attribut PROGMEM hinzufüge, um RAM speicher einzusparen

unsigned char shifted[68][2] PROGMEM= {

kommt plötzlich nur noch blödsinn raus.
woran liegt das ??? danke schonmal

mfg maddin

p_mork
12.05.2007, 14:38
Wie liest Du denn den Flash aus? Mit shifted[x][y] geht das nit. Da musst Du pgm_read_byte(adresse) benutzen, sonst greifst Du auf den RAM zu. Wie GCC das Array im Flash ordnet, musst Du selber rausfinden. Ich glaub in deinem Fall würde es shifted[0][0], shifted[1][0], shifted[2][0]... shifted [0][1], shifted[1][1] usw sein.

MfG Mark

_maddin
12.05.2007, 20:14
ok danke. wie finde ich denn raus, welche adresse im flash zB shifted[0][0] hat ?