Hi! Ich brauch an meinem ATmega8 externen Speicher um GPS-Daten zu speichern und wieder auszulesen. Was würdet ihr empfehlen: Externen EEPROM, Flash-Speicher, SRAM, DRAM, ... ?! Die Bedingung ist nur das er ausreichend groß sein muss (mind. 500kB, besser 1MB und größer), das man ihn relativ einfach in C Programmieren kann (Codeschnipsel wären zur Ansicht ganz gut) und das die Verfügbarkeit jetzt und auch in Zukunft geregelt ist. Was für Typen könnt ihr mir empfehlen? (Ggf. wo bekommt man diese?) MfG Benno
MMCs - MultiMediaCards Zukunft gesichert, ausreichend Speicher, per SPI ansteuerbar. Einfach mal im Forum suchen, hatten wir schon. Bye
Danke ... bin eben auch durch einen anderen Tipp auf MMCs gestoßen. Wie beschreib ich die Dinger denn? Seriell (SPI ?!) @BAB - Geschwindigkeit spielt bei mir keine so großartige Rolle.
SPI ist eine Standardschnittstelle, Serial Peripheral Interface... Es wird von vielen Mikrocontroller unterstützt, so auch von den AVRs. Im Klartext heisst das, du musst nur ein paar Zahlen in bestimmte Register schreiben und die MMC gehorcht dir. Für GPS-Daten reicht die Geschwindigkeit massig aus. Meine gesammelten Werke zum Thema MMCs sind im Anhang. P.S.: Kleiner Tipp, bei eBay verkauft jemand 16MB MMCs von SanDisk für nen Appel und nen Ei.
Wenn ich ne MMC verwende, was brauch ich für ne Halterung? Zum Thema SPI: Standardschnittstelle hört sich ja gut an, aber brauchen MMC kein Dateisystem? Ich weiß das zumindest der Palm Daten filebasiert auf der MMC ablegt und IMHO diverse Kameras auch? Brauche ich also auch ein Filesystem??
Was haltet ihr eigentlich - um mal eine Alternative zu nennen - von Atmels Dataflash? Wie schätzt ihr die Verfügbarkeit ein. Der einzigste Bezugsweg den ich bisher gefunden hab, war über einen amerikanischen Distributor, finde ich persönlich nicht so gut, aber dafür gibts immerhin ne schöne C-Library (zu finden auf AVRfreaks unter UserProjekts). Gibts bezüglich SPI eine?
Ich benutze am liebsten serielle EEPROMS, z.B. AT24C512 (64kB). Die Ansteuerung ist einfach, I2C-Beispielprogramme findet man haufenweise im WWW, egal ob C oder Assembler, ob 8051 oder AVR. Ich denke mal, die GPS-Daten sind Text, den man bequem in Zahlen umwandeln und somit wesentlich kompakter abspeichern kann. Durch Abspeicherung der Differenz von aufeinanderfolgende Positionen ist eine weitere einfache Komprimierung möglich. Dann sollte ein AT24C512 reichen. Peter
Atmels Dataflash? Meinst du diese riesigen Flashsspeicher? Viel einfacher ist die Ansteuerung allerdings auch nicht. Schau dir mal die PDF-Files im Anhang meines vorherigen Postes an. Bevor du dich weiter mit dem Thema auseinandersetzt, währe es sinnvoller sich mit den Basics der AVRs auseinanderzusetzen! SPI sollte dir schon ein Begriff sein... Such nur weiter auf AVRFreaks.net, du wirst auch diesbezüglich fündig. Wenn du einen Datensatz mit fester Größe (so wirds wahrscheinlich sein) speichern willst, ist ein Dateisystem überflüssig. P.S.: Die Flashs dürften auch relativ teuer sein.
> Ich denke mal, die GPS-Daten sind Text, den man bequem in > Zahlen umwandeln und somit wesentlich kompakter abspeichern > kann. > > Durch Abspeicherung der Differenz von aufeinanderfolgende > Positionen ist eine weitere einfache Komprimierung möglich. Genau dies tue ich auch. Ich zerpflücke im Controller den GPS-String nach den Koordinaten (LATITUDE, LONGITUDE, RICHTUNG) und halt Datum und Zeit. Diese fasse ich in grade mal 3 Longs zusammen, sprich 3x4Byte = 12 Byte pro GPS-Koordinate. Sollte eine GPS-Koordinate die selbe sein, wie beim letzten Erfassen, so wird diese auch nicht erfasst. Ich denke effizienter gehts kaum ...
> Atmels Dataflash? Meinst du diese riesigen Flashsspeicher? Genau die! > Viel einfacher ist die Ansteuerung allerdings auch nicht. Es geht so ... hab nun auch ne Asm-Code für die MMCs gesehen. Denke den werde ich auch verwenden. > Wenn du einen Datensatz mit fester Größe (so wirds > wahrscheinlich sein) speichern willst, ist ein Dateisystem > überflüssig. Jain, zwar sind meine GPS-Koordinaten immer konstant 12 Bytes lang, aber in unregelmäßigen Abständen kommen nochmal zusätzliche Daten von ca. 30 Byte > P.S.: Die Flashs dürften auch relativ teuer sein. Stimmt: 512 kB für 7,50$, 8MB für knapp 50$ bei digikey.
Zum Experimentieren kann man so einen Slotstecker nehmen wie er z.B. für ISA-Karten verwendet wird.
@Benno "Diese fasse ich in grade mal 3 Longs zusammen, sprich 3x4Byte = 12 Byte pro GPS-Koordinate. Sollte eine GPS-Koordinate die selbe sein, wie beim letzten Erfassen, so wird diese auch nicht erfasst. Ich denke effizienter gehts kaum ..." Wie gesagt, wenn man die Differenz zum vorheriegen Wert bildet, sollte es noch wesentlich kürzer werden als 12 Byte. Man müßte nur abschätzen, wie stark sich die Werte typischer Weise ändern und dann entsprechend viele Bits nehmen. Könnte mir vorstellen, daß man so auf 1..2Byte runter kommen kann. Peter
Was muss ich denn Spannungsmäßig beachten? Ich hab nen 5V Atmel mega8. 3,3V Versorgungsspannung auf den MMC zu legen sollte dabei das kleinere Problem sein, aber was muss ich bei den Signalleitungen alles dazwischenschalten?
> Wie gesagt, wenn man die Differenz zum vorheriegen > Wert bildet, sollte es noch wesentlich kürzer werden > als 12 Byte. > > Man müßte nur abschätzen, wie stark sich die Werte > typischer Weise ändern und dann entsprechend viele > Bits nehmen. > Könnte mir vorstellen, daß man so auf 1..2Byte > runter kommen kann. Ich werds für die Zukunft andenken. Im Moment gibts wichtigere Dinge für mich zu tun, da das ja alles schon läuft.
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.