www.mikrocontroller.net

Forum: Compiler & IDEs Liste der letzten 5 Einträge einlesen.


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mich beschäftigt nun schon 3 Tage folgendes Problem.
Ich möchte im EEprom 5 Einträge abspeichern und mir irgendwie 
erkenntlich machen welcher Eintrag denn immer der letzte war.

Ein Eintrag hat dabei folgenden Aufbau:
struct sMSG {
  unsigned bNewMsg:1;
  char from[2];
  char to[2];
  char msg[21];
};

davon habe ich nun 5 Stück angeleg...
struct sMSG msgBUF[5];

gespeichert wird wie folgt...
  msgBUF[byt_msg_buf_pos] = msgIN;
  byt_msg_buf_pos++;
  if (byt_msg_buf_pos > 4) byt_msg_buf_pos = 0;

Das klappt soweit auch alles. Hurra :-)

Nun möchte ich aber wissen welcher Eintrag der letzte ist damit man den 
dann immer als erstes ausgeben kann. Ok byt_msg_buf_pos sagt mir das 
solange ich den Strom nicht abschalte. Doch wie kann ich mir das im 
EEProm im Datensatz merken damit ich eine Zelle nicht ständig belaste.

Ich hoffe ich konnte meine Frage einigermaßen beschreiben... ;-)



MfG AVRli...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lasse einfach in jedem Datensatz ein Zählbyte mitlaufen.
Wenn es im nächsten Datensatz nicht +1 des aktuellen ist, dann ist der 
aktuelle der letzte.


Peter

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder speichere byt_msg_buf_pos auch im EEPROM ab

Autor: EEp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh Dir mal dieses Dokument an:
"AVR101: High Endurance EEPROM Storage"
[Titel] http://atmel.com/dyn/resources/prod_documents/doc2526.pdf

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
That's is!!!

Man man man... also ehrlich das ist genial!
Ich mache es so wie Peter Dannegger es beschrieben hat.

In dem Dokument wird es nochmal ausführlich behandelt, denke aber das 
Prinzip ist das gleiche.

>
> Oder speichere byt_msg_buf_pos auch im EEPROM ab
>

Naja das wollte ich ja vermeiden denn dann ist diese Stelle die am 
ehesten kaputt geht. So verteile ich das auf meine Einträge somit sind 
dann 5x mehr Schreibzyklen möglich als bei der "bequemen" Variante.

Vielen Dank!
MfG AVRli

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.