Forum: Mikrocontroller und Digitale Elektronik Externer Speicher für ATmega8


von Ali Ö. (ali)


Lesenswert?

Hallo Forum.

Kann mir bitte jemand etwas Übersicht geben über Speicher, die an einen
ATmega8 angeschlossen, serielle Datenübertragung erlaubt.
Ev. ein Link im Forum oder Internet wäre sehr hilfreich.
Meine Suche im Forum war in diesem Sinne nicht ergiebig. Kann auch
daran gelegen haben, weil ich mich zum ersten Mal mit dem Thema
beschäftige.

Zur Abgrenzung:
Der Speicher sollte
mit 3 Volt betrieben werden,
mehr als 10 kByte gross sein,
seriell ansteuerbar sein,
auf dem Markt leicht erhältlich sein.

Schöne Grüsse

Ali

von Rolf Magnus (Gast)


Lesenswert?

Was für eine Art Speicher? ROM? Flash? EEPROM? RAM?

von Ali Ö. (ali)


Lesenswert?

Hallo Rolf.

Ich dachte eher an RAM. Nach dem Lesen in PC dürfen die Daten verloren
gehen, wenn die Batterie abgeschaltet wird.

Korrigiere mich bitte.
ROM ist Read only Memory. Also nur lesbarer Speicher. Er wird nur ein
Mal beschrieben.
EEPROM ist elektrisch löschbarer und beschreibbarer Speicher. Man kann
ihn z.B. 100 000 mal neu beschreiben.
Auch auf die Gefaht hin, mich zu blammieren... Was ist ein Flash?

Schöne Grüsse

Ali

von papa_of_t (Gast)


Lesenswert?

Du kannst eine SD-Karte nehmen - gibt es für kleines Geld überall, kann
an den Mega8 mit SPI (4 Leitungen, Hardwareunterstützung) angeschlossen
werden, Beispiele findest Du hier viele, wenn Di nach "SD-Karte"
suchst.

von Egon (Gast)


Lesenswert?

FLASH ist der Speicher, der im MEGA8 das Programm beinhaltet. Meiner
Meinung nach wäre ein EEPROM mit IIC-Ansteuerung die einfachste Lösung.
Dabei ist die Schreibgeschwindigkeit allerdings nicht berauschend:
vorher abklären wieviel Byte/s geschrieben werden sollen.

von Ali Ö. (ali)


Lesenswert?

Vieln Dank für eure Zuschriften.

Vielleicht kurz zu meiner Anwendung.
Um mich in Mikrocontroller einzuarbeiten, messe ich Temperatur und
Luftdruck und lese die Werte seriell in Mega8 ein. Die Werte wandern
momentan direkt zum PC. So weit funktioniert alles.
Ja! So etwas gibt es wie Sand am Meer. Aber, wie gesagt, ich wollte es
selber machen als Übung mit Microcontrollern.
Inzwischen hat sich ergeben, dass die Schaltung mit einer kleinen
Rakete mitfliegen wird. D.h. die Werte sollten gespeichert und später
sollen sie dann zum PC übertragen werden.
Bisher funktioniert dei Schaltung mit 3 Volt. Wegen Rakete sollte sie
aber so leicht wie nur möglich sein. Also wenig Bausteine und in SMD.
Alles, was für Messung und Speicherung nicht nötig ist (z.B.
Signalanpassung wegen Übertragung zum PC...), darf nicht auf die
Platine, die mitfliegen wird.
Für die Speicherung der Messwerte hatte ich erst auch EEPROM gedacht.
Nach dem ich aber gelesen hatte, dass man eine EEPROM-Zelle nur einige
zig Tausend Male beschreiben kann, dachte ich an RAM. Davon gibt es
anscheinen auch etliche Sorten.
Meine jetzigen Kentnisse über EPROM und RAM reichen leider nicht aus,
um die einzellnen Sorten zu beurteilen.

Bei EPROMs: Abgesehen von Schreibgeschwindigkeit...
100 000 bis 1000 000 Schreibzyklen bei einer EEPROM hört sich im ersten
Augenblick sehr viel an. Ich wollte aber, wenn ich einen Datensatz in
EPROM geschrieben habe, zusätzlich noch die Anzahl der bisher
gespeicherten Datensätze in einer definierte Speicherzelle notieren. An
diesem Punkt scheitere ich aber an der Lebensdauer des EPROMS:
Ich erwarte maximal 10 Datensätze in der Sekunde. Jeder Datensatz
verbraucht 4 Bytes. Als Flugzeit + Bergungszeit setze ich 5 Minuten an.
Damit ergibt sich 3000 Datensätze und 12 000 Byte Speichergösse.
D.h. Nur bei einem einzigen Flug wird die besagte Speicherzelle 3000
Mal neubeschrieben!!!

Bei RAMs: Einige Sorten von RAMs brauchen anscheinend zyklische
Auffrischung. Das verkompliziert aber die Schaltung. Das wollte ich
vermeiden.
Momentan kann ich SRAM, SDRAM, FRAM... noch nicht in ihrer Eigenschaft
beurteilen.

