www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externer Speicher


Autor: Walker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Atmega32 und brauche viel Speicher zur Abspeicherung der 
Daten. Ich bräuchte so etwa 10 MB Speicher. Welche Möglichkeiten habe 
ich?

Danke!

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm ein Flash von STM. Bitte frage jetzt aber nicht welches, es gibt 
tausende. Einfach auf der Homepage schauen.

Autor: 6636 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Atmel Datenflash. Ist ein NOR Flash und dadurch viel zuverlaessiger 
als ein NAND Flash.

Autor: Heino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
check mal, wie oft du den Flash beschreiben kannst/musst!

Autor: Hmm.. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SD-Karte?

Wie schnell muss es denn sein?

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also 64 KByte SRAM Speicher kann man ohne Probleme am AVR betreiben.
Denk dran, der Speicherchip hat eine ChipSelect Leitung, die ist da 
nicht umsonst dran sondern sagt dem Speicherchip "Egal was auf den 
Leitungen liegt, ignorieren!"

Autor: Walker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

es gibt wie aber auch solche DataFlash z.b. diese von Atmel:
http://atmel.com/dyn/resources/prod_documents/doc3597.pdf

Ist 32 MegaBit DataFlash!

Kann ich den auch mit Atmega32 verwenden?
Was muss ich beachten?

Gibt es schon irgendwo ein fertiger Code zur Ansteuerung von diesem 
DataFlash? Kennt jemand?

Danke!

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Walker,

Ich verwende die Dinger mit schöner Regelmäßigkeit, um dort meinen 
Programmcode abzulegen. Per SPI lassen die sich sehr einfach und flott 
programmieren und auslesen.

Die AT45 sind auch 5V-fest, man kann sie also direkt an einen 5V-Atmel 
hängen - günstiger ist natürlich eine niedrigere Betriebsspannung 
(schon, weil man dann nur eine Spannung benötigt :-)
Aber die High-Pegel werden auch bei 5V noch sauber detektiert (dann 
natürlich bei 3,5V Betriebsspannung des AT45).

Ich habe mir damit eine Plattform gebaut, die ich per Skriptsprache 
programmieren kann und auf der ich dann natürlich richtig viel 
Programmspeicher habe. Im Atmel selbst läuft ein speziell 
umgeschriebener und abgespeckter Tcl-Interpreter (natürlich mit 
Verschlüsselung), der sich seine Befehle dann aus dem Flash holt.

Damit kann man dann schon richtig was machen :-)

Christoph

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, was ich noch vergessen hatte: zumindest beim 8MBit-Chip gab es 
einen Bug im "Chip erase command" - den kann man aber entsprechend durch 
Seiten- oder Block-Operationen ersetzen.

Christoph

Autor: Walker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,

könntest du mir bitte dein Programmcode zeigen? Wie kann ich z.B. 
Variablenwerte in diesen Speicher ablegen und wieder auslesen?

Gib bitte ein Beispiel.

Z.B. möchte ich 100 Integer Werte abspeichern. Und später auslesen.
Wie gehe ich vor?

DANKE

Autor: 6636 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch alles im datenblatt.

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Walker wrote:
> Hallo Christoph,
>
> könntest du mir bitte dein Programmcode zeigen?

Das kann ich leider nicht, da der mir nicht alleine gehört.
Aber ich denke, hier wird es genug Leute geben, die den Quellcode 
veröffentlichen können.

> Wie kann ich z.B.
> Variablenwerte in diesen Speicher ablegen und wieder auslesen?
>
> Gib bitte ein Beispiel.
>
> Z.B. möchte ich 100 Integer Werte abspeichern. Und später auslesen.
> Wie gehe ich vor?

Das ist wirklich nicht schwer :-)

Diese Speicher sind in Seiten zu je 256 (bzw. 264) Bytes eingeteilt. 
Diese lassen sich über zwei Puffer beschreiben. Du füllst also zuerst 
einen Puffer mit Deinen Werten und schreibst diesen dann z.B. mit 0x83 
("Buffer to Main Memory Page Program with Built-In Erase") auf die 
gewünschte Seite.
Dann fragst Du zyklisch das Statusregister des Chips ab, bis die 
Operation beendet ist - fertig.

Lesen ist noch viel einfacher: Du kannst mit einem Startbefehl + Adresse 
ab dieser kontinuierlich auslesen (bis in alle Ewigkeit) - dazu muss man 
einfach nur Dummy-Bytes über die SPI reinschieben - raus kommen dann die 
Daten in sequentieller Reihenfolge. Der Befehl nennt sich "Continuous 
Array Read".

Die Ansteuerung der SPI selbst ist extrem einfach und steht in jedem 
AVR-Datenblatt - sogar mit C-Code.

Viel Erfolg - und bei Fragen: fragen! :-)

Christoph

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, wieder etwas vergessen >:-)

