Du Schreibts was von Word-Werten aber gleichzeitig von 0-100 (Byte)??
Wie man mit dem EEPROM arbeitet kannst Du hier nachlesen : https://www.roboternetz.de/wissen/in...und_I2C_EEprom
Hallo
Ich versuche nun schon länger verzweifelt Word Werte in einem 24LC256 zu speichern. Das ganze läuft zwar unter Testbedingungen ( Zahl von 1 bis 100 schreiben und danach einlesen) aber in meinem Anwendungsfall komme ich einfach auf keine Lösung.
Das ganze soll folgendermaßen aussehen(grob):
Meine Fragen:Code:Goto Lesen 'Hauptschleife: Do If Schreibbedingung Goto Schreiben Loop Schreiben: Wert soll im EEPROM gespeichert werden. Wert soll im EEPROM an nächster speicherstelle gespeichert werden. Wenn EEPROM voll beginne an erster Speicherstelle. usw. Lesen: Wert lesen der als letztes geschrieben wurde
1. Wie kann ich das ganze realisieren? Welche Adressen muss ich wie hochzählen etc.?
2. Wieviele solcher werte kann ich im 24LC256 speichern bis er einmal voll ist? (16000???).
Danke für eure Hilfe
Du Schreibts was von Word-Werten aber gleichzeitig von 0-100 (Byte)??
Wie man mit dem EEPROM arbeitet kannst Du hier nachlesen : https://www.roboternetz.de/wissen/in...und_I2C_EEprom
Zitat von masabuana
Ich sag ja dass in diesem Fall wo ich die ganze sache in einer Schleife laufen lass funktioniert es! Soweit kann ich alleine schon denken und Suchfunktion benutzen... Um mein Problem nochmal ganz klar zu machen:
Woher weiss ich wenn ich z.B. nach Stromweg wieder einschalte wo ich 1. meinen Wert lesen muss und 2. wo ich weiterschreibe. Das ganze soll sozusagen wie ein Endlosbandrecorder funktionieren.
Da wirst Du wohl eine Datenzuordnungstabelle basteln müssen in der steht wo Du zuletzt gespeichert und gelesen hast. Das könnte man z.B. in den ersten 2 Bytes des EEproms machen und da immer die Adresse ablegen wo zuletzt gespeichert wurde. Hat den Nachteil das die ersten Bytes sehr oft beschrieben werden also müßte man den Speicherbereich größer machen über die ersten 100 Bytes z.B.
Hi,
also hab bisher noch nicht mit EPROMS gearbeitet aber kannst du nicht einfach eine Addresse reservieren, wo du dann deinen letzten Schreibvorgang speicherst (also die Addresse davon)? Dann könntst du vor dem nächsten Schreib/Lese-Vorgang einfach die Addresse auslesen und an der nächsten Stelle weiter schreiben bzw. an der Stelle lesen.
mfg milkbubi
edit: Da war wohl jemand schneller ^^
Dann muss er doch wieder wissen, wo er gespeichert hat, wo er was gespeichert hatZitat von Rofo88
Oder versteh ich das grad falsch?
@milkbubi
Das Problem is das man ja im EEprom ned unendlich oft Schreiben kann. Wenn man immer nur in die selbe Adresse schreibt wird die ja zuerst ausfallen. Also nimmt man einen größeren Bereich wo die letzten Adressdaten abgespeichert werden und wenn man neue Daten Speichert schreibt man die Aktuellen Daten in einen anderen Bereich (z.B. Byte 2-3) und löscht den alten Bereich (z.B.0-1). Hat man durch den Spannungsausfall die Schreibstelle im SRAM verloren sucht man halt die ersten 100Byte im EEPROM durch wo in denen ne Adresse steht. So kann man den Schreibzugriff etwas verteilen.
Eleganter wäre es den µC vor Spannungsausfall etwas zu schützen, dass er die Daten noch schnell Speichern kann wenn die Versorgungsspannung ausfällt. Dieses Thema wurde ja schon mehrmals im Roboternetz behandelt. Da könnte man dan immer einen festen Bereich nehmen der halt nur bei nem Spannungsausfall beschrieben wird.
Ich hatte das ungefähr so gedacht:
Ich weiss dass mein zu speichernder Wert immer grösser wird. Beim auslesen
lese ich einfach jeden Wert aus und vergleiche ihn mit dem Vorgänger. Den größten Wert nehm ich und schreib ab da weiter.
Kann mir dabei keiner behilflich sein?
Durch willst den ganzen Speicher durchforsten nach dem größten Wert? Ich weiß zwar nicht ob das so üblich ist aber wenn dus so machen willst dann mach es doch so wie du geschrieben hast. Oder hast du Probleme den größten Wert zu finden?
Lesezeichen