Es wäre schön, wenn ihr mich mit eurer Erfahrung über Vor- und
Nachteile etwas aufklären könnt. Natürlich bin ich auch offen für
weiter Vorschläge, Herangehensweise bei der Speicherung der
Datensätze.

Schöne Grüsse

Ali

von Thorsten F. (thorsten)


Lesenswert?

>>>D.h. Nur bei einem einzigen Flug wird die besagte Speicherzelle 3000
Mal neubeschrieben!!!

Ah, Moment bitte..

Der Satz hört sich so an, als würdest du jede neue Messung über die
alten 4Byte im EEPROM drüber schreiben. Dann wäre in der Tat das EEPROM
mit 3000 Schreibzyklen pro Flug "schnell" ausgelutscht.

Wenn du deine 3000 Messungen á 4 Bytes hintereinander in ein
ausreichend dimensioniertes EEPROM(Richtung 24C256: 32kB) schreibst,
beschreibst du pro Flug eine Speicherzelle(entpricht einem Byte) nur
einmal.

Ansonsten gibt es auch eine AN von Atmel, die effizentes Speichern in
EEPROMs beschreibt. Einfach mal bei Atmel suchen gehen.

Gruß

von Freak5 (Gast)


Lesenswert?

Wenn er immer die gleiche Speicherzelle beschreiben würde, könnte er
doch auch den internen ram verwenden, oer?

von Michael (Gast)


Lesenswert?

was hast du davon wenn du immer die gleiche speicherzelle beschreibst?
du willst doch die daten dann sicherlich auswerten, dann brauchst du
auf alle fälle einen speicher nehmen der gross genug ist z.B. ein
eeprom. dann kannst du nach dem flug die spannung wegnehmen und hast
trotzdem noch die daten auf dem speicher um ihn dann zu hause
auszulesen.

gruss michael

von Ali Ö. (ali)


Lesenswert?

Vielen herzlichen Dank für die guten Ideen.

So sieht man es wieder. Man soll von Erfahrung anderer profitieren.
Ich war anscheinend fixiert auf den Gedanken, die Anzahl der Datensätze
immer in gleiche EpromZelle zu schreiben.
Dabei gibt es so viele Möglichkeiten.

Man kann das Ende der Liste mit einem ENDE-Zeichen markieren. In diesem
Fall würde jede Zelle pro Flug 2 Mal beschrieben.

Oder ein interner RAM-Zelle von Mega8 könnte diese Aufgabe übernehmen.
Dann werden die Epromzellen pro Flug nur ein Mal beschrieben.
U.s.w.
Das sind alles schöne Ideen. Vielen Dank noch ein Mal.
:)

Könnt ihr mir vielleicht auch ein RAM empfehlen, damit ich eine
Vergleichsmöglichkeit zu Eproms haben kann?

Schöne Grüsse

Ali

von Freak5 (Gast)


Lesenswert?

Ich kann lieider nicht weiterhelfen, aber ich interessiere mich für
deine Datenspeicherung. Warum wird die Zelle pro flug 2x beschrieben?

von Ali Ö. (ali)


Lesenswert?

Sorry!
Meinerseits falsch ausgedrückt.
Ein Temperaturwert beansprucht ein Wort (2 Bytes). Ein Luftdruckwert
auch.
Eine Möglichkeit wäre etwa so:
Bei der ersten Messung würde ich den Temperaturwert in das erste Wort
und den Druckwert in das zweite Wort schreiben.
Nachdem diese beiden Werte geschrieben worden sind, könnte ich in das
dritte Wort z.B. HxFFFF schreiben. Damit wäre das Ende der bisherigen
Messwerte markiert.
Bei der nächsten Messung würde Temperaturwert diese Marke (das 3. Wort)
überschreiben. Und der Druckwert würde im vierten Wort landen. Die neue
Marke würde dann in das fünfte Wort geschrieben.
Mit diesem Verfahren würde, zwar nicht jedes Wort aber, jedes zweite
Wort pro Flug zwei Mal beschrieben.

Mit den Vorschlägen hier ist dies natürlich nicht mehr nötig.


Schöne Grüsse

Ali

von Peter (Gast)


Lesenswert?

Hier sind wir wieder bei meinem Lieblings FRAM. Das könnte für deine
Zwecke gehen.

von Dirk Wiebel (Gast)


Lesenswert?

Hallo Ali,

welchen Luftdrucksensor setzt Du bei 3V ein? Der würde mich auch
interessieren.

Zum Speicherproblem: Ich habe bisher fast alle Speicher-Erweiterungen
via I2C gelöst, ist zwar nicht das billigste und nicht das schnellste,
aber es gibt diverse SRAM- oder EEPROM-Speicher von diversen
Herstellern (z.B. als EEPROM den 24AA1025 mit 1MBit).

Vorteil: Man braucht eigentlich immer nur eine Bibliothek, sobald sich
die Dinger byteweise ansprechen lassen.

Viele Grüße,
Dirk

von Ali Ö. (ali)


Lesenswert?

Hallo Peter.
Kannst du mir bitte etwas mehr Info über FRAM geben. Bisher habe ich
FRAM nur bis 8 kByte gefunden (bei einer Betriebsspannung von 3 Volt).
Ich brauche aber etwas mehr Speicher.

