Hallo,
ich muss alle 8 Sekunden einen 32-bit-Zähler erhöhen und abspeichern.
Das Gerät kann mal 24 Stunden durchlaufen, oder auch mal einige
Stunden/Tage aus sein. Der Speicher muss also nicht-flüchtig sein.
Könnt Ihr mir einen Chip nennen, den ich da am Besten nehmen kann? Der
also möglichst klein ist (sind ja nur 32 Bit)? Der Abspeicher-Vorgang
sollte bitte nicht zu langsam sein.
Vielen Dank!
Ich habe schon bei Digikey und Reichelt gesucht.
Problem ist, dann allein in einem Jahr über rechnerisch über 3 Millionen
mal geschrieben werden könnte. Viele ICs erlauben aber nur 10.000 bis
50.000 write-Zyklen...
Es gibt kleine MCs (8 Pin) musst du nur schauen ob die auch EEPROM
intern haben. Die Anzahl der Schreibzyklen gilt pro Speicherzelle. Du
könntest also jeden neuen Wert in eine andere Speicherzelle schreiben,
und wenn der Speicher voll ist fängst du wieder am Anfang an. Damit
erhöhst du die Anzahl dre Schreibzyklen enorm.
Travel Rec. wrote:
> FRAM hat eine theoretisch unbegrenzte Anzahl an möglichen> Schreib-/Löschzyklen.
Andersrum. Es hat eine formell durchaus begrenzte Anzahl Zyklen, nur ist
es so gut wie ausgeschlossen, dass dieses Limit in der Praxis erreicht
wird.
@Travel Rec.
Laut Datenblatt hat der bereits genannten 24c02 1 Million Schreibzyklen.
@Martin
Ja, daran dachte ich auch schon. Dazu muss aber der Speicher möglichst
schnell sein.
Z.B. bei 1024 Bytes muss ich im Maximalfall 1024 Bytes lesen und dann
alle löschen (geht dann ja wieder von vorne los) und dann wieder die
ersten 4 Bytes schreiben. Okay, könnte man auch nur jedes 4te Byte
lesen, also 256 Bytes. Das müsste ich mal durchrechnen...
SamS wrote:
> Hallo,>> ich muss alle 8 Sekunden einen 32-bit-Zähler erhöhen und abspeichern.> Das Gerät kann mal 24 Stunden durchlaufen, oder auch mal einige> Stunden/Tage aus sein. Der Speicher muss also nicht-flüchtig sein.>> Könnt Ihr mir einen Chip nennen, den ich da am Besten nehmen kann? Der> also möglichst klein ist (sind ja nur 32 Bit)? Der Abspeicher-Vorgang> sollte bitte nicht zu langsam sein.>> Vielen Dank!
Nimm ein kleines EEPROm (24C02) und schreib an Adresse 00 die
Adresse der Speicherzelle, wo dein aktueller Zählerstand steht.
Alle tausend Speichervorgänge schreibst du eine neue Adresse an 00
und legst die Werte unter dieser Adresse ab....
=> lesen des Wertes an Adresse 00h (Addr)
=> lesen des alten Wertes, den du unter (Addr) findest
=> neuen Wert unter (Addr) speichern
=> nach zig Schreibvorgängen den Wert der Adresse an der Stelle 00
ändern, um eine neue Speicherzelle zum speichern nutzen...
nitraM
@Martin L.
Klingt soweit gut. Ich kenne mich mit FRAM nicht so aus, aber kann ich
dort ein Byte (nahezu) beliebig oft beschreiben, ohne vorher löschen zu
müssen, oder gar eine ganze Page, wie bei EEPROM?
SamS wrote:
> Ja, daran dachte ich auch schon. Dazu muss aber der Speicher möglichst> schnell sein.
Wenn du ein "möglichst schnelles" Fahrzeug suchst, landest du bei
Prototypen mit Raketentriebwerk. Wenn dir das zu teuer oder zu
unpraktisch ist, wär's besser die Randbedingungen zu konkretisieren.
Also: wie schnell ist schnell genug?
FRAMs sind so schnell wie seriell angebundene RAMs sein können, also
beispielsweise 10Mbps SPI.
Oben schreibst du, dass alle paar Sekunden 4 Bytes geschrieben werden.
Das ist alles andere als schnell, sondern derart langsam, dass auch
EEPROMs grundsätzlich einsetzbar sind, auch Batterie/Goldcapgepufferte
Uhrenchips mit integriertem RAM per I2C sind dafür schnell genug.
es ist voll kompatibel zu den üblichen I2C-EEProms.
Aber nahezu unbegrenzte Schreibzahl, und keine nennenswerte
Lösch/Schreibzeit.
Für deine Zwecke also ideal.
SamS wrote:
> Klingt soweit gut. Ich kenne mich mit FRAM nicht so aus, aber kann ich> dort ein Byte (nahezu) beliebig oft beschreiben, ohne vorher löschen zu> müssen, oder gar eine ganze Page, wie bei EEPROM?
Jedes Byte darf einzeln praktisch beliebig oft neu geschrieben werden,
und zu beachtende Programmierzeit gibt es nicht, d.h. Byte/Page-Modi
sind nicht relevant. Interface ist SPI oder I2C oder parallel, je nach
Typ.
Für Einzelbeschaffung ist die günstigste Bezugsquelle dank des Portos
kurioserweise Modtronix in Australien.
Das Porto nach Dtl. konnte ich leider nirgends finden. Man muss aber
auch noch Einfuhrumsatzsteuer bezahlen und die Versandzeit ist bestimmt
auch etwas länger.
@Andreas Kaiser
Mein MC muss natürlich noch was anders "nebenher" machen, als nur diesen
Zähler zu aktualisieren. der Zähle ist eigentlich Nebensache und dient
der Sicherheit der Messwert-Erfassung.
Ich weiß, ich sollte noch genauer schreiben, wie schnell alles sein
muss. Nur kann ich im Moment nicht genau sagen, wie schnell. Geschätzt
muss der gesamte maximale Schreibvorgang (inkl. Löschen) in weniger als
1ms abgeschlossen sein.
Ich verstehe das immer noch nicht ganz. helft mir bitte:
beim FRAM muss nicht gelöscht werden, sondern einfach neu beschrieben
werden? Also quasi wie SRAM?
Andreas Watterott wrote:
> Das Porto nach Dtl. konnte ich leider nirgends finden.
3 US$: http://www.modtronix.com/shipping.php#letter_air> Man muss aber auch noch Einfuhrumsatzsteuer bezahlen
Ich meine mich errinnern zu können, dass es ein Limit so um die 22€
gibt. Wenn man darunter liegt, bleibt einem die m.W. erspart.
> und die Versandzeit ist bestimmt auch etwas länger.
Sicher.
Fairerweise: Es sind andere Chips, 64Kbit statt 256Kbit. Aber wenn man
nur 32 Bits braucht...
SamS wrote:
> beim FRAM muss nicht gelöscht werden, sondern einfach neu beschrieben> werden? Also quasi wie SRAM?
Genau so ist es. Für alle praktischen Belange kann man FRAM als
nicht-flüchtiges serielles RAM betrachten und die Geschwindigkeit wird
nur vom seriellen Interface definiert. Drum heisst es ja auch "FRAM" und
nicht "FROM".
So, SamS, jetzt ist es aber gut. Nimm die Dinger, sonst geht dir ein
Wunschpunkt flöten....:-)
Wenn du nur einen oder wenige brauchst, mail mir.
jsgps@web.de
Andreas Kaiser wrote:
>> Das Porto nach Dtl. konnte ich leider nirgends finden.>> 3 US$: http://www.modtronix.com/shipping.php#letter_air
Ah, ich hatte immer unter "International Destinations" geschaut.
>> Man muss aber auch noch Einfuhrumsatzsteuer bezahlen>> Ich meine mich errinnern zu können, dass es ein Limit so um die 22€> gibt. Wenn man darunter liegt, bleibt einem die m.W. erspart.
Stimmt, hatte ich ganz vergessen.
>Nimm ein kleines EEPROm (24C02) und schreib an Adresse 00 die>Adresse der Speicherzelle, wo dein aktueller Zählerstand steht.>Alle tausend Speichervorgänge schreibst du eine neue Adresse an 00>und legst die Werte unter dieser Adresse ab....>=> lesen des Wertes an Adresse 00h (Addr)>=> lesen des alten Wertes, den du unter (Addr) findest>=> neuen Wert unter (Addr) speichern>=> nach zig Schreibvorgängen den Wert der Adresse an der Stelle 00> ändern, um eine neue Speicherzelle zum speichern nutzen...
Und wo legst Du ab, wie oft Du schon geschrieben hast, um zu wissen, daß
1.000 Speichervorgänge erfolgt sind?
Ein EEPROM reicht doch. Einfach das erste Byte bis 255 hochzählen, dann
das zweite, das dritte, ... wenn alles voll ist einen
Schreibzyklen-Zähler erhöhen und wieder von vorne anfangen. Macht bei
einem 2 kB-EEPROM ca. 2000*255*1.000.000 Zählschritte = 167.000 Jahre
Betriebszeit.
Meine Schaltung hat einen C8051 von Silabs. Und leider kam es schon vor,
dass sich der Flash ungewollt veränderte. SiLabs kennt das Problem und
antwortet sofort mit einer langen Liste an Vorsichtsmaßnahmen. Ich halte
auf meiner Schaltung und in meiner Software alles ein. Dennoch passiert
es.
Um dem aus dem Weg zu gehen, soll dieser Zähler jetzt eben "extern"
gelegt werden.