Forum: Mikrocontroller und Digitale Elektronik SD-Karte: CMD0 versagt nach einigen Versuchen


von papa_of_t (Gast)


Lesenswert?

Liebe Mit-Bastler,

ich habe eine SD-Karte per SPI an einen AVR Mega8 angeschlossen,
funktioniert auch, bis auf diesen Effekt: In meiner Lösung ist es ab
und zu notwendig, die SD-Karte neu zu initialisieren. Dazu verwende ich
immer die gleiche Routine (Dummy Clocks senden, Chip select auf Low,
CMD0 senden und Ergebnis abfragen). Das funktioniert nach Übertragung
des Programms auf den Chip so für ca. 5 Sekunden, und zwar egal wie oft
ich CMD0 sende - danach aber nicht mehr, d.h. nach 5-10 Sekunden erhalte
ich von der Karte keine Antwort mehr, nur noch "FF". Es müßte doch
egal sein, wie lange die Karte schon in Betrieb ist und was vorher
passiert ist, wenn ich CMD0 sende? Spannungspegel sind alle in
Ordnung.. grübel

Auch sonst ist der Protokollaufwand nicht unerheblich, und es stört
mich in meinem Programm etwas, daß ich nach 512 Byte immer warten und
zwischenpuffern muß.. Gibt es denn eine gute Alternative zur SD-Karte
(so 32MB reichen mir, per SPI)?

von papa_of_t (Gast)


Angehängte Dateien:

Lesenswert?

lach habe es selbst herausgefunden - es gab einige schlechte
Verbindungen in meiner Freiluft-Verdrahtung. Einmal ordentlich neu
aufgebaut - und schon geht es .. Was lehrt mich dies? lieber gleich
ordentlich bauen.. da bekomme ich jetzt mit 25 cm Leitung zwischen
Controller und Karte einen SPI-Takt von über 7 MHz problemlos
übertragen.. (ATMEGA8 mit 14,7 MHz Quarz, Spi-Clock = AVR-Takt/2).

Jetzt gefällt mir die SD-Karte auch wieder viel besser :-)

von karlheinz (Gast)


Lesenswert?

hallo, kannst du deine sourcecode mal reinstellen.

ich habe schon einen aus dem forum hier, der läuft aber nicht.
kriege meien karte nicht in gang.

mfg karlheinz

von papa_of_t (Gast)


Lesenswert?

ICh hab nichts Neues anzubieten, was nicht hier im Forum schon stehen
würde bzw. auch unter

http://www.cc5x.de/MMC

oder

http://www.ulrichradig.de

(auf beiden Seiten gibt es funktionierende Quelltextbeispiele)

von karlheinz (Gast)


Lesenswert?

ich habe auch einen avr-8 16.
könntest du deinen code mal reinstellen.
ich tue mich beim umsetzen des anderen code für den avr8 sehr schwer.

wäre sehr hilfreich von dir.
ich hatte das projekt eine zeit auf halde gelegt, weil ich schon frust
hatte, es läuft einfach nicht.
dein artikel hat mir wieder hoffnung gemacht für meinem avr8.
werde mir den anderen quarz noch kaufen müssen.


mfg karlheinz

von SuperUser (Gast)


Lesenswert?

Hallo papa_of_t,

schön das es wieder läuft. Nur als Hinweis:

Die offiziell einzig garantierte Methode um einen reset bei der SD/MMC
Karte durchzuführen ist schalten der Power supply. D.h. wenn sich die
Karte mal aufhängt oder sonst nicht korrekt arbeitet hast du sonst
keine andere Wahl.

=> Jeder SD-Karten Sockel braucht eine schaltbare Power Supply
(zumindest für Serien-Geräte bzw. mehr ambitionierte Bastlerprojekte)

von papa_of_t (Gast)


Angehängte Dateien:

Lesenswert?

der Quarz ist egal, SPI ist nicht zeitkritisch, es ginge sogar ohne
Quarz.
Mein Programm ist in Basic (BasCom) geschrieben - der
Initialisierungsteil siehe Anlage. Ich hoffe, es hilft Dir beim
Portieren.

von karlheinz (Gast)


Lesenswert?

hallo, ich habe dein ersten teil in fastavrbasic umgesetzt.
wie kann ich jetzt die 512byte schreiben und lesen in basic.

danke

mfg karlheinz

von papa_of_t (Gast)


Lesenswert?

dafür gibt es spezielle Kommandos (CMD17, CMD24 zum Beispiel) - welche
Du verwenden willst, hängt von Deinem Zweck ab. Schau in die o.g.
Codebeispiele an (da wird demonstriert, wie man Daten liest und
schreibt), bau sie nach und vor allem: Lies das Datenblatt für
SD-Karten, da ist sehr genau beschrieben, was man tun muß.

Funktioniert denn die Initialisierung mit FastAVRBasic?

Viel Spaß beim Basteln!

von Dirk (Gast)


Lesenswert?

abo

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.