SD-Karte per Software resetten?!

Gast #911884
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!
Gast #911893
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.
Gast #911901
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.
Gast #912009
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

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