SD-Karte: CMD0 versagt nach einigen Versuchen

Gast #280336
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)?
Gast #280337
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 :-)
Angehängte Dateien:
Gast #280340
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
Gast #280341
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)
Gast #280344
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!

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.