EEPROM-Wert wird nicht gespeichert

Gast #571342
Lesenswert?

Morgen,

irgendwie wird mein EEPROM-Wert nicht gespeichert. Als Controller 
verwende ich einen Atmega88 und den GCC Compiler mit dem AVR-Studio.

Ich ich habe die EEPROM-Variable folgendermaßen deklariert:

volatile uc_8 Just _attribute_ ((section (".eeprom")));

Im AVR-Studio habe ich unter Memory Settings folgende Definitionen 
gemacht:

Memory Type: EEPROM / Name: .eeprom / Adress: 0x380

So müsste die Variable doch an der Speicheradresse 0x380 gespeichert 
werden.

Nach einem Reset stehen dort auch die richtigen Werte, nur sobald die 
Spannung einmal abgeschaltet und wieder eingeschaltet wird, ist der Wert 
futsch.

Kann mir einer sagen, woran das liegen kann?

Gruß


#571353
Lesenswert?

Was ist damit:
1
#include <avr/eeprom.h>
2

3
uint8_t test EEMEM = 5;
4
uint8_t check EEMEM;
5

6
int main()
7
{
8
  uint8_t i = eeprom_read_byte( &test );
9
  eeprom_write_byte( &check, i );
10

11
  while( 1 )
12
    ;
13

14
  return 0;
15
}

Einfach im AVR Studio ein neues Projekt anlegen.
Keine Memory Settings oder sonstwas angeben.
Gast #571370
Lesenswert?

Wie kann ich der Variablen "check" direkt einen Wert zuweisen?

Mit eeprom_write_byte( &check, 128 ); klappt dass nicht.

Auch

unsigned int z = 128;
eeprom_write_byte( &check, z );

klappt nicht...
#572192
Lesenswert?

Günni wrote:
> Ist es eigentlich möglich, einen bestimmten Speicherbereich des EEPROMS
> auszulesen, also nur mit angabe der Adresse?

Meinst du jetzt per Programm oder willst du über deinen
ISP-Programmer auslesen.

Per Programm:
Klar. Mach ein unsigned char Array in der benötigten Größe
und benutze eeprom_read_block()
Gast #575570
Lesenswert?

Hallo,

irgendwie hab ich bei mir festgestellt, das der Wert nicht im EEPROM 
sondern im SRAM abgelegt wird.

Ich benutze den JTAGICEmkII mit dem AVR-Studio. Im Watch Fenster wird 
die Variable mit der Location SRAM angezeigt. Wie kann das sein?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren