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
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.
@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.