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...
FRAM hat eine theoretisch unbegrenzte Anzahl an möglichen Schreib-/Löschzyklen.
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.
FRAM gibt es bei tme.pl, sowohl parallel im SOIC-Gehäuse, als auch SPI im SO8-Gehäuse.
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.
Bei den neuen FRAMs steht im Datenblatt 100 Trillion Schreib-/Lesezyklen. Das dürfte eine Weile reichen... Die FRAMs gibt es auch in Dtl. zu kaufen: http://www.watterott.net/shop/index.php?cat=c17_Speicher.html
Ist in Australien aber immer noch billiger. 6,45 US$ inkl Porto bei Modtronix, 6,50€ bei dir ;-).
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.
Naja, aber ein EEPROM kostet ja nicht wirklich weniger als ein FRAM, oder?
Na und ob. Außerdem hat z.B. der AVR schon eines integriert. Reicht beim ATmega8 zwar nur für 3000 Jahre, aber immerhin.
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.
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.