C EEPROM Anfängerproblem

AVRuser

Neues Mitglied
20 Apr 2011
217
0
0
Niedersachsen
Sprachen
BascomAVR, ANSI C
Hallo Leute,

Ich habe zwei bytes in meiner Anwendung, die ich im EEPROM speichern muss.
Nach lesen einiger, teils wiedersprüchlicher Tutorials, ist dies herausgekommen:

Code:
#include <avr/eeprom.h>

uint8_t eebyte1 EEMEM;

byte1 = eeprom_read_byte(&eebyte1);

//Hier das Programm, wo sich ein Wert geändert hat (Bsp.: byte = 127; )//

eeprom_write_byte(&eebyte1, byte1);
Das auslesen scheint zu funktionieren, es kommtr ein 0xFF raus, was ja nach der Programmierung normal ist.
Allerdings scheint der neue Wert nicht eingeschrieben zu werden.

Kennt sich da jemand mit aus und kann mir sagen was das Problem ist, oder wenigstens ein gutes Tutorial?
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.293
145
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo AVRuser,

dies sollte natürlich in eine Funktion ...

Code:
uint8_t byte1;
byte1 = eeprom_read_byte(&eebyte1);

byte1 = 123;
eeprom_write_byte(&eebyte1, byte1);
und sollte auch eigentlich funktionieren.

Poste vielleicht auch mal mehr von deinem Programm.

Nach einem ChipErase sind die Daten im Eeprom gelöscht, also 0xFF (es sei denn der Mikrocontroller hat ein Fusebit EESAVE welches programmiert ist)

Dirk :ciao:
 

AVRuser

Neues Mitglied
20 Apr 2011
217
0
0
Niedersachsen
Sprachen
BascomAVR, ANSI C
Das Prog ist ziemlich unübersichtlich bzw. komplex, aber mein Beispiel ist was den EEPROM
angeht auch schon alles...

Hat vieleicht jemand ein funktionierendes Beispiel?
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.293
145
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo AVRuser,
Das Prog ist ziemlich unübersichtlich bzw. komplex, aber mein Beispiel ist was den EEPROM
angeht auch schon alles...

Hat vieleicht jemand ein funktionierendes Beispiel?
Dein Beispiel funktioniert bereits.

Was ich nicht sehen kann, ist dein weiteres Programm drumherum, deshalb kann ich nur vermuten ...


  • du hast byte1 vor eeprom_write_byte() keinen Wert bzw 0xFF zugewiesen und/oder
  • bei der Prüfung mit if-Anweisung (falls du so prüfst) hast du im Ausdruck keinen Vergleichsoperator ("byte1==0xFF") sonder eine Zuweisung ("byte1=0xFF"), was ein WAHR ergibt.


Weiter fällt mir nichts ein, da müsste ich schon ein bisschen mehr Sourcecode sehen.

Dirk :ciao:
 

AVRuser

Neues Mitglied
20 Apr 2011
217
0
0
Niedersachsen
Sprachen
BascomAVR, ANSI C
Ups, lag wohl wirklich nicht bei den EEPROM- Befehlen selber, habe die ganze Zeit nur bei denen geschaut...

Na ja, wie auch immer: Danke, für deine Hilfe!
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)