Hallo Ich habe eine 1GB SD Karte erfolgreich mit dem Beispiel Code von Radig an meinem Atmega32 initialisiert. Nun möchte ich auf der Karte ein Byte schreben. Wie müßte ich da vor gehen? Mit mmc_write_byte (U08 Byte) schreibe ich z.B. eine 12 rein. Und mit U08 mmc_read_byte (void) möchte ich das Byte wieder auslesen und auf dem Uart ausgeben. Aber ich kann nix lesen? Was mache ich falsch? Vielen Dank für Hilfe! MFG Frank
Du kannst keine einzelnen Bytes schreiben, sondern nur ganze Sektoren.
Danke für die schnelle Antwort. Mit den Funktionen U08 mmc_write_sector (U32 addr,U08 *Buffer) und U08 mmc_read_sector (U32 addr,U08 *Buffer) habe ich es auch schon probiert. Wie müßte es den aussehen, wenn ich ein Sector beschreiben und auslesen will? Ich möchte eigentlich nur Senoer Daten auf der SD Karte ablegen. Frank
Mit den von dir genannten Funktionen kannst du jeweils einen Sektor beschreiben und lesen. Buffer ist dabei jeweils 512Byte groß. Du sammelst also solange Daten bis du 512Bytes erreicht hast, dann schreibst du diese auf die Karte. Das ist schon alles.
Es müßte doch so U08 mmc_write_sector (0,512)zum schreiben gehen und zum auslesen U08 mmc_read_sector (0) gehen. Die letzte Funktion gibt doch ein Buffer zurück, so das ich den Buffer auf der Seriellen ausgeben kann??? Frank
Ja, so in etwa. Den Buffer musst du aber erzeugen und der Funktion übergeben, die füllt ihn dann mit den entsprechenden Daten.
Tschuldigung wenn ich da mal so einfach reinfrage, aber hat den Code schon jemand auf dem Mega8 ausprobiert?
Noch ne Frage! Muss ich ein Textfile auf der SD mit dem PC erzeugen in dem dann der Sector reingeschrieben wird? Weil so wie ich es beschrieben habe schreibt er nichts auf die SD Karte. Weder beim auslesen mit dem Atmega noch unter Windows kann ich den Sector wieder auslesen b.z.w. sehen.
Hallo Hat nicht einer nen Beispiel wie ich ein Sector auf die SD schreibe und wieder auslese mit dem Code von Radig? Danke
So... jetzt bin ich am Ende mit meinem Latein... irgendwas ist heute los baer die SPI will und will nichts ausspucken... verwenden tu ich auch den Code vom Ulrich... den ich übrigens für sehr übersichtlich und schön gecodet halte ^^ ich hab das ganze auf einen Mega8 gepackt... Die einzige kleine Änderung die ich vorgenommen hab war in der MMC.h
1 | #if defined (__AVR_ATmega8__)
|
2 | #define SPI_DI 4 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist
|
3 | #define SPI_DO 3 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist
|
4 | #define SPI_Clock 5 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
5 | #define MMC_Chip_Select 1 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
|
6 | #define SPI_SS 2 //Nicht Benutz muß aber definiert werden
|
7 | #endif
|
Derweilen versuche ich noch die MMC.c in das bestehende Projekt einzuweben... Ich hab mit dem LA und dem Oszi auf SCK und MOSI gemessen, allerdings ohne Erfolg...
@Benedikt K: Sinnenfrei Antworten wie "Ja, hab ich" helfen in diesem Zusammenahng meist nicht sonderlich weiter. Die Frage nach demCodebeispiel möchte ich hier mal wieder aufgreifen, da ich mich selbst gerade mit dem Code nach Radig beschäfftige. Bei mir funktioniert der Code auch bis zu diesem Punkt: Karte gefunden!! 0 5d 1 32 13 59 80 e3 76 d9 cf ff 16 40 0 4f Directory Directory Ende FERTIG!! Soweit scheints zu gehen. Nur das schreiben von Daten hab ich auch noch nicht hinbekommen. Muss man nun ein TXT File erstellen, oder wie funktioniert das?
Na hier muß man keinen Textfile erstellen um was zu lesen oder zu schreiben. Soll das denn später in einen Textfile?? Wenn ja dann muß man auch noch ein FAT16 System installieren. Nur mit dem Schreiben eines Sektors passiert in der Richtung nichts. Im Gegenteil. Oben erwähnt ihr das schreiben in Sektor 0. Damit ist dann der MBR oder VBR hin und unter Windows kann man die Karte nur noch mit WinHEX o.ä. betrachten. Frage ist also - was willst du wirklich machen?
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.