Forum: Mikrocontroller und Digitale Elektronik SD Karte mit Code von Radig


von Frank (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

Du kannst keine einzelnen Bytes schreiben, sondern nur ganze Sektoren.

von Frank (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

Ja, so in etwa. Den Buffer musst du aber erzeugen und der Funktion 
übergeben, die füllt ihn dann mit den entsprechenden Daten.

von JÜrgen G. (Firma: 4CKnowLedge) (psicom) Benutzerseite


Lesenswert?

Tschuldigung wenn ich da mal so einfach reinfrage, aber hat den Code 
schon jemand auf dem Mega8 ausprobiert?

von Benedikt K. (benedikt)


Lesenswert?

Ja, hab ich.

von JÜrgen G. (Firma: 4CKnowLedge) (psicom) Benutzerseite


Lesenswert?

Ah, perfekt ^^

von Frank (Gast)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

Hallo
Hat nicht einer nen Beispiel wie ich ein Sector auf die SD schreibe und 
wieder auslese mit dem Code von Radig?
Danke

von JÜrgen G. (Firma: 4CKnowLedge) (psicom) Benutzerseite


Lesenswert?

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...

von tom (Gast)


Lesenswert?

@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?

von Wolfgang U. (wolle68)


Lesenswert?

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