PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit PROGMEM Zugriff



vklaffehn
07.06.2013, 22:16
Moin! Ich hab hier ein kleines Problem, auf Daten im PROGMEM zuzugreifen.

Einmal habe ich ein 2-Dimensionales Array:



signed int positionslowres[6][10] PROGMEM =
{
{3,75,0,120,240,0,0,0,0,0},
{6,45,0,60,120,180,240,300,0,0},
{8,15,0,45,90,135,180,225,270,315},
{8,-15,0,45,90,135,180,225,270,315},
{6,-45,0,60,120,180,240,300,0,0},
{3,-75,0,120,240,0,0,0,0,0}
};


Darauf greife ich später zu :



int i,j,k;
int xw,yw;

......

k=pgm_read_word(&(positionslowres[i][0]));
yw = pgm_read_word(&(positionslowres[i][1]));



Das klappt alles wunderbar.

Jetzt hab ich noch ein 1-Dimensionales Array :




signed int poshelptable[91] PROGMEM =
{
128,
127,
127,
127,
127,
127,
127,
127,
126,
126,
126,
125,
125,
124,
124,
123,
123,
122,
121,
121,
120,
119,
118,
117,
116,
116,
115,
114,
113,
111,
110,
109,
108,
107,
106,
104,
103,
102,
100,
99,
98,
96,
95,
93,
92,
90,
88,
87,
85,
83,
82,
80,
78,
77,
75,
73,
71,
69,
67,
65,
64,
62,
60,
58,
56,
54,
52,
50,
47,
45,
43,
41,
39,
37,
35,
33,
30,
28,
26,
24,
22,
20,
17,
15,
13,
11,
8,
6,
4,
2,
0
};



Zugriff:



int factor;
......

factor = eeprom_read_word(&(poshelptable[1]));


Und hier kommt ein warning vom Compiler, außerdem ist facor immer -1....



../panohead_mega8.c:375: warning: pointer targets in passing argument 1 of 'eeprom_read_word' differ in signedness


zuerst hatte ich
factor = eeprom_read_word(&poshelptable[1]);
meiner Mei´nung nach falsch (fehlende Klammern), aber ich kapier nicht, wieso das nciht geht.

auch factor als signed int, oder das Array nur als int zu deklarieren ändert nix. Kann mir jemand sagen, wo mein Denkfehler liegt???

Danke schonmal !!

sternst
07.06.2013, 22:43
Kann mir jemand sagen, wo mein Denkfehler liegt???Was man im Flash speichert, lässt sich in der Regel nur schlecht über das EEPROM wieder lesen. ;-)

vklaffehn
07.06.2013, 23:14
AARRRGGGHHHHHH!!!! Manchmal ist man einfach zuuuu blind....

Danke schön!