Forum: Mikrocontroller und Digitale Elektronik Speicherbaustein(chen) gesucht


von SamS (Gast)


Lesenswert?

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!

von crazy horse (Gast)


Lesenswert?

FRAM 24C02

von Martin (Gast)


Lesenswert?

Wo hast du denn selber schon gesucht?

von SamS (Gast)


Lesenswert?

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...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

FRAM hat eine theoretisch unbegrenzte Anzahl an möglichen 
Schreib-/Löschzyklen.

von Martin (Gast)


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

FRAM gibt es bei tme.pl, sowohl parallel im SOIC-Gehäuse, als auch SPI 
im SO8-Gehäuse.

von Andreas K. (a-k)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

Immer diese Erbsenzähler hier ...

von SamS (Gast)


Lesenswert?

@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...

von Nitram L. (nitram)


Lesenswert?

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

von SamS (Gast)


Lesenswert?

@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?

von Andreas K. (a-k)


Lesenswert?

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.

von crazy horse (Gast)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

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.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

Ist in Australien aber immer noch billiger. 6,45 US$ inkl Porto bei 
Modtronix, 6,50€ bei dir ;-).

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

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.

von SamS (Gast)


Lesenswert?

@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?

von Andreas K. (a-k)


Lesenswert?

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...

von Andreas K. (a-k)


Lesenswert?

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".

von crazy horse (Gast)


Lesenswert?

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

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>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?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von SamS (Gast)


Lesenswert?

Naja, aber ein EEPROM kostet ja nicht wirklich weniger als ein FRAM, 
oder?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Na und ob. Außerdem hat z.B. der AVR schon eines integriert. Reicht beim 
ATmega8 zwar nur für 3000 Jahre, aber immerhin.

von SamS (Gast)


Lesenswert?

Sorry, aber ich werde deshalb keinen AVR in meine Schaltung 
einbauen...:)

von SamS (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.