Problem progmem in Funktionen

Gast #1069247
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.