Forum: Compiler & IDEs ATMEL XMEGA:INT Wert in EEPROM speichern/Lesen


von Anfänger (Gast)


Lesenswert?

Hallo,

Ich bin noch ein Anfänger was die Programmierung eines Atmel Xmegas 
betrifft. Ich möchte diesen mit der Sprache C Programmieren.
Ich habe den Atmel Xmega A3BU und möchte insgesamt 4 INT Werte im EEPROM 
Speichern. Diese Werte lese ich von einem analogen Sensor aus und 
erhalte dann 4  8BIT (evtl 12 BIT) unsigned INT Werte.

Ich habe im Datenblatt und auch in Foren schon viel gesucht und habe 
noch nicht gefunden wie ich diese Werte im EEPROM Speichern und später 
auslesen kann.

Kann mir bitte jemand helfen wie genau ich das machen kann.

Ich verwende das AVR Stuido um das Programm zu schreiben. Habe auch 
keine Befehle gefunden wie ich den EEPROM ansprechen kann. =(.

Dankeschön

von Bassti (Gast)


Lesenswert?

Ja, dass nen bisschen komplizierter geworden. Aber auch schöner... weil 
man nun 32 byte mit einem mal schreiben kann...

Also allgemeines vorgehen: pagebuffer befüllen und dann den pagebuffer 
atomar in den eeprom schreiben...

Am besten mal nen Sample aus der ASF laden und anschauen und auch in die 
Funktionen der ASF schauen, da bekommt man schnell mit, was gemacht 
werden muss...

Grüße

Basti

von Gerhard G. (g_g)


Lesenswert?

Hallo,

unter:

http://www.mikrocontroller.net/attachment/86742/xeeprom.h
Datei xeeprom.h laden

#include "xeeprom.h"


int main(void)
{

...

EEpromInit();

eeprom_write_byte(0x00,0xff);
eeprom_write_word(0x01, 0x00ff);

das lesen funktioniert ebenso!!

xx = eeprom_read_byte(0x00);
yy = eeprom_read_word(0x01);

...

Das Ganze funktioniert bestens mit einem Xmega..

Gruß G.G.

von Fabian O. (xfr)


Lesenswert?

Was spricht denn gegen
1
#include <avr/eeprom.h>
aus der normalen avr-libc?

Funktioniert bei mir auch einwandfrei mit dem Xmega.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM

von Anfänger (Gast)


Lesenswert?

dankeschön G. G. für die schnelle Antwort.

kann ich eine dezimalzahl auch ganz normal hineinschreiben oder muss ich 
die in eine Hexzahl umwandeln?

Noch dazu weiß ich nicht wie ich die datei xeeprom.h lade. Wo finde ich 
diese?

Dankeschön

von Karl H. (kbuchegg)


Lesenswert?

Anfänger schrieb:
> dankeschön G. G. für die schnelle Antwort.
>
> kann ich eine dezimalzahl auch ganz normal hineinschreiben oder muss ich
> die in eine Hexzahl umwandeln?

Dezimal, Hex, Binär .... sind alles nur verschiedene Schreibweisen für 
immer dasselbe: eine Zahl

Ob du
   0x41 oder 65 oder 0b01000001 oder 'A'
schreibst, ist völlig egal. Letzten Endes beschreibst du mit den 
verschiedenen Schreibweisen in allen Fällen immer dasselbe Bitmuster.

von Gerhard G. (g_g)


Lesenswert?

Hallo,

Anfänger schrieb:

> Noch dazu weiß ich nicht wie ich die Datei xeeprom.h lade. Wo finde ich
> diese?

hier: http://www.mikrocontroller.net/attachment/86742/xeeprom.h

vom Bildschirm kopieren und eine neue Datei aufmachen. Dann speichern 
unter.. xeeprom.h

Gruß G.G.

von Anfänger (Gast)


Lesenswert?

ich habe die alles kopiert und in eine neue Datei eingefügt und als 
xeeprom.h abgespeichert. nun wenn ich im AVR Studio auf Build solution 
gehe kommt ein Error der sagt :
Error  1  implicit declaration of function 'memcpy'

dieser Error ist irgendwo in der xeeprom.h datei eingebaut.

Wissen Sie wie man dieses Problem lösen kann?

Dankeschön

von Gerhard G. (g_g)


Lesenswert?

Hallo,

ist das beachtet worden?

Gemeinsame Verwendung von <eeprom.h> und "xeeprom.h" ist nicht getestet!

Solltest du das eingebunden haben, entferne die eeprom.h in deinem 
Projekt.

'memcopy ' wird soweit ich das auf die Schnelle gesehen habe, nicht in 
der Lib verwendet. Sollte memcopy wirklich benötigt werden ist die 
STRING.H einzubinden #include <string.h>

Gruß G.G.

von Ingo (Gast)


Lesenswert?

Fabian O. schrieb:
> Was spricht denn gegen#include <avr/eeprom.h>aus der normalen avr-libc?
>
> Funktioniert bei mir auch einwandfrei mit dem Xmega.
>
> http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

So mach ich das auch, ohne Probleme. Aber offensichtlich wollen die 
Herren das ja komplizierter haben.

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
Noch kein Account? Hier anmelden.