Forum: Mikrocontroller und Digitale Elektronik Struct ins EEprom sichern


von Bernd (Gast)


Lesenswert?

Kann man so ein Struct:
1
struct{
2
  unsigned Eingang:1;
3
  unsigned Ausgang_1:1;
4
  unsigned Ausgang_2:1;
5
  unsigned Ausgang_3:1;
6
}flags;
 ins EEProm sichern um es beim nächsten Start wieder laden zu können?

von c-hater (Gast)


Lesenswert?

Bernd schrieb:
> Kann man so ein Struct:
>
1
> struct{
2
>   unsigned Eingang:1;
3
>   unsigned Ausgang_1:1;
4
>   unsigned Ausgang_2:1;
5
>   unsigned Ausgang_3:1;
6
> }flags;
7
>
>  ins EEProm sichern um es beim nächsten Start wieder laden zu können?

Natürlich.

von Dieter H. (kyblord)


Lesenswert?

warum sollte das nicht gehen? es sind einfach paar bits die geschrieben 
werden, genau die liest du einfach wieder aus und interpretierst sie als 
dein struct...

von Bernd (Gast)


Lesenswert?

Dieter H. schrieb:
> es sind einfach paar bits die geschrieben
> werden

Und mit welchem Befehl lässt sich das machen?

eeprom_update_byte will keinen struct sondern eine int-Variable.

von EAF (Gast)


Lesenswert?

Bernd schrieb:
> eeprom_update_byte will keinen struct sondern eine int-Variable.

Ich kenne dein eeprom_update_byte nicht!
Aber da es ein byte im Namen hat kann ich mir nicht vorstellen, dass es 
int sonderlich gut schreibt.

Zudem passt die Struktur doch in ein Byte, oder?

von Harald (Gast)


Lesenswert?

@Bernd, wie sollten Dir die Leute vernünftig helfen? Es fehlen jegliche 
Angaben zum System.

Evtl. so in der Art:

uint8_t * ptr = &flags;
for (i = 0; i < sizeof(flags); i++;)
{
  eeprom_update_byte(i, *ptr);
}

Nur eine Vermutung…

von Bernd (Gast)


Lesenswert?

Harald schrieb:
> Es fehlen jegliche
> Angaben zum System.

Es geht um ein C Projekt im Atmel Studio für einen Tiny2313A

Die EEProm Routinen sind per #include <avr/eeprom.h> eingebunden.


Und jetzt soll das nicht mal 1 Byte große Struct ins EEProm in die erste 
Zelle.
Aber wie lautet die Syntax für eeprom_write_ oder eeprom update_ oder 
eeprom_write_block?

und wie wird das Struct wieder aus dem EEProm gelesen?

von Veit D. (devil-elec)


Lesenswert?

Hallo,

also ich würde mir das einfacher machen und die Bits in ein Byte 
schieben. Dann hätte ich ein sauberes Byte für die EEprom Geschichte. 
Den Aufwand mit den Bits "umformen" hast du oder so. Überlege dir was in 
der Handhabung einfacher ist.

von foobar (Gast)


Lesenswert?

> Und jetzt soll das [...] Struct ins EEProm in die erste Zelle.
> ...
> Und mit welchem Befehl lässt sich das machen?

Mit eeprom_read/write/update_block:
1
#include <avr/eeprom.h>
2
3
struct { ... } flags;
4
5
   ...
6
   eeprom_read_block(&flags, 0, sizeof(flags));
7
   ...
8
   eeprom_update_block(&flags, 0, sizeof(flags));
9
   ...

Beitrag #6785387 wurde von einem Moderator gelöscht.
von Bernd (Gast)


Lesenswert?

foobar schrieb:
> Mit eeprom_read/write/update_block

Vielen Dank, damit funktioniert es wie gewünscht.

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.