Hallo Zusammen. Ich nutze für die Verwenung einer SD Karte mit einem Atmega2650 die Datein von Mikrocontroller.net http://www.mikrocontroller.net/articles/AVR_FAT32 Eigentlich Funktioniert alles super. Nur jetzt ist mir ein seltsamer Fehler aufgefallen. In meiner main() wird vor der while(1) genau einmal folgendes ausgeführt: ffmkdir("Data"); ffmkdir("Kunden"); ffmkdir("Abrechnungen"); Der Ordner "Kunden" wird aber immer als "Kunddn" angelegt! Zumindest zeigt der Windows Explorer es so an. Schreibe ich jetzt Folgendes, funktioniert es: ffmkdir("Data"); ffmkdir("Kunde"); ffmkdir("Abrechnungen"); Hier werden die 3 Order wie dem Parameter entsprechend angelegt Auch wenn ich Folgendes an diese Stelle schreibe: ffmkdir("Data"); ffcd("Data"); ffcdLower(); ffmkdir("Kunden"); ffmkdir("Abrechnungen"); Werden alle 3 Ordner richtig im Root-Verzeichniss angelegt. Aber das erste Beispiel sollte doch auch funktionieren?! Was könnt dafür die Ursache sein? Schreibe ich die 3 Ordner zu schnell hintereinander? DIe SPI Schnittstelle ist auf Fmax gesetzt. Die SD Karte erlaubt ja für SPI Fmax 25 MHz?! Ich nutze ein 16 MHz Quartz, kann also die SPI Schnittstelle höchstens mit 8MHz betreiben. Das wird wohl nicht das Problem sein? ist eine kleine Wartezeit nötig? Danke für Anregungen und Hilfen Gruß
Hast du das 1. Beispiel per Copy&Paste hierher gebracht, oder abgeschrieben? Manchmal stehen ja undruckbare Zeichen im String, wie z.B. ein Backspace, oder etwas anderes bewirkt, dass man den Wald vor Bäumen nicht sieht. Du kannst dir diese Strings auch mal im Hexdump des Sourcecodes und des Binarys anschauen.
foo schrieb: > Manchmal stehen ja undruckbare Zeichen im String, wie z.B. ein > Backspace, oder etwas anderes bewirkt, dass man den Wald vor Bäumen > nicht sieht. den "String" vorher durch/über isalpha() schicken wäre auch ne Möglichkeit oder parallel Zeichen für Zeichen auch seriell auszugeben als ASCII und HEX und DEZ
foo schrieb: > Hast du das 1. Beispiel per Copy&Paste hierher gebracht, oder > abgeschrieben? Habe das erste Beispiel aufjedenfall per copy&paste rein gebracht. Habe das auch mehrmals geändert und wieder zurück gestellt. Ich wollte das zunächst auch nicht glauben und hab am nächsten Tag noch mal geschaut. habe auch sowas wie ffmkdir("Data"); ffmkdir("Kunden\0"); ffmkdir("Abrechnungen"); versucht. Änderte aber Nichts. foo schrieb: > oder etwas anderes bewirkt, dass man den Wald vor Bäumen > nicht sieht. Das war auch meine Vermutung ;) Joachim B. schrieb: > den "String" vorher durch/über isalpha() schicken wäre auch ne Kenn diese Funktion nicht - gucke ich mir an. > Möglichkeit oder parallel Zeichen für Zeichen auch seriell auszugeben > als ASCII und HEX und DEZ Das habe ich bei eigenen Funktionen gemacht. Also bei solchen, bei denen ich den Datei- oder Ordnernamen in einer Variablen übergebe und dann Dateien auswerte oder Dergleichen. Aber die Funktion ffmkdir(dirname[]) funktioniert sont. Der Strin ist eigentlich auch bekannt. Da ich ja "Kunden" übergebe, sollte Atmel Studio den String hinter dem "n" vernünftig abschließen?! Aber ich versuch den String vorher ordentlich in ein Array zu packen und übergebe den dann an ffmkdir(). Ein Versuch ist es wert. Was nichts gebracht hat ist ein delay vor ffmkdir("Kunden"); einzusbauen. BZW es brachte etwas falsches. Nämlich den Ordner: "Keden". (Hier sinds mehr als ein Bit Fehler. Ich bin mir nicht sicher ob der String der Schuldige ist. Dort macht ATmelStudio ja alles slebst. Da das hier funktioniert: ffmkdir("Data"); ffcd("Data"); ffcdLower(); ffmkdir("Kunden"); ffmkdir("Abrechnungen"); vermute ich das vllt bei ffmkdir("Data"); etwas nicht zuende läuft? das durch ffcd("Data"); ffcdLower(); egalisiert wird?! eine waaaage These... ;) lg und danke!
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.