Hallo, ich habe seit dem Umstieg vom AVR-Studio 5.1 zum Atmel Studio 6 folgendes kleines Problem: Mit dem Wechsel der in der originalen Installation mitgelieferten AVRGCC von 3.3.1.27 auf 3.4.0.65 im Atmel Studio 6 sind meine im EEPROM abgespeicherten Werte nicht mehr an derselben Adresse. Kurz zur Erklärung: Waren die Werte in 5.1 in der Reihenfolge Wert1,Wert2,Wert3 gespeichert, sind sie jetzt in Version 6 in folgender Reihenfolge Wert3,Wert2,Wert1. Die Werte werden über die Funktion eeprom_write_byte() im EEPROM abgelegt. Da ich noch relativ neu in der Atmel-Programmierung bin, halten sich meine DEBUG-Kenntnisse noch sehr in Grenzen. Über einen Lösungsansatz würde ich mich sehr freuen. Vielen Dank Gruß Martin
Martin schrieb: > Hallo, > > ich habe seit dem Umstieg vom AVR-Studio 5.1 zum Atmel Studio 6 > folgendes kleines Problem: > > Mit dem Wechsel der in der originalen Installation mitgelieferten > AVRGCC von 3.3.1.27 auf 3.4.0.65 im Atmel Studio 6 sind meine im > EEPROM abgespeicherten Werte nicht mehr an derselben Adresse. > > [...] > > Da ich noch relativ neu in der Atmel-Programmierung bin, halten sich > meine DEBUG-Kenntnisse noch sehr in Grenzen. Das hat nix mit Atmel oder AVR oder AStudio tu tun sondern mit C. Nirgends wird gesagt, daß bei Definitionen int a; int b; int c; Die Variablen in dieser Reihenfolge im Speicher stehen sollen oder müssen. Lösung: Leses die Variablen über ihre Adressen: eeprom_read_byte (&a); Wenn ein spezifischen Layout benötigt wird, dann typedef struct { int a, b, c; } abc_t; abc_t abc EEMEM; eeprom_read_byte (&abc.a); eeprom_read_block (&abc_im_ram, &abc, sizeof (abc));
Ich glaube ich hab meinen Denkfehler gefunden. Das Auslesen der Daten im Atmel hat mit der Verarbeitung über die Adresse in Form von eeprom_read_byte (&a); bei mir schon funktioniert. Da ich allerdings das EEPROM-Speicherabbild ausgelesen, per Hand im Editor verändert, und dann zurück in den Atmel geschrieben habe, hatte ich auf einmal die Werte an anderer Stelle stehen. Ich versuche jetzt die Daten mit Angabe der direkten EEPROM- Adresse zu speichern. Damit weiß ich definitiv wo die Daten im EEPROM stehen und kann diese dann im Editor ändern und zurückschreiben. Gruß Martin
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.