Hallo Dirk.
Als Luftdrucksensor verwende ich MS5534A von Intersema (
http://www.intersema.ch/ ). Deutsche Distributor ist AMSYS (
http://www.amsys.de/products/ms5534a.htm ). "A"-Version wird nicht
mehr hergestellt. Ersatz dafür ist inzwischen "C"-Version.
Danke auch für den Tip über EEPROM. Auch dies werde ich mir angucken.
Kennst du vielleicht auch ein Beispiel als SRAM?

Schöne Grüsse

Ali

von Ssss S. (sssssss)


Lesenswert?

Hi!

Ich würd einfach ne kleine MMC Karte nehmen. Wenn du sowieso Software
schreibst die die messwerte zum pc sendet
kannste die mmc karte auch einfach direkt anlöten. Wiegt nur wenige
Gramm und
kleine (32MB etc) bekommst du recht günstig.

Ansteuerung ist kein Thema, gibts sogar fertige libs (Codesammlung)

Oder einen Atmel Dataflash AT45 (256kByte zB)

Bye, Simon

von Tobias S. (tobias)


Lesenswert?

Ein DataFlash duerfte hier wohl eine gute Alternative sein. Bei der MMC
muss mana uch noch die Kontaktiereinheit beachten.

Gruss Tobias

von Peter (Gast)


Lesenswert?


von Dirk Wiebel (Gast)


Lesenswert?

Hallo Ali,

als SRAM gibt's z.B. den PCF8570, ist allerdings mit 256 Byte zu
klein. Möglicherweise empfehlen sich da dann eher die von Peter
angesprochenen
FRAMs wie z.B. den FM24C16 -- ich weiß aber jetzt nicht auswendig, ob
es da auch 3V-Typen gibt.

Zu dem Drucksensor: Kann man den dort auch einzeln bestellen? Und weißt
Du, was ein oder zwei Stück kosten würden?

Viele Grüße,
Dirk

von Ali Ö. (ali)


Lesenswert?

Hallo Dirk.
Ja. Ich habe den Sensor (2 Stück) seinerzeit bei Amsys bestellt.
Tel.Nr. ist auf der Interseite zu finden. Ein Sensor ("A"-Version)
kostete um die 18 Euronen. Bei der Gelegenheit hatte ich auch
mitbekommen, dass "A"-Version ausläuft. Die "C"-Version sollte um
25 Euronen kosten. Die "A"-Version haben sie vielleicht noch im
lager. Auch die Beratung bei einem nachträglichen Telefonat war gut.
Den Sensor kannst du aber auch über ELV günstiger beziehen. Das habe
erst nachträglich gemerkt.

Bei meinem Speicher-Problem neige ich momentan zu FRAM. I^2C-Version
gibt es leider nur bis 8 kByte (3 Volt). SPI-Version reicht bis 32
kByte. Den Preis habe ich allerdings noch nicht erfragt.

Aber auch ein Flash (AT45DB041B 1MBit) habe ich angelacht. Bei Segor
kostet es um die zwei Euro. Die Beschreibung schien mir kompliziert zu
sein (bei meinen Englischkentnissen kein Wunder).
Aber auch das von dir empfohlenes Eprom 24AA1025 und das Eprom 24C256
(von Thorsten empfohlen) sind noch im Rennen. Ich versuche die
Beschreibungen zu verstehen. Viellecht finde noch Hilfe bzw.
Prinzip-Beschreibung auf Deutsch oder Beispielprogramm in Bascom bzw.
Assembler.


Schöne Grüsse

Ali

von Peter Z. (Gast)


Lesenswert?

Ich würde dir das Dataflash AT45DB041B empfehlen. Wird auch auf dem
Atmel Butterfly verwendet. Und es gibt von Atmel Code zur Ansteuerung.

von Ali Ö. (ali)


Lesenswert?

Das ist eine gute Nachricht Peter.
Wo finde ich das Programm zur Ansteuerung vom Dataflash AT45DB041B?
Auf Atmel-Site haeb ich mir die Beschreibung von Butterfly angesehen.
Aber kein Programmcode gefunden. Ich suche aber noch weiter.

Schöne Grüsse

Ali

von Die meisten Elche (Gast)


Lesenswert?

Wie wäre es mit einem 512 kByte (256k*16) MRAM mit 35ns Zugriffzeit?

http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=015424&tid=FSH

Soll der Ankündigung im Heisenewsticker zufolge 25 USD kosten.

von Ali Ö. (ali)


Lesenswert?

Zuerst habe ich mit AT45DB041 (SPI-Bus) probiert. Damit bin ich nicht
zurechtgekommen. Wahrscheinlich lag es an meinen Englischkentnissen.

FRAM hörte sich zwar sehr gut an. Aber der Preis. Junge Junge.

Zum Schluss kam dann ein AT24C256 (I2C-Bus) zum Einsatz. Funktioniert
perfekt.

Noch ein Mal: Herzlichen Dank an alle Beteiligten.

Schöne Grüsse

Ali

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.