Problem progmem in Funktionen

Gast #1069247
Lesenswert?

Hallo,
Ich programmiere gerade eine Funktion, die mir aus großen Datenfeldern 
im Flash Daten auslesen soll.
Wenn ich die Daten innerhalb der main-Schleife auslese funktioniert es 
perfekt. Da aber die Aufrufe mehrfach gebraucht werden wollte ich alles 
in eine Funktion packen (auch im main.c) und den ausgelesenen Wert mit 
dem return rückgeben und da liegt das Problem..
main.c
1
int main()
2
{
3
   while(1)
4
   {
5
   testvar = pgm_read_word(&(((datapoint_t *)pgm_read_word(&(FAN[1].kf_ptr)[0].kl_ptr))[0].Speed)); //funktioniert
6

7
   testvar1 = get_speed(1, 0, 0); //funktioniert nicht
8
   }
9
}
10

11
int get_speed(int fan_index, int kl_index, int point_index)
12
{
13
return pgm_read_word(&(((datapoint_t *)pgm_read_word(&(FAN[fan_index].kf_ptr)[kl_index].kl_ptr))[point_index].Speed));
14
}

Hat jemand eine Idee was da los ist?? Die Funktion liefert nur Stuss 
zurück.
Basis ist im Moment ein ATMega8.

Danke schon mal..

mfg Daniel Held
Gast #1072263
Lesenswert?

OK, ich habs mal aussortiert und nun funktioniert es.
Allerdings verstehe ich nicht warum, da im Ursprung beide Ausdrücke 
gleich sind, einziger Unterschied einmal nur in der main-Schleife das 
ander Mal in einer Funktion.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren