Forum: Mikrocontroller und Digitale Elektronik ATmega32u4 Tabelle als .csv Datei


von N. S. (scheldor)


Lesenswert?

Hallo zusammen,

Ich habe eine Frage bezüglich einem Dateisystem auf dem Atmega32u4.

Ziel ist es, eine Tabelle im csv Format auf dem Controller zuspeichern 
und diese Tabelle im Betrieb als lookuptable zunutzen.
Die Tabelle wird nicht sehr groß sein. Vllt 30-40 wertpaare.

Zur einfachen Nutzung wäre es schön, wenn der Atmega zur Übertragung als 
USB Stick auftaucht.

Denkt ihr, dass sowas möglich ist bzw. habt ihr eine Idee wie ich am 
besten starte?

Viele Grüße
Scheldor

von Stefan F. (Gast)


Lesenswert?

Was du brauchst, ist eine "USB mass storage" Implementierung. Für diesen 
kleinen µC kenne ich keine.

von Thomas W. (diddl)


Lesenswert?

Klar gibt es "Mass Storage" Support für den 32U4:

http://www.fourwalledcubicle.com/files/LUFA/Doc/140928/html/group___group___u_s_b_class_m_s.html


Das ist zwar eigentlich dafür gedacht, um einen Flash Speicher, eine SD 
Karte oder ein IDE Gerät anzubinden. Aber es sollte auch so möglich sein 
es zu verwenden.

=====

Aber ich würde das eher mit CDC (virtuelle serielle COM) machen.

von Karl M. (Gast)


Lesenswert?

Hallo,

Warum eine CSV Tabelle, die ist in keinster Weise für den Zugriff per 
Programm optimiert.

https://de.wikipedia.org/wiki/CSV_(Dateiformat)

Wenn denn Schlüssel fortlaufende Zahlen sind, dann wird es einfach.

Bei freier Schlüssel- zu Wert-Zuordnung hilft eine Hash-Tabelle.

Sonst ist es "nur" eine lineares Suche im Schlüsselraum...

Also was soll das werden?

von Harry L. (mysth)


Lesenswert?

Schreib dir einen CSV-Parser für deinen µC und übertrag die CSV-Datei 
via Seriell!
Die eigentlichen Daten passen danach in das interne EEPROM.

von Karl M. (Gast)


Lesenswert?

Harry L. schrieb:
> Schreib dir einen CSV-Parser für deinen µC und übertrag die
> CSV-Datei
> via Seriell!
> Die eigentlichen Daten passen danach in das interne EEPROM.

Dabei ist dann der Zugriff über ein EEPROM immer noch langsam, ausser 
man legt die Tabelle nach dem "booten" in's SRAM ab.

Auch könnte man einen Bereich im Flash für diese Daten reservieren, um 
per Programm noch schneller darauf zugreifen zu können.
Müsste dann natürlich die passenden FuseBits gesetzt und ein 
Programmteil zur beschreiben ins Flash haben.

von Harry L. (mysth)


Lesenswert?

Karl M. schrieb:
> Harry L. schrieb:
>> Schreib dir einen CSV-Parser für deinen µC und übertrag die
>> CSV-Datei
>> via Seriell!
>> Die eigentlichen Daten passen danach in das interne EEPROM.
>
> Dabei ist dann der Zugriff über ein EEPROM immer noch langsam, ausser
> man legt die Tabelle nach dem "booten" in's SRAM ab.
>
> Auch könnte man einen Bereich im Flash für diese Daten reservieren, um
> per Programm noch schneller darauf zugreifen zu können.
> Müsste dann natürlich die passenden FuseBits gesetzt und ein
> Programmteil zur beschreiben ins Flash haben.

Ja und?
Wenn beim Programmstart eine "gültige" Tabelle im EEPROM gefunden wird, 
kopiert man die ins RAM - so what?

von N. S. (scheldor)


Lesenswert?

Danke für die schnellen Antworten.

Hintergrund ist der:
Es soll über einen Scanner ein Barcode gelesen werden.
Anhand des barcode soll dann ein analoger Wert (0-10V) ausgegeben 
werden.
Die Nummer im Barcode enthält leider keinen Hinweis auf die Länge, so 
dass ich in einer Tabelle nach dem entsprechenden Gegenwert zum Barcode 
suchen muss.
Die Geschichte mit dem Massenspeicher kommt daher, dass ich die Pflege 
der hinterlegten werte nicht selbst durchführe und auch gerne auf ein 
Terminalprogramm etc. Verzichten würde.

Da kommt es mir ziemlich gut vor, wenn die Person Vorort mit irgendeinem 
pc einfach eine Text Datei öffnet und dann einfach mit dem Editor 
anpassen kann.

Wenn der benötigte Speicherplatz das einzige Problem ist könnte ich dem 
guten Stück noch einen externen Flash spendieren.

Lg
Scheldor

PS.: das einstellen des Analogwertes ist nicht zeitkritisch. Und die 
Tabelle wird nicht alle zwei Minuten geändert.

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
Noch kein Account? Hier anmelden.