AVR GCC EEP-File mit Standardwerten versehen

Gast #1389001
Hi,

habe schon im Forum gesucht, aber nicht so richtig die Antwort auf mein 
Problem gefunden.

Ich habe mit AVR GCC einen Wert definiert:

uint8_t  ee_Endlage1_W EEMEM;

Kompilieren klappt prima. Auch ein EEP-File wird erzeugt.

Ich lade mein EEP und HEX mit MegaLoad hoch. Leider habe ich jetzt das 
Problem, dass ich nach dem neu kompilieren und flashen die unmöglichsten 
Werte für ee_Endlage1_W bekomme.

Ich würde gerne Standardwerte im EEP-File definieren. Habe auch schon 
versucht, die Zeile von oben folgendermaßen zu formulieren:

uint8_t  ee_Endlage1_W EEMEM=500;

Wenn ich wieder flashe und die Daten auslese kommt wieder nur murks 
raus. Das schreiben und lesen an sich funktioniert im Programm tadellos.
Nur die Zuweisung der Standardwerte nicht.

Was mache ich falsch?
#1389180
eeprom_read_...() bzw. eeprom_write...() vergessen? (Du kannst auf die 
EEMEM Variablen nicht einfach so zugreifen).

Und antworte jetzt nicht mit: "Natürlich nicht!!!1111elf" - du hast kaum 
sinnvolle Informationen zu deinem Programm gepostet.

scnr, Jörg

ps.: Vielleicht brauchst du auch nur mal nach der EESAVE-Fuse zu sehen
Gast #1389194
Ich schrieb: "Das schreiben und lesen an sich funktioniert im Programm 
tadellos."

Also ja, ich habe die von Dir genannte lib Funktionen verwendet. Wenn 
ich Werte in den EEPROM schreibe (mittels UART Befehlen) und dann wieder 
auslese funktioniert alles bestens. Sobald ich aber meine Software neu 
kompiliere und flashe haut es die gespeicherten Werte durcheinander.

Ich denke mittlerweile auch das bei den FuseBits oder dem MegaLoad was 
nicht hinhaut.  Dem werde ich mal nachgehen. Danke trotzdem.
Gast #1389196
Beim flashen wird das Device gelöscht und somit auch der EEPROM. Somit 
u.a. bei AVR Studio dran gedacht das EEP File anzugeben und nach dem 
flashen auch noch den EEPROM zu beschreiben?
Gast #1389263
Hi

>Beim flashen wird das Device gelöscht und somit auch der EEPROM.

Nicht unbedingt. EESAVE-Fuse setzen und der EEPROM-Inhalt bleibt beim 
Löschen erhalten.

MfG Spess
Gast #1390248
Es lag wohl am Megaload.

Ich habe den Bootloader jetzt rausgehauen und flashe den µC über das 
STK500 und AVRStudio. Da gibt es keine Probleme. Gibt sogar noch 
zusätzliche Vereinfachungen, ich packe jetzt EEP, HEX und FuseBits in 
ein ELF-File und lade alle gleichzeitig hoch. Kannte ich noch gar nicht, 
ist recht hilfreich.

Achso, Brown-Out habe ich noch gesetzt, aber ich denke mal das hat damit 
nicht so viel zu tun.
Gast #1390359
Ein Frage hätte ich allerdings noch.

Die Standardwertzuweisung der EEPROM Werte funktioniert einwandfrei. 
Z.B.:
uint8_t    EEMEM  ee_Endlage1_W=0;

Das Ganze wird im EEP-File abgelegt und wenn ich es wie oben beschrieben 
flashe, habe ich "0" auch als Startwert.

Habe ich allerdings ein Array, funktioniert das nicht:
uint8_t  EEMEM  ee_Belegungsint_W[]="1,2,3,4,5,6,7,8,9,10,11,12";

Das sind die Werte sonstwas nur nicht die, die ich als Standard 
definiert habe.

Hat da jemand eine Idee?
#1390363
Myjestic schrieb:

> Habe ich allerdings ein Array, funktioniert das nicht:
> uint8_t  EEMEM  ee_Belegungsint_W[]="1,2,3,4,5,6,7,8,9,10,11,12";
>
> Das sind die Werte sonstwas nur nicht die, die ich als Standard
> definiert habe.

Lass mich raten, die "sonstwas-Werte" sind 49, 44, 50, 44, 51, 44, ...

Wenn du eigentlich die Werte 1, 2, 3, ... erwartet hast, musst du die 
Anführungszeichen durch geschweifte Klammern ersetzen.
Gast #1390367
uint8_t  ee_Belegungsint_W[] EEMEM ={1,2,3,4,5,6,7,8,9,10,11,12};

so sollte es gehen.....eventuell noch explizit in de eckigen Klammer die 
Größe angeben...kann gerade nicht testen..


egberto

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.