Es gibt von Atmel eine Beispielschaltung mit einem AVR+AT45 für ein 
digitales Diktiergerät:

AVR335 - Digital Sound Recorder

Da hast Du dann schon die Schaltung :-)

Christoph

Autor: Roober (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke sehr Christoph! Ich werde mich jetzt schlau machen :) Eine Frage 
habe ich noch. Es steht im Datenblatt, dass es 100000 mal beschreibbar 
ist. Wenn ich diesen DataFlash auf meine Platine drauflöte und 100000 
mal drauf schreibe, dann muss ich den DataFlash durch einen neuen 
ersetzen?

100000 mal ist nicht so viel, wenn man im Programm eine Schleife hat die 
dauernd Daten schreibt und liest..

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Roober (Gast)

>ist. Wenn ich diesen DataFlash auf meine Platine drauflöte und 100000
>mal drauf schreibe, dann muss ich den DataFlash durch einen neuen
>ersetzen?

Kann passieren.

>100000 mal ist nicht so viel, wenn man im Programm eine Schleife hat die
>dauernd Daten schreibt und liest..

Das macht man ja auch nicht so! Solche Daten gehören ins RAM! Ins Flash 
wird nur selten geschrieben, z.B. kurz vor einem Spannungsausfall etc.

MFG
Falk

Autor: Roober (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SRAM reicht mir nicht aus. Es sind paar MB von Daten.

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MoinMoin,

> Ich habe mir damit eine Plattform gebaut, die ich per Skriptsprache
> programmieren kann und auf der ich dann natürlich richtig viel
> Programmspeicher habe. Im Atmel selbst läuft ein speziell
> umgeschriebener und abgespeckter Tcl-Interpreter (natürlich mit
> Verschlüsselung), der sich seine Befehle dann aus dem Flash holt.
>
ähmmm, als Tcl-Freak bin ich gearde hellhörig geworden...!!! Habe ich es 
richtig verstanden, dass es einen Tcl-Interpreter für AVRs gibt, den ich 
zur Laufzeit mit Scripts füttern kann?

Wo finde ich das Zeugs???

Grüße Uwe

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Roober (Gast)

>SRAM reicht mir nicht aus. Es sind paar MB von Daten.

Dann ist Flash der falsche Speicher. Und der AVR der falsche Prozessor. 
Nimm einen 16/32 Bit (AVR32, ARM, whatever), dort kannst du ordentlich 
(S)DRAM anschliessen.

MFG
Falk

Autor: Roober (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was ist mit der SD-Karte oder MMC? Würde das gehen?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Roober (Gast)

>Und was ist mit der SD-Karte oder MMC? Würde das gehen?

Da ist auch Flash drin, den kann man auch nicht dauernd beschreiben. 
Auch wenn die Controller schon schlau sind, und die Schreibzugriffe gut 
verteilen, ein Ersatz für RAM ist es nicht.
Was willst du denn machen?

MFG
Falk

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe Berger wrote:
> MoinMoin,
>
>> Ich habe mir damit eine Plattform gebaut, die ich per Skriptsprache
>> programmieren kann und auf der ich dann natürlich richtig viel
>> Programmspeicher habe. Im Atmel selbst läuft ein speziell
>> umgeschriebener und abgespeckter Tcl-Interpreter (natürlich mit
>> Verschlüsselung), der sich seine Befehle dann aus dem Flash holt.
>>
> ähmmm, als Tcl-Freak bin ich gearde hellhörig geworden...!!! Habe ich es
> richtig verstanden, dass es einen Tcl-Interpreter für AVRs gibt, den ich
> zur Laufzeit mit Scripts füttern kann?

Ja, gibt es - allerdings nur eine abgespeckte Version mit nicht allen 
Befehlen. Dateioperationen etc. kann man direkt rausschmeißen, dafür 
habe ich dann Skriptbefehle für das Setzen der Register usw. etc. 
geschrieben.

Im Prinzip kann ich je nach Anwendung ursprüngliche Befehle weglassen 
oder eincompilieren - sozusagen ein maßgeschneiderter Tcl-Interpreter 
für genau diese Anwendung.

> Wo finde ich das Zeugs???

In obiger Form kenne ich es nur von mir.

Es gab mal ein paar Projekte (TinyTcl meine ich), die das auch gemacht 
haben. Googlen sollte Dir da weiterhelfen.

Ich habe dazu ziemlich viel des originalen Codes umgeschrieben - da 
stecken fast zwei Monate Arbeit drin, aber die sichern mir jetzt 
Vorsprung gegenüber Wettbewerbern. Deswegen werde ich diesen Code nicht 
freigeben. Ich denke, das ist verständlich.

Es macht aber jedenfalls Spaß AVRs (und natürlich auch andere) in Tcl zu 
programmieren :-)

Christoph

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.