www.mikrocontroller.net

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


Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: papa_of_t (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SuperUser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: papa_of_t (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: karlheinz (Gast)
Datum:

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

danke

mfg karlheinz

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.