Hallo, ich suche eine Routine um Daten auf eine SD-Karte in eine TXT. Datei zu speichern. Allerdings hab ich auf meinem Atmega 8 nur noch maximal 4Kb Flash frei, alles was ich gefunden hab braucht mehr Platz. Kennt da jemand etwas passendes? Gruß und Dank Michael
Es gibt Routinen, die eine SD-Karte als lineares Speichermedium betrachten, also ohne den Luxus eines Dateisystems, so ähnlich wie ein serielles EEPROM. Das könnte funktionieren. Das Auslesen ist dann aber mit z.B. Windows in einem Cardreader nicht ohne spezielle Programme möglich. Das müsste dann mit den gleichen Routinen geschehen. Eine Ausgabe über RS-232 zum PC könnte die Daten dann in eine Textdatei schreiben, die man dann mit z.B. einem Visual Basic Programm weiterbearbeiten könnte.
Hallo, schau mal bitte hier nach: FatFs Generic FAT File System Module http://elm-chan.org/fsw/ff/00index_e.html
>ich suche eine Routine um Daten auf eine SD-Karte in eine TXT. Datei zu >speichern. Allerdings hab ich auf meinem Atmega 8 nur noch maximal 4Kb >Flash frei, alles was ich gefunden hab braucht mehr Platz. Kennt da >jemand etwas passendes? Nimm einen ATmega328, dann passt das schon.
Danke für eure Antworten. Ich habe auch schon darüber nachgedacht den Controller zu tauschen, wollte das aber nach Möglichkeit vermeiden. Vielleicht meldet sich ja noch jemand der eine Lösung weiß. Gruß Michael
Hallo, also vom Flash-Platz sollte das schon gehen ich hab in einem Projekt bei mir dafür reichlich 2kB Platz gebraucht - aber in ASM (auf einem '644). Ich sehe allerdings eher das Problem das auf einem M8 der RAM knapp wird, da man zum 'freien' Schreiben einen bestehenden Block puffern muss. Da im RAM jedoch höchstens für einen 512Byte Block Platz ist müsste man die FAT-Funktionen so koordinieren das mit nur einem Puffer gearbeitet wird. Sascha
Hallo, ich hab jetzt das Petit FAT File System gefunden das ja vom Flash her passen sollte. Allerdings ist mir nicht ganz klar wie ich die Initialisierung und das schreiben mit dieser Routine machen muss. Bei den anderen hat die Initialisierung immer geklappt, nur war dann der Speicher zu knapp. Sascha Weber schrieb: > mir dafür reichlich 2kB Platz gebraucht - aber in ASM (auf einem '644). Wie viel RAM brauchst du denn? Und kann ich nicht auch eine ASM-Routine in C verwenden? Oder ist das sehr aufwendig? Hab ich noch nie gemacht. Gruß Michael
Im Samples zip-Archiv von der Petit FAT File System Module Seite findet sich ein Beispiel für AVR ATtiny85. Daraus kann man fast alles inkl. mmc.c übernehmen, lediglich die SPI-Schnittstelle zur Speicherkarte wird über das AVR USI-Module angebunden und die Routinen dafür sind in Assembler implementiert (usi.S). Diesen Assemblercode kann man recht einfach durch C-Code für Hardware-SPI ersetzen. Im Zweifel hilft das AVR Datenblatt und bei noch mehr Zweifel die low-level-Routinen in den Beispiele zum "großen" FatFS (avr/mmc.c).
Michael Mayer schrieb: > Wie viel RAM brauchst du denn? ich verwende 2 Puffer zu je 512Byte und damit währe der m8 schon voll, aber ein paar Variablen und Stack braucht's ja auch noch > Und kann ich nicht auch eine ASM-Routine > in C verwenden? Oder ist das sehr aufwendig? Hab ich noch nie gemacht. ich glaub ASM-Code in dieser Größenordnung in ein C-Program einpflanzen zu wollen ist keine gute Idee. Sascha
Das einfachste wäre es, die SD-Karte mit einer einzigen, zusammenhängenden Textdatei der gewünschten Größe zu beschreiben. Die Textdatei ist werksseitig mit lauter 0x00 gefüllt. Der µC weiß die immer gleiche Anfangsadresse und lässt Dateigröße und sonstige FAT-Sachen in Ruhe, er überschreibt nur den Inhalt der Datei. Ich weiß nicht, wie viel Speicher du benötigst, aber da ja eine SD-Karte praktisch unbegrenzt Platz bietet, kannst du sicher auch 100 fixe Dateien der Größe 1MB (001.txt bis 100.txt) hintereinander abspeichern. Damit hast du 100 Dateien mit je 1MB Speicherplatz und der µC braucht sich nicht um die FAT-Verwaltung kümmern. Am PC liest du die Dateien nur aus, dein Auswerteprogramm muss dann den nicht genutzten Speicher am Ende der Datei ignorieren.
Hallo, ich hab jetzt den Atmega 8 durch einen 168 ersetzt und verwende jetzt die Routine von Ulrich Radig. Die Initialisierung der SD-Karte läuft noch aber dann kommt der Fehler das die MBR Signatur nicht gefunden wurde. Weiß jemand woran das liegen kann? Gruß Michael
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.