Hallo Möchte eine Lookup-Tabelle verwenden. Meine Deklaration sieht wie folgt aus: uint16_t ana_value[] = {3258, 3232, ...., 122}; Leider sind die Initialwerte bei Laufzeit nicht richtig. Ich verwende ein ATmega8 und AVR Studio 4.13. Ich möchte das Array nicht mit einer Schleife während dem Ablauf des Programms initialisieren. Hat jemand eine Idee? Gruss & Dank Matthias
> Leider sind die Initialwerte bei Laufzeit nicht richtig.
Wie groß ist die Tabelle?
Wie sehen die Werte denn aus?
Womit hast Du das festgestellt?
Mal im Debugger nachgesehen?
Hast Du vor, die Werte zur Laufzeit zu verändern? Wenn nein, dann gehört
die Tabelle ins Flash-ROM und nicht ins knappe RAM.
Danke für die Antwort. Die Tabelle hat 360 16-Bit Integer. Diese Werte will ich nie ändern zur Laufzeit. Die Werte sind zufällige Werte. Wenn ich einzelne Elemente zur Laufzeit überschreibe/initialisiere, dann stimmen diese dann. -> "uint16_t ana_value[] = {3258, 3232, ...., 122};" klappt nicht.
Denk dran, dass die Tabelle allein schon 640 Byte Speicher braucht.
Die Initialisierung sollte korrekt funktionieren, das klingt fast nach einem Compilerfehler. Allerdings sind das 720 Bytes RAM, und der Mega8 hat nur 1024. Möglicherweise ist in Deinem Linkerskript die Sektion für initialisierte Variablen zu klein?
Ich hab nicht nur eine solche Tabelle, sondern gleich 2 Stück davon :-D Das RAM ist zu 106.5% Full Dies Erklärt einiges. Danke Für eure Hilfe.
Solche Tabellen packst Du besser ins Flash. Der Zugriff geht dann nur noch über Library-Funktionen (pgm_read_word?), schau mal in der libc-Doku nach. Gruß, Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.