Hallo @all Habe mir von Holger Klabunde’s Homepage die Routinen für die MMC/SD-Karte runtergeladen. Das wäre der link dafür: http://www.holger-klabunde.de/avr/FATSingleOpt41.zip Ich verwende einen ATmega32, AVRStudio (WINAVR), 16MHz Quarz und eine SD-Karte von Panasonic mit 16MB. Habe mir aus den Routinen ein Programm zusammen gestellt das eine Datei „Test.htm“ erstellen soll und in diese „Hello World“ schreiben soll. Habe das Hex-File erstellt und auf meinen ATmega32 geflasht. Atmega angeschlossen ausprobiert. Es wird weder eine Datei erstellt noch auf eine vorhandene Geschrieben. Habe mal mein Komplettes Programm als Zip-File angehängt und auch ein Bild von der Beschaltung beigelegt. Die nicht verwendeten Header und Source Files habe ich mal mit drin gelassen. Könnte ja sein das ich vergessen habe etwas einzubinden. Vielleicht nimmt sich ja mal einer die Zeit und guckt sich das mal an. Wüsste nicht was ich sonst Falsch gemacht haben könnte. Gruß Alex
Du hast vergessen die Karte zu initialisieren! Am Anfang von main() muss das hier stehen: MMC_IO_Init(); if(GetDriveInformation()!=F_OK) // get drive parameters { // Gib hier eine Fehlermeldung raus while(1); }
Danke für die Hilfe. Hat super Funktioniert. Ich krieg jetzt den Text gespeichert. Allerdings sind auch noch andere Zeichen dabei. Wenn ich jetzt zu Beispiel "Hello World" speichern möchte macht er das auch aber er schreibt dahinter noch seltsamme Zeichen ist das normal? Wenn ja wie bekomme ich die weg? Wollte nämlich nur den Text speichern ohne die Zeichen. Kann das an dem Dateiformat liegen? Denn wenn ich eine Textdatei schreibe sind nur diese komischen Zeichen da. Aber bei .htm kommt der Text und die Zeichen. Gruß Alex
>Wenn ich jetzt zu Beispiel "Hello World" speichern möchte >macht er das auch aber er schreibt dahinter noch seltsamme Zeichen ist >das normal? Ja, wenn du diese Zeichen selber schreibst: written=Fwrite(&by,1); // Achte auf das & vor by ! Lösch die Zeile.
Hallo zusammen, genau wie Alex versuche ich, mit den Routinen von Holger Klabunde eine SD Karte anzusprechen. Ich benutze ebenfalls einen ATmega32 mit 16Mhz Quarz. Pinbelegung sieht bei mir so aus: DAT0/DO --> PB0 CLK --> PB2 CMD/DI --> PB1 DAT3/CS --> PB4 Leider bekomme ich als Rückgabewert der Funktion
1 | GetDriveInformation() |
die Fehlermeldung. Woran könnte das liegen? Die kompletten Dateien sind im Anhang, vielleicht kann sich jemand von euch die Mühe machen und mal drüber gucken. Wäre super! Danke im Voraus, Pierre
>Pinbelegung sieht bei mir so aus: >DAT0/DO --> PB0 >CLK --> PB2 >CMD/DI --> PB1 >DAT3/CS --> PB4 Das liegt daran das die Routinen kein SoftSPI benutzen und die SPI Schnittstelle beim ATMega32 auf PB4-PB7 liegt.
N'abend zusammen, also, ich habe meine Beschaltung jetzt geändert: DAT0/DO --> PB6 CLK --> PB7 CMD/DI --> PB5 DAT3/CS --> PB4 Soweit so gut, allerdings bekomme ich noch immer als Rückgabewert der Funktion GetDriveInformation() eine Fehlermeldung. Bei der genaueren Fehleranalyse verlässt er die Funktion an der Stelle mit dem Kommentar "CF gives no answer". Um dem Fehler weiter auf den Grund zu gehen, habe ich in der Funktion IdentifyMedia() bzw. CFIdentify() direkt zu Beginn eine Ausgabe auf meinem Display eingefügt. Diese wird allerdings nicht angezeigt. :-( Daraus schließe ich, dass die Funktion, warum auch immer nicht aufgerufen wird?! Hat vielleicht jemand von euch einen Tipp für mich? Ich weiß nicht weiter. Danke & Grüße Pierre
>Um dem Fehler weiter auf den Grund zu gehen, habe ich in der Funktion >IdentifyMedia() bzw. CFIdentify() direkt zu Beginn eine Ausgabe auf >meinem Display eingefügt. Diese wird allerdings nicht angezeigt. :-( >Daraus schließe ich, dass die Funktion, warum auch immer nicht >aufgerufen wird?! CFIdentify() wird nur bei CompactFlash Karten aufgerufen. Das Gegenstück für MMC/SD heisst MMCIdentify().
Bei Funktioniert das Erstellen der text.htm auf der SD-Karte soweit, ich habe jedoch noch noch 2 Fragen: 1. Ich möchte nun in der nächsten Zeile ebenfalls "Hello World" schreiben, bis jetzt hab ich es aber noch nicht hinbekommen in die nächste Zeile zu springen 2. Wie kann ich eine bereits geöffnete Datei öffnen und beschreiben. Wenn ich die Text.htm bzw bei mir die text.txt nicht lösche und dann wieder mit dem Controller beschreibe, sehe ich anschließend nur Datenmüll.
Hat zu Jans frage niemand eine Antwort? Das würde mich nämlich im moment auch brennend interessieren.
>Hat zu Jans frage niemand eine Antwort? Leider hat Jan seinen Code nicht gepostet. Na gut ich versuchs, auch wenn da noch einiges unklar ist. >2. Wie kann ich eine bereits geöffnete Datei öffnen und beschreiben. Eine geöffnete Datei kann man nicht zweimal öffnen, bzw. sollte man das nicht tun. Das FAT System checkt das nicht ab. Dann kann es durchaus Datensalat geben. Das müsste quasi per Dateinamenvergleich geschehen. Und das ist nicht vorgesehen. >Wenn ich die Text.htm bzw bei mir die text.txt nicht lösche und dann >wieder mit dem Controller beschreibe, sehe ich anschließend nur >Datenmüll. Interessant wäre wie der Datenmüll aussieht. Wenn man die Datei nicht löscht hat man zwei Möglichkeiten: 1) Mit 'a' öffnen. Daten an die Datei dranhängen. Das geht problemlos. 2) Mit 'w' öffnen. Daten vom Anfang der Datei schreiben. Alte Daten werden dabei überschrieben. Schreibt man nicht bis an das Ende der Datei bleiben alte Daten weiterhin erhalten. Die Datei wird also nicht automatisch kleiner gemacht! Wer das möchte, löscht die Datei und erzeugt einfach eine neue mit demselben Namen, und alles ist in Butter.
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.