protocol.h wird natürlich auch in meiner main.c includiert. Wenn ich den
Krempel jetzt aber im AVR-studio-Simulator laufen lasse, dann ist das
Array komplett leer, sprich mit 0 initialisiert.
Woran kann das liegen? Wo bleiben meine Tabellenwerte?
Danke!
Syntax error.
> protocol.h wird natürlich auch in meiner main.c includiert.
Nur dort?
> Wenn ich den> Krempel jetzt aber im AVR-studio-Simulator laufen lasse, dann ist das> Array komplett leer, sprich mit 0 initialisiert.
Leider sieht man hier nur eine kaputte Zeile, nicht den anderen
"Krempel".
Erstelle bitte ein Minimalbeispiel, um das Problem zu reproduzieren.
Compiler-Version?
ja, entweder zegen, wie du es versuchst an einem kompletten Beispiel,
oder erst das lesen:
http://www.nongnu.org/avr-libc/user-manual/pgmspace.html
Evtl. versuchst du ja über speedMap[...] an die Werte zu kommen.
Das wäre falsch, weil die Werte nicht über einen Zeiger im Datenraum zu
holen sind, sondern über pgm_read...()-Funktionen.
Das solltest Du nicht im .h File stehen haben. Wenn das .h File in
mehreren Quellen eingebunden wird, wird speedMap[] entsprechend oft
angelegt.
Besser in einem .c anlegen und im .h mit extern ... darauf verweisen.
Gruß, Stefan
Stefan K. schrieb:> Wenn das .h File in mehreren Quellen eingebunden wird, wird speedMap[]> entsprechend oft angelegt.
Nicht, solange nicht auch noch "static" davor steht.
Sinnvoll ist es trotzdem nicht, das im Headerfile anlegen zu wollen.
Ansonsten würde ich Johanns Rat folgen und das auf aktuellen Compilern
auf __flash umstellen. Der PROGMEM-Kram war ein Notnagel, um die Zeit
zu überbrücken, bis Johann eine richtige Implementierung im Compiler
realisiert hat. :)