mikrocontroller.net

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


Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für eine Art Speicher? ROM? Flash? EEPROM? RAM?

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Egon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten Fritzke (thorsten)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Freak5 (Gast)
Datum:

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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Freak5 (Gast)
Datum:

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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

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

Autor: Dirk Wiebel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias Schneider (tobias)
Datum:

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

Gruss Tobias

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dirk Wiebel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Z. (Gast)
Datum:

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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Die meisten Elche (Gast)
Datum:

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

http://www.freescale.com/webapp/sps/site/overview....

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

Autor: Ali Öz (ali)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.