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 !!
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 !!