Forum: Mikrocontroller und Digitale Elektronik AT 45DB 041B- Speichern einträge durchsuchen


von Andre (Gast)


Lesenswert?

Hallo ich bin deibei eine Transpondersteuerung über ATTiny2313-20 zu
realisieren und möchte dazu gerne AT 45DB 041B als Speicher verwenden
allerdings stellt mich das vor neue Probleme, er soll sowohl die
Transponder wie auch einen Ereignislog beinhalten, letzteres soll als
Ringspeicher realisiert sein.

Kann mir jemand sagen wie ich das am besten mache, dass ich die
transponder mit beschreibung dort speichere.
Also <Transponderidentification><Beschreibung> als Beispiel:
      1234567890                 Herr Müller
das muss ich reinschreiben, und dann wenn der Transponder  1234567890
kommt den Eintrag möglichst schnell wiederfinden.
Wenn ihr wisst wo ich Beispiele für die Ansteuerung finde, immer her
damit :)

Bin für jeden Anregung dankbar, ach und überfordert mich bitte
nicht...

Andre

von Peter Z. (Gast)


Lesenswert?

Hallo,

also wenn die daten eine fest definierte maximale länge haben kannst
sie ja in gleichen abständen im Speicher abspeichern.
z.B. erster datensatz 0x00, zweiter 0x10 usw....
dann springst die adressen durch liest die gespeicherte ID aus und
vergleichst sie.

Sofern ich dich richtig verstanden habe.... ;-)

von Martin Thomas (Gast)


Lesenswert?

Aus dem Stehgreif (Entwicklung eines Datenloggers mit Dataflash ist
schon eine Weile her...):
Als Einstieg vielleicht erstmal die AppNote "Using Atmel's
DataFlash" lesen, dann ueberlegen, wie man die
"Transponder-Namen-Tabelle" am besten in dem "Seitenorientierten"
Speicher unterbringt. Dann Hilfsfunktionen basteln, mit denen man von
einer Datensatznummer die Seitenummer/Bytenummer bestimmen kann. Damit
dann beim Lesen durch die Tabelle iterieren zum Schreiben eines
Datensatz ebenfalls Seite/Byte bestimmen und read-modify-write. Also
wie von Peter Z. beschrieben aber mit "Zwischenrechnung". Wenn sich
die Daten in der Transpondertabelle oft aendern Anmerkungen zu "page
rewrite" in der Appnote beachten.
Beim Ringpuffer braucht man auf rewrite nicht mehr zu achten, da die
Daten in aufeinanderfolgende Flashseite geschrieben werden. Man
benoetigt irgend eine Art Information, um beim Kaltstart wieder die
"letzte Position" zu finden um aktuelle Daten anzuhaengen bzw. die
aeltesten Daten zu ueberschreiben. Da fuer jeden Datensatz in der
Zugangskontrolle wohl ohnehin ein Zeitpunkt/Timestamp gespeichert wird,
kann man diese Information nutzen (seek hinter Datensatz mit "jungesten
Zeitstempel" beim Schreibn, seek auf Datensatz mit aeltestem
Zeitstempel vor dem Auslesen).

Hoffe, es hilft zumindest etwas beim Einstieg. Nur Vorschlag, man kann
das Ganze sicher auch voellig anderes angehen.

Martin Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.