SD Card write Funktion hat ein Bug

Gast #278798
Lesenswert?

Hallo,

ich habe einen großen Bug in meinem Programm, kann ihn aber verflixt
noch mal nicht finden. Könnt ihr mal schauen was ich falsch mache.
Ich möchte mit der Funktion eine SD Card bzw. MMC beschreiben. Nun
kommt das verrückte. Wenn ich diese Funktion einmal aufrufe
funktioniert es, die Daten sind dann auf der Karte. Rufe ich diese
Funktion ein zweites mal auf so kommt als Response 0x03, also illegales
Kommando angeblich. Dann hilft nur Karte von der Versorgungsspannung
trennen, die Karte wieder reseten und initialisieren. Selbst wenn ich
die Karte drin lasse, sie dann Resete und Initialisiere bleibt die
Karte bei der Initialisierung hängen. Ich habe es mit einer Standard
Sandisk SD Card 256MB einer Ultra Sandisk SD Card 1024MB und einer
Noname MMC 32MB versucht. Immer das gleiche. Ich programmiere mit einem
ATmega128l. Die Karte steuere ich mit dem SPI Bus an. Ich verstehe es
einfach nicht. Meine Read Funktion läuft einwandfrei. Bitte helft mir,
ich bin fast am verzweifeln. VIELEN DANK.
Angehängte Dateien:
Gast #278799
Lesenswert?

hi Leute,

ich habe weiter an dem Problem gearbeitet. Ich habe irgendwo gelesen
dass man das CMD 13 Kommando schicken soll/muss um zu schauen ob
richtig geschrieben worden ist.  ABER hier kommt wieder ein illegales
Kommando als Response 0x04( R1 Response).
TOTAL KOMISCH, aber jetzt funktioniert es. Ich kann mehrere Block
hintereinander schreiben. Kann mir jemand sagen wieso es jetzt
funktioniert. Weil ich traue der Sache noch nicht. Wenn ich z.B andere
Karten nehme.
Gast #1321397
Lesenswert?

das nicht aber ich glaube auch nicht das es mit der spannung was haben 
kann.
denke hier eher das es bei den cmd ´s liegt ... hier wird irgendwo ein 
zwischenschritt reingehörn und dann wird das problem warscheinlich 
gelöst sein ... nur welcher ?! :-)
Moderator Persönliche Seite #1321527
Lesenswert?

Thread ist uralt, dennoch "für die Akten" ein paar Binsenweisheiten:
* wie erwähnt ordentliche Spannungsversorgung, im Zweifel 100nF+10uF an 
VCC/GND nahe am Kartensockel
* Pullup an /CS und DO
* zumindest für erste Tests Controller und Karte mit 3,3V betreiben, 
schließt Problem durch Pegelwandler erstmal aus
* ChaN's Beispiele herunterladen ( 
http://elm-chan.org/fsw/ff/ffsample.zip ) und sich vom darin enthaltenen 
avr/mmc.c inspirieren lassen hilft oft (zumindest mir immer, wenn es 
darum geht, MMC/SD-Card auf einem neuen "Spielzeug" zum Laufen zu 
bringen).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren