Hallo, bin es mal wieder. Bin immer noch dabei meine Daten im Flash abzulegen. Benutze das data Flash AT45DB081D. Hätte dazu nochmal 2 Fragen. Weiß jemand ob man dem Buffer sagen muss das er voll ist und seine Daten in eine page schreiben soll, oder weiß der Buffer selber wann er komplett voll ist und schickt dann mit dem entsprechenden opcode die Daten in eine page? Was mach ich denn mit dem startbyte das für den Buffer bestimmt ist? Werden die Daten in den Buffer wenn er entleert wurde immer vom startbyte 0 beschrieben und merkt sich der Buffer den davorigen Stand und schreibt die Daten ab den davorigen noch leeren restlichen bytes? Um immer den aktuellen Stand der beschriebenen pages zu bekommen, also bis zu welcher page schon Daten geschrieben wurden, muss ich irgendwie einen Zeiger mithinein legen der bei jeder Beschreibung einer page hochzählt um nach einen Spannungsausfall immer noch den aktuellen Stand zu haben. Wie würdest ihr das realisieren? Kann mir da jemand weiterhelfen?Würd mich freuen. Grüße
Hallo, Steff wrote: > Benutze das data Flash AT45DB081D. > Hätte dazu nochmal 2 Fragen. > Weiß jemand ob man dem Buffer sagen muss das er voll ist und seine Daten > in eine page schreiben soll, oder weiß der Buffer selber wann er > komplett voll ist und schickt dann mit dem entsprechenden opcode die > Daten in eine page? Was mach ich denn mit dem startbyte das für den > Buffer bestimmt ist? Der Buffer ist ein Ram im Baustein, der weiß nichts und kann nichts... Du mußt im Programm per Befehl anordnen, daß der Bufferinhalt in die Flash-Page geschrieben wird. Ob der dabei voll oder halbvoll oder mit Zufallsdaten gefüööt ist, ist dem Kommando völlig egal. Das kopiert einfach den kompletten Inhalt. > Werden die Daten in den Buffer wenn er entleert wurde immer vom > startbyte 0 beschrieben und merkt sich der Buffer den davorigen Stand > und schreibt die Daten ab den davorigen noch leeren restlichen bytes? Der Buffer wird nicht entleert, der bleibt, wie er ist. Du legst beim Schreiben in den Buffer die Adresse fest, wohin geschrieben wird.. > > Um immer den aktuellen Stand der beschriebenen pages zu bekommen, also > bis zu welcher page schon Daten geschrieben wurden, muss ich irgendwie > einen Zeiger mithinein legen der bei jeder Beschreibung einer page > hochzählt um nach einen Spannungsausfall immer noch den aktuellen Stand > zu haben. Wie würdest ihr das realisieren? Auch das ist Deinem Geschmack überlassen. Hängt auch davon ab, wie oft Du schreibst (Lebensdauer des Flash). Ich habe die erste Page für sowas reserviert, schreibe aber auch sehr selten den Zustand. Man kann sich das ja je nach Verwendung an vielen Stellen merken, in Prozessorregistern, im Ram des Prozessors, im EEPROM des Prozessors und eben auch im Flash selbst. PS: soooo schlecht ist das Datenblatt der AT45DBxxxD-Serie eigentlich doch garnicht? Gruß aus Berlin Michael
>Weiß jemand ob man dem Buffer sagen muss das er voll ist und seine Daten >in eine page schreiben soll, oder weiß der Buffer selber wann er >komplett voll ist und schickt dann mit dem entsprechenden opcode die >Daten in eine page? Radio Eriwan - es kommt darauf an, welchen Befehl du nutzt. Auch wenn der Tip schon uralt ist: Lies das Datenblatt. Oliver
Schreib dann einfach mit dem opcode (ox84) die daten in den Buffer. Wenn ich dann entscheide das die daten in eine page geschreiben werden sollen, muss ich es dem buffer also sagen und kopiert die Daten in die page die ich haben will, oder? Wie bekomme ich dann die nächsten daten in den Buffer, muss man den zuerst löschen? Hast du das so gemeint, das du einfach jedesmal wenn du den Bufferinhalt in eine page schreibst immer den "pagezähler" z.B. in page 1 um eins hochzählst? oder wie hast du das gemeint?
Im Datenblatt steht schon was drinn, aber nicht so genau was ich mit dem startbyte und genaueres über den Buffer
>Ich habe die erste Page für sowas reserviert, schreibe aber auch sehr >selten den Zustand. Wie gehst du denn da vor wenn eine page als speicher für den counter nimmst? dann muss man ja bei jeder pagebeschreibung immer nochmal die page mit dem counter auslesen, um 1 erhöhen und dann wieder in die page schreiben, oder wie hast du das gemeint? Bei mir geht es halt darum das man auch noch nach einem kompletten Spannungsausfall wissen muss wo sich der aktuelle Stand im flash befindet, also wieviel schon reingeschreiben wurde.
@Steff Du geisterst hier schon seit einiger Zeit rum. Tut mir leid, aber du verstehst einfach nichts. Dein Problem sind die Pages. Alles was du dazu wissen musst steht im Datenblatt. Wenn du das nicht verstehst dann lass es einfach sein. Das ist zu viel für dich. >Bei mir geht es halt darum das man auch noch nach einem kompletten >Spannungsausfall wissen muss wo sich der aktuelle Stand im flash >befindet, also wieviel schon reingeschreiben wurde. Sowas hat schon erfahrene Programmierer in den Wahnsinn getrieben.
Das mit den pages hab ich ja soweit schon, nur das mit dem sogenannten Ringbuffer weiß ich nicht wie man dabei vorgeht.Also die Verwaltung der page ist das große Problem. Ob sich der Buffer nachdem man die Daten in eine page schreibt wieder auf das startbyte 0 setzt oder nicht steht im manual nicht drinn. Kannst mir da nicht weiterhelfen?
>Ob sich der Buffer nachdem man die Daten in eine page schreibt wieder >auf das startbyte 0 setzt oder nicht steht im manual nicht drinn. >Kannst mir da nicht weiterhelfen? Da es nicht drin steht ist es wohl nicht der Fall. Du musst dich selbst darum kümmern in welche Page du schreibst.
Weisst du wie das mit den beiden Buffern abläuft? Würde nämlich meine ganzen Daten über den Buffer1 laufen lassen und den pagezähler, den ich in page1 mach, über den Buffer 2. Oder hättest du da eine geschicktere Lösung? wäre halt arg viel code.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.