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!
Nimm ein Flash von STM. Bitte frage jetzt aber nicht welches, es gibt tausende. Einfach auf der Homepage schauen.
Ein Atmel Datenflash. Ist ein NOR Flash und dadurch viel zuverlaessiger als ein NAND Flash.
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!"
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!
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
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
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
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
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
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..
@ 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
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
@ 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
@ 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
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
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.