Forum: Mikrocontroller und Digitale Elektronik eeprom_write_block


von Volker G. (vg1)


Lesenswert?

Ich möchte gerne einen Block ins EEPROM schreiben (ATMEGA8), irgendwo 
ist aber ein haken....
1
include <avr/eeprom.h>
2
3
typedef struct {
4
  unsigned char    cInMask;
5
  unsigned char    cOutMask;
6
  unsigned int     iCounter[5];
7
} t_env;
8
9
t_env g_env;
10
t_env ee_env EEMEM;
11
12
13
void WriteEE()
14
{
15
  eeprom_write_block ( &g_env, &ee_env, sizeof (t_env) ); // Zeile A
16
  PORTD |= 0x01; // LED am Port (ein)
17
}
18
19
int main (void)
20
{
21
  DDRD= 0x01; // 1 ist ein ausgang
22
  PORTD = 0x00; // LED am Port (aus)
23
  
24
  g_env.cInMask= 0x12; // irgendwelche werte....
25
  g_env.cOutMask= 0x34;
26
  g_env.iCounter[0]= 0x56;
27
  
28
  WriteEE(); // und schreiben
29
  
30
  while (1) {
31
  } // endlos
32
}

Nun müssten die Werte eigentlich im EEPROM liegen und die LED am PORTD 
ansein, ist sie auch wenn ich die "Zeile A-> eeprom_write_block" 
auskommentiere. sonst bleibt sie aus, kann mir jemand sagen was ich 
falsch mache?
MfG VG1

: Verschoben durch User
von Matthias K. (matthiask)


Lesenswert?

>eeprom_write_block ( &g_env, &ee_env, sizeof (t_env) ); // Zeile A

Versuchs mal so:
1
#include <avr/pgmspace.h>       // PROGMEM-Funktionen 
2
...
3
4
struct t_env {
5
  unsigned char    cInMask;
6
  unsigned char    cOutMask;
7
  unsigned int     iCounter[5];
8
};
9
10
struct t_env g_env;
11
struct t_env ee_env EEMEM;
12
13
...
14
eeprom_write_block ( &g_env, &ee_env, sizeof (g_env) );

von Volker G. (vg1)


Lesenswert?

Hallo,
es funktioniert jetzt. Habe einen anderen atmega8 genommen ??
(Beide waren neu...)

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.