www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD-Karte per Software resetten?!


Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe an meinem MC eine SD-Karte. Beim Start schicke ich
0=Go_Idle_State gefolgt von 1=Send_Op_Cond. Soweit klapp alles prima.

Jetzt kann es aber vorkommen, dass mein MC von der Watchdog einen Reset 
bekommt. Dann würde die Sequenz wieder losgehen, obwohl vorher die 
SD-Karte NICHT von der Spannung getrennt wurde.

Frage: Kann man eine SD-Karte beliegig oft mit oben angeführter Sequenz 
initialisieren oder muss jedesmal vorher ein Reset der SD-Karte 
erfolgen?
Und falls ein Reset erforderlich ist, wie (abgesehen von Strom-Weg, was 
ich nicht kann)?

Danke!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Frage: Kann man eine SD-Karte beliegig oft mit oben angeführter Sequenz
>initialisieren oder muss jedesmal vorher ein Reset der SD-Karte
>erfolgen?

Bei meinen Karten geht das. Wenn ich z.B. das Programm im uC update
schalte ich sie nicht aus.

Bissiger Watchdog und SD Karte ist aber keine gute
Kombination. Gerade beim schreiben.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger
Die SD-Karte wird nur gelesen. Ausserdem kommt die Watchdog alle 10ms 
und wird von einem Timer getaktet, der beim interrupt einiges an 
Daten/Zuständen kontrolliert. Die SD-Karte kann man ja unterbrechen, das 
macht keine Probleme.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die SD-Karte kann man ja unterbrechen, das
>macht keine Probleme.

Doch, tut es. Ich hab gerade mal meinen simplen MP3 Player
mit ständigen Hardwareresets unterbrochen. Nach ca. 30 Versuchen
meldete sich die Karte nicht mehr. Da hab ich wohl genau
den Zeitpunkt getroffen wo ein Sektor gelesen wurde.

Man muss immer einen kompletten Sektor und die 2 Byte
Checksumme abholen. Solange man das nicht tut reagiert
die Karte nicht auf Kommandos. Nach einem erneuten
Reset lief sie dann wieder. Ohne Power On/Off. CMD0
wird bei mir sehr oft gesendet. Das holte quasi den Rest
des Sektors und die Checksumme ab. Scheinbar sende ich CMD0
aber noch nicht oft genug für den Fall das ein WDT das
lesen eines Sektors mitten drin unterbricht.

Was mir auch noch zu denken gibt ist, das CMD0 in dieser
Zeit nicht als Kommando erkannt wird, in den Daten aber
etwas wie eine korrekte Response stehen könnte. Da hilft
wohl nur erst mal blind einige 0xFF zu senden um eventuelle
Sektordaten und die Checksumme aus der Karte zu takten.

Oder den WDT während eines SD Zugriffs immer wieder zu resetten.

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.