EEPROM mega8 - Definition von Variablen Schreibzugriff?

OP #1472347
Hallo,
ich hab mich grad zum ersten mal am lesen/schreiben aus dem/in das 
EEPROM vom ATMega8 probiert.
Ich benutze den Beispielcode aus dem GCC-Tutorial, was auch wunderbar 
funktioniert, nur eins ist mir auch nach längerem Suchen und lesen nicht 
ganz klar:
Ich definiere vor int main()...
die Variablen:
1
uint8_t eeCodeA EEMEM ;
2
uint8_t eeCodeB EEMEM ;
3
uint8_t eeCodeC EEMEM ;
4
uint8_t eeCodeD EEMEM ;
In der Hauptschleife kommt dann als erstes folgender Code,
um bei leerem EEPROM Standardwerte in selbiges zu schreiben.
1
//testen, ob werte im eeprom liegen, wenn nicht, standardwerte schreiben
2
  uart_puts("EEPROM wird gelesen \n");
3

4
  #define EEPROM_DEF 0xFF
5
    
6

7
    if ( ( codeA = eeprom_read_byte(&eeCodeA) ) == EEPROM_DEF) 
8
  {
9
    uart_puts("EEPROM leer - standardwerte schreiben \n");
10
        codeA = 1;
11
    codeB = 7;
12
    codeC = 5;
13
    codeD = 2;
14
    eeprom_write_byte(&eeCodeA, codeA);
15
    eeprom_write_byte(&eeCodeB, codeB);
16
    eeprom_write_byte(&eeCodeC, codeC);
17
    eeprom_write_byte(&eeCodeD, codeD);
18

19
    }
20

21
  else
22
  {
23
    uart_puts("EEPROM NICHT leer - werte werden ausgelesen. \n");
24
    codeA = eeprom_read_byte(&eeCodeA);
25
    codeB = eeprom_read_byte(&eeCodeB);
26
    codeC = eeprom_read_byte(&eeCodeC);
27
    codeD = eeprom_read_byte(&eeCodeD);
28
  }

Nun die eigentliche Frage: Ist die Definition vor der main-Funktion 
schon ein Schreibzugriff aufs EEPROM oder wird hier wirklich nur ins 
EEPROM geschrieben, wenn es leer (also 0xFF) ist?

Im ersten Fall würde ich ja nach jedem Reset/Stromausfall unnötigerweiße 
ins EEPROM schreiben, was ja nicht so schön wäre.


Mfg
Martin
Die Definition sagt dem Compiler nur, dass es diese Variable gibt, und 
dass sie im EEPROM liegt. Ein Schreibzugriff ist damit nicht verbunden. 
Würdest du bei der Defintion einen Wert angeben, würde der in der 
.eep-Datei landen, die du dann per ISP in den AVR schreiben könntest.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.