> steht, man sollte an der Position 0 nichts in den eeprom schreiben.
> Weshalb?
Der hauptsächliche Grund ist der, dass wenn der uC Amok läuft und seine
Pins unkontrolliert hin und her schaltet und dadurch im EEPROM einen
Schreibvorgang auslöst die Adresse 0 die wahrscheinlichste ist die
überschrieben wird, einfach weil es die ist die es erwischt wenn keine
Adresse übergeben wird. Amok läuft der uC wenn er nicht richtig resettet
wird, oder zu spät, er also schon los läft, die Resetschaltung aber erst
später einen ordendlichen Reset auslöst. Oder auch beim Abschalten wenn
die Spannung zu langsam sinkt und damit zu lange in einem Bereich bleibt
in dem der uC nur noch "halb" funktioniert.
Evtl. auch ein Grund ist der dass das EEPROM evtl. Mist baut wenn die
Spannung beim Einschalten zu langsam hoch kommt und der chipinterne
Power-On Reset damit nicht zurecht kommt. Auch da ist bei einem
versehentlichen Schreibzyklus die Adresse 0 die wahrscheinlichste die es
erwischen könnte.
> Die Daten werden in dem Fall aber auch an Position 0 geschrieben.
> Und, kann ich mich darauf verlassen daß der Compiler bei 0 anfängt?
> Ich habe nämlich in einem anderen Bereich noch Daten manuell eingefügt.
Du kannst als erste Variable eine Dummyvariable definieren deren Wert
unwichtig ist.
Ob du dich drauf verlassen kannst dass die Dummyvariable auf Adresse
Null kommt? Und dass der Compiler immer bei Null anfängt?
Nein.
Aber er wird es wahrscheinlich so machen. Du kannst es ja im Compilat
überprüfen ob das so ist. Bei jeder neuen Version des Compilers könnte
es aber anders sein. D.h. Code der auf solche Eigenschaften aufbaut ist
nicht wirklich portabel. Aber solange du nicht den Compiler wechselst
und nach dem compilieren manuell prüfst ob das mit den
EEPROM-Speicherbereichen so gelaufen ist wie du es braucht kannst du das
schon so machen.
HTH
Randy