www.mikrocontroller.net

Forum: Compiler & IDEs struct und eeprom Auslesen Prob


Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

laut dem Tut vergibt der AVR-GCC die Var. Adressen ja scheinbar 
zufällig.

Daher wollte ich einen Test einbauen ob meine struct auch da stehen wo 
ich sie vermute...(bzw. ob überhaupt schonmal gespeichert wurde)
static struct config_anzeige_struct anzeige[16];
static struct config_anzeige_struct anzeige_eemem[16] EEMEM;

static struct config_pfeil_struct pfeil;
static struct config_pfeil_struct pfeil_eemem EEMEM;

...


extern void config_nach_eemem()
{
  eeprom_write_block(anzeige,anzeige_eemem,sizeof(anzeige));
  eeprom_write_block(&pfeil,&pfeil_eemem,sizeof(pfeil));
}

extern void config_aus_eemem(void)
{
  //Wenn gültiger Wert im EEMEM
  if(eeprom_read_byte(&anzeige[0].aktiv) < 2) 
      eeprom_read_block(anzeige,anzeige_eemem,sizeof(anzeige));
 //Ganze struct auslesen

 //Wenn gültiger Wert im EEMEM
  if(eeprom_read_byte(&pfeil.aktiv) < 2)
    eeprom_read_block(&pfeil,&pfeil_eemem,sizeof(pfeil));
 //Ganze struct auslesen

}

Die Variable aktiv gibts in beiden Struct als uint8_t, diese kann nur 0 
oder 1 als Wert annehmen...

ist das so richtig? oder stimmt da was noch nicht? Weil irgendwie tut 
das nicht... kA ob er überhaupt speichert oder liest...

Danke für alle Antworten.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nix Nix wrote:

> das nicht... kA ob er überhaupt speichert

das lässt sich doch leicht rausfinden.
Jedes Brennprogramm kann auch den Inhalt des EEPROM auslesen.
Das machst du mal und siehst nach was so in den Bytes drinnsteht.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das sieht gut aus...
:2000000001009CFF64006C4930000000000000011C9CFF64006C5347617300000000011DE7
:200020009CFF64006C534769657200000001039CFF64006C493300000000000000049CFFF1
:20004000640027000000000000000000059CFF640027000000000000000000069CFF6400E5
:2000600027000000000000000000079CFF640027000000000000000000089CFF64002700FE
:200080000000000000000000099CFF6400270000000000000000000A9CFF64002700000001
:2000A0000000000000000B9CFF6400270000000000000000010964009600394261740000BB
:2000C000000000011E9CFF640039534E69636B000000011F9CFF64003953526F6C6C0000AD
:2000E00000010F9CFF6400394931350000000000010003DC05011C011C00006400011C0069
:20010000006400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:20014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:20016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt
  if(eeprom_read_byte(&anzeige[0].aktiv) < 2) 
      eeprom_read_block(anzeige,anzeige_eemem,sizeof(anzeige));
vielleicht
  if(eeprom_read_byte(&anzeige_eemem[0].aktiv) < 2) 
      eeprom_read_block(anzeige,anzeige_eemem,sizeof(anzeige));
?

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
omg...

jetzt tuts Vielen Dank!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.