Forum: Mikrocontroller und Digitale Elektronik EEprom beschreiben und auslesen, nur 255 wird angezeigt


von Matthias H. (maethes26)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

könnt ihr mir bitte sagen, warum der Wert 25 nicht im EEProm 
abgespeichert wird?

Es wird nur der Wert 255 ausgegeben. Das sagt mir, dass dies der 
Startwert ist und der Wert 25 nicht geschrieben wurde.

Muss ich bei der Übertragung des Programms noch etwas beachten- siehe 
Bild

das Programm nicht nur in den Flashspeicher übertragen, sondern auch in 
den EEProm? Das habe ich auch versucht- siehe Bild- kein Erfolg

 Vielen Dank im Vorraus für Eure Hilfe.


Viele Grüße, Matthias.

von Frank (Gast)


Lesenswert?

Hast du das EESAVE - Fusebit eventuell gesetzt ?

von Karl H. (kbuchegg)


Lesenswert?

Matthias H. schrieb:

> das Programm nicht nur in den Flashspeicher übertragen, sondern auch in
> den EEProm? Das habe ich auch versucht- siehe Bild- kein Erfolg

Du musst schon etwas ins EEPROM übertragen. Aber das ist nicht das 
Programm. Die Toolchain hat dir eine Datei mit der Endung EEP erstellt. 
Die muss ins EEPROM gebrannt werden.

von Matthias H. (maethes26)


Lesenswert?

Vielen Dank für Deine Hilfe!!

Das stand leider nirgends und selber bin ich nicht drauf gekommen.


Viele Grüße und noch einen schönen Tag wünsche ich.

von Matthias H. (maethes26)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

wie verhält es sich mit dem Schreiben von EEPromdaten aus dem Programm 
heraus?

Das funktioniert auch noch nicht.

wenn das Prgramm so  aussieht, dann zeigt er mir den Wert 99 an.


myByte = 99;
eeprom_write_byte(&eeFooByte, myByte); // schreiben

myByte=0;


myByte = eeprom_read_byte (&eeFooByte);

lcd_ini();
lcd_writezahl(2,1,myByte);


das geht dann,

wenn ich dann aber die Zeilen herausstreiche,
myByte = 99;
eeprom_write_byte(&eeFooByte, myByte); // schreiben

da ja schon im ebend gezeigten Code in den EEProm geschrieben wurde, 
dann zeigt er mir im unten stehenden Code nur noch 255 an.

den unten stehenden Code schreibe ich ja nur in den Flash.

kann es sein, das das Häkchen in AVR Studio5 "Erase device before 
programming" nicht gesetzt werden darf? -siehe Bild

ohne Häkchen erhalte ich aber eine böse Fehlermeldung, wieso eigentlich?


Könnt ihr mir bitte sagen was daran jetzt nicht stimmt?

Dann habe ich es hoffentlich verstanden.

Viele Grüße,

Matthias.


anbei vollständiger Code, wo nur 255 als EEPromwert ausgegeben wird


#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#define LCD_Port PORTB        //PORTB fürs LCD muss im Hauptprogramm 
noch deklariert werden
#include "E:\Eigene Dateien\Dropbox\Atmel AVR\AVR 
Programme\1aVorlagen\lcd_tools2.c"
#include <stdint.h>
#include <avr/eeprom.h>

/* Byte */
uint8_t eeFooByte EEMEM;



int main(void)   //zur Konfiguration des Test- Programms
{
DDRB=0xff;   //LCDPORT  als Ausgang
uint8_t myByte=0;


//myByte = 99;
//eeprom_write_byte(&eeFooByte, myByte); // schreiben

myByte=0;


myByte = eeprom_read_byte (&eeFooByte);

lcd_ini();
lcd_writezahl(2,1,myByte);



 while (1);

von Stefan P. (form)


Lesenswert?

- Ohne gesetztes EESAVE Fusebit wird bei einem (benötigtem!) ChipErase 
das EEPROM gelöscht.

- Bedenke das bei jedem Kompilieren völlig andere Adressen für deine 
EEMEM Variable benutzt werden können.

von Matthias H. (maethes26)


Lesenswert?

Hallo,

vielen vielen Dank Euch allen nochmals. :-)

Jetzt funktioniert alles.

Es lag an dem nicht gesetzten Fusebit. Das wußte ich auch nicht und war 
mir neu.

Viele Grüße,

Matthias.

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.