eeprom_write_block

OP #1533883
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
#1534012
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) );

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