eeprom adressierung

Gast #3851268
Lesenswert?

ich möchte das eeprom Inhalt eines AVRs nach einem bestimmten Wert 
durchsuchen. Kann ich den Scanvorgang durch das eeprom einfach wie folgt 
durchführen?
1
for (int i=1;i<1025;i++)    //bytes 1 bis 1024
2
{
3
    read_eebyte = eeprom_read_byte((uint8_t *)i);
4
    check_eebyte(read_eebyte);
5
}
Gast #3851313
Lesenswert?

holger schrieb:
> Wozu? Normalerweise weiss man wo im EEPROM welcher
> Wert abgelegt ist. Das was du da machen möchtest ist Unsinn.

Stell dir folgende Szenarien vor:

Könnte man Parameter im EEPROM per avrdude ändern, das Programm im Flash
einfach unverändert neu starten und die Paramter neu einlesen?

Könnte man Parameter zur Laufzeit im EEPROM verändern und zB nach einem 
Reset neu einlesen?

Unsinn ist was anderes
#3851338
Lesenswert?

holger schrieb:
> Das ist immer noch Unsinn. Wenn du weisst das
> dein Wert 3 ist macht es keinen Sinn nach einer
> 3 im EEPROM zu suchen. Das ist kompletter Schwachsinn.

Ist es nicht. Mit strlen suche ich in einem String auch nichts anderes, 
als die abschliessende Null. Was mich aber interessiert, ist die Länge 
des Strings und nicht die Null selbst. Hier geht es vielleicht um ein 
ähnliches Problem.
#3851339
Lesenswert?

Hallo,
> holger schrieb:
> Wozu? Normalerweise weiss man wo im EEPROM welcher
> Wert abgelegt ist. Das was du da machen möchtest ist Unsinn.
kann sein, so es sich um einen Parameterspeicher handelt.
Ist aber nicht sicher und kann auch anders laufen.

Wenn man z.B. Messwerte in einem EEPROM ablegt, braucht man 
üblicherweise die Position des letzten Eintrages.
Wer das mit einem Pointer macht, der dann normal immer auf der gleichen 
Stelle geschrieben wird, schreibt diese Zelle systematisch tot.

Also schreibt man sequentiell in den EEPROM und setzt ans Ende eine 
Kennung für EoF.
Diese muß man dann nach einem Restart natürlich suchen.

Bei so einem kleinen EEPROM mit nur 1k wird das aber zugegeben mit dem 
Messwerte loggen wohl kaum der der Fall sein.
Gruß Öletronika
Gast #3851438
Lesenswert?

wenn ich mit der funktion eeprom_write_byte ab Stelle 1020 eine 
Zeichenfolge von 10 Zeichen in den Speicher schreibe, kann ich diese 
anschließend korrekt lesen. Wie kann das sein, wo werden die bytes ab 
1024 hingeschrieben?
Gast #3851456
Lesenswert?

holger schrieb:
> Wenn du weisst das
> dein Wert 3 ist macht es keinen Sinn nach einer
> 3 im EEPROM zu suchen. Das ist kompletter Schwachsinn.

Kann es sein, dass du nicht weißt, was eeprom_read_byte() eigentlich 
macht?

Wenn du aber nur ein Troll bist, dann schau dir den Unterschied
von "das" und "dass" genauer an. "ß" macht auch manchmal Sinn, ebenso
die Verwendung von Beistrichen.

Franzl schrieb:
> Wie kann das sein, wo werden die bytes ab 1024 hingeschrieben?

Ich nehme an, du nimmst an, dein EEPROM ist ein KiB groß.
Könnte gut sein, dass du ab 1024 wieder bei 0 beginnend
im EEPROM "weiter"(über)schreibst.
#3851638
Lesenswert?

U. M. schrieb:

> Bei so einem kleinen EEPROM mit nur 1k wird das aber zugegeben mit dem
> Messwerte loggen wohl kaum der der Fall sein.
> Gruß Öletronika

Hängt davon ab was man misst. Ich hab einen Temperatur&Feuchte-logger 
gebaut der alle 30 min misst. Da passen dann fast 2 Wochen logging 
rein...

Da hab ich auch '0xED' für "End of day" in den EEPROM geschieben, damit 
ich die Werte einordnen kann